json-native: enable float roundtrip in parser (NUMBER => float by '.'/exp); expand roundtrip smoke with more numeric cases
This commit is contained in:
25
docs/reference/plugin-system/externcall.md
Normal file
25
docs/reference/plugin-system/externcall.md
Normal file
@ -0,0 +1,25 @@
|
||||
# ExternCall Policy (Phase 15)
|
||||
|
||||
## Allowed Interfaces (minimal set)
|
||||
- `env.console.{log,warn,error,readLine}`
|
||||
- `env.debug.trace`
|
||||
- `env.system.{exit,now}` (if present)
|
||||
|
||||
All other host interactions should go through BoxCall (NyRT or plugins).
|
||||
|
||||
## Argument‑type‑based selection
|
||||
- For `env.console.{log,warn,error}` and `env.debug.trace`:
|
||||
- If the single argument is `i8*` (C string), call the C‑string variant:
|
||||
- `nyash.console.log(i8*)`, `nyash.console.warn(i8*)`, `nyash.console.error(i8*)`
|
||||
- `nyash.debug.trace(i8*)`
|
||||
- Otherwise convert to `i64` and call the handle variant:
|
||||
- `nyash.console.log_handle(i64)`, `nyash.console.warn_handle(i64)`, `nyash.console.error_handle(i64)`
|
||||
- `nyash.debug.trace_handle(i64)`
|
||||
|
||||
## Rationale
|
||||
- Keeps the AOT string path fast and avoids accidental `inttoptr` of handles.
|
||||
- Avoids adding broad implicit conversions in ExternCall; selection is local and explicit.
|
||||
|
||||
## Non‑LLVM Backends
|
||||
- VM, Cranelift JIT/AOT, and the interpreter may not implement this policy yet (not MIR14‑ready). LLVM is authoritative; other backends will align after stabilization.
|
||||
|
||||
Reference in New Issue
Block a user