Files
hakorune/docs/development/current/main/20-Decisions.md

25 lines
2.3 KiB
Markdown
Raw Normal View History

# Self Current Task — Decisions (main)
20251213
- JoinIR lowering の name-based 変数解決は、dev-only`normalized_dev`)で BindingId-based に段階移行するdual-path を維持)。
- promoted carriersDigitPos/Trim などの synthetic nameは、`BindingId(original) → BindingId(promoted) → ValueId(join)` の鎖で接続し、by-name ルール分岐は導入しない。
- debug/観測は既存のフラグ(例: `NYASH_JOINIR_DEBUG`)に集約し、新しい環境変数のスパローは避ける。
20251219
- return の表現力拡張は「パターン総当たり」ではなく、pure expression を扱う `NormalizedExprLowererBox`AST walkerへ収束させるPhase 140
- Call/MethodCall は effects + typing の論点が増えるため、pure とは分離して Phase 141+ で段階投入する。
- out-of-scope は `Ok(None)` で既存経路へフォールバックし、既定挙動不変を維持するstrict は “close-but-unsupported” のみ fail-fast
20251220
- Phase 256 の詰まりJump/continuation/params/jump_argsを「暗黙 ABI の分裂」と捉え、契約を `JoinIR ABI/Contract` として明文化していくSSOT を 1 箇所へ集約)。
- continuation の識別は ID を SSOTString は debug/serialize 用)とし、`join_func_N` の legacy は alias で隔離する。
- `jump_args` は意味論の SSOT なので、最終的には MIR terminator operand に統合して DCE/CFG から自然に追える形へ収束させるPhase 256 を緑に戻した後に段階導入)。
- 上記の収束先north starを “Join-Explicit CFG Construction” と命名し、段階移行案1→案2→必要なら案3で進める。
20250908
- ループ制御は既存命令Branch/Jump/Phiで表現し、新命令は導入しない。
- Builder に loop_ctx{head, exit}を導入し、continue/break を分岐で降ろす。
- Verifier の支配関係/SSA を崩さないよう、単一 exit と postterminated 後の emit 禁止を徹底。
- VInvokevector 経路)の戻り値は、短期は「既知メソッドの整数返り」を特例扱いで保持し、
中期は nyash.toml の戻り型ヒント or NyRT シムの期待フラグで正道化。