docs+runner+parser: SSOT+AST using finalized (legacy text inlining removed); provider verify reads nyash.toml; preflight warn hook; method-body guard removed; CURRENT_TASK updated for next JSON work

This commit is contained in:
Selfhosting Dev
2025-09-26 00:27:02 +09:00
parent d9f26d4549
commit 85084664c2
77 changed files with 1259 additions and 1026 deletions

View File

@ -0,0 +1,23 @@
# PHI and SSA in Nyash
Overview
- Nyash lowers high-level control flow (If/Loop/Match) to MIR and backends that rely on SSA form.
- We prioritize IR hygiene and observability while keeping runtime cost at zero.
Design points
- PHI hygiene: no empty PHIs; PHIs at block head only.
- JoinResult hint: when both branches assign the same variable, we emit a MIR hint for diagnostics.
- Loop carriers: loops may expose a carrier observation (≤ N variables, where N is unconstrained by design; smokes emphasize common cases).
Normalization
- If: may optionally wrap into LoopForm under a conservative gate (dev only). Semantics remain unchanged.
- Match: scrutinee evaluated once, guard fused; normalized to nested Ifchain in macro/core pass.
Testing
- LLVM smokes: fixed small cases ensure no empty PHIs and head placement.
- MIR smokes: trace `scope|join|loop` to validate shaping without peeking into IR details.
Roadmap
- Remove text-level sanitization once finalizePHI is trustworthy across Loop/If/Match.
- Expand goldens to cover nested joins and multicarrier loops while keeping CI light.