Gate‑C(Core) OOB strict fail‑fast; String VM handler normalization; JSON lint Stage‑B root fixes via scanner field boxing and BinOp operand slotify; docs + smokes update

This commit is contained in:
nyash-codex
2025-11-01 18:45:26 +09:00
parent c331296552
commit 47bd2d2ee2
15 changed files with 280 additions and 107 deletions

View File

@ -56,6 +56,7 @@ Quick profile optin switches (smokes)
- `SMOKES_ENABLE_LOOP_COMPARE=1` — Direct↔Bridge parity for loops (sum/break/continue/nested/mixed)
- `SMOKES_ENABLE_LOOP_BRIDGE=1` — Bridge(JSON v0) loop canaries (quiet; last numeric extraction)
- `SMOKES_ENABLE_STAGEB_OOB=1` — StageB OOB observation (array/map)
- `SMOKES_ENABLE_OOB_STRICT=1` — GateC(Core) strict OOB failfast canary (`gate_c_oob_strict_fail_vm.sh`)
- `SMOKES_ENABLE_LLVM_SELF_PARAM=1` — LLVM instruction boxes selfparam builder tests (const/binop/compare/branch/jump/ret)
Deprecations
@ -77,6 +78,12 @@ Diagnostics (stable tags)
- `[core/mir_call] unsupported callee type: Closure`
- GateC Direct では、リーダー/検証レイヤの診断をそのまま用いる(例: `unsupported callee type (expected Extern): ModuleFunction`)。
Strict OOB policy (GateC)
- Enable `HAKO_OOB_STRICT=1` (alias: `NYASH_OOB_STRICT`) to tag Array OOB as stable strings
(`[oob/array/get]…`, `[oob/array/set]…`).
- With `HAKO_OOB_STRICT_FAIL=1` (alias: `NYASH_OOB_STRICT_FAIL`), GateC(Core) exits nonzero
if any OOB was observed during execution (no need to parse stdout in tests).
Exit code differences
- Core: 数値=rcOS仕様により 0255 に丸められる。例: 777 → rc=9、エラーは非0
- Direct: 数値出力のみrc=0、エラーは非0