2025-09-08 11:35:30 +09:00
|
|
|
|
# Self Current Task — Decisions (main)
|
|
|
|
|
|
|
2025-12-13 17:26:15 +09:00
|
|
|
|
2025‑12‑13
|
|
|
|
|
|
- JoinIR lowering の name-based 変数解決は、dev-only(`normalized_dev`)で BindingId-based に段階移行する(dual-path を維持)。
|
|
|
|
|
|
- promoted carriers(DigitPos/Trim などの synthetic name)は、`BindingId(original) → BindingId(promoted) → ValueId(join)` の鎖で接続し、by-name ルール分岐は導入しない。
|
|
|
|
|
|
- debug/観測は既存のフラグ(例: `NYASH_JOINIR_DEBUG`)に集約し、新しい環境変数のスパローは避ける。
|
|
|
|
|
|
|
2025-12-19 05:28:49 +09:00
|
|
|
|
2025‑12‑19
|
|
|
|
|
|
- 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)。
|
|
|
|
|
|
|
2025-12-20 13:04:24 +09:00
|
|
|
|
2025‑12‑20
|
|
|
|
|
|
- Phase 256 の詰まり(Jump/continuation/params/jump_args)を「暗黙 ABI の分裂」と捉え、契約を `JoinIR ABI/Contract` として明文化していく(SSOT を 1 箇所へ集約)。
|
|
|
|
|
|
- continuation の識別は ID を SSOT(String は 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)で進める。
|
2025-12-21 03:21:22 +09:00
|
|
|
|
- 正規化(normalized)を **Semantic/Plumbing** に分離し、`NormalizeBox`(意味SSOT)/ `AbiBox`(役割SSOT)/ `EdgeArgsPlumbingBox`(配線SSOT)の最小セットで “推測禁止 + Fail-Fast” を維持する。
|
|
|
|
|
|
- spans は並行 Vec を最終的に廃止し、`Vec<Spanned<_>>` へ収束(段階導入: 編集APIの一本化 → 内部表現切替)。
|
|
|
|
|
|
- edge-args の参照 API は `Jump` だけでなく `Branch` を含むため、単発 `edge_args()` ではなく `out_edges()`/`edge_args_to(target)` のような “複数 edge” 前提の参照点を SSOT にする。
|
2025-12-20 13:04:24 +09:00
|
|
|
|
|
2025-12-21 17:20:58 +09:00
|
|
|
|
2025‑12‑21
|
|
|
|
|
|
- MIR 側の block-parameterized CFG を短い通称として **EdgeCFG** と呼ぶ(docs では “Block-Parameterized CFG(EdgeCFG)”)。
|
|
|
|
|
|
- EdgeCFG の P2(`BasicBlock.jump_args` 削除)まで到達し、edge-args は `Jump/Branch` の terminator operand を SSOT に一本化する(Return は `return_env` のみ例外)。
|
|
|
|
|
|
- 「pattern番号で推測分岐」は長期的に消したい。Structured→CFG lowering の中心概念を **ExitKind + Frag(fragment)**へ移し、pattern は “Extractor/Plan の薄い層” に縮退させる(設計SSOT: `docs/development/current/main/design/edgecfg-fragments.md`)。
|
|
|
|
|
|
|
2025-09-08 11:35:30 +09:00
|
|
|
|
2025‑09‑08
|
|
|
|
|
|
- ループ制御は既存命令(Branch/Jump/Phi)で表現し、新命令は導入しない。
|
|
|
|
|
|
- Builder に loop_ctx({head, exit})を導入し、continue/break を分岐で降ろす。
|
|
|
|
|
|
- Verifier の支配関係/SSA を崩さないよう、単一 exit と post‑terminated 後の emit 禁止を徹底。
|
|
|
|
|
|
- VInvoke(vector 経路)の戻り値は、短期は「既知メソッドの整数返り」を特例扱いで保持し、
|
|
|
|
|
|
中期は nyash.toml の戻り型ヒント or NyRT シムの期待フラグで正道化。
|