docs(joinir): clarify ValueId worlds and routing vs fallback
架構 overview の矛盾解消: - ValueId の 3 つの世界を明文化(JoinIR/MIR/PHI dst) - routing/fallback 語彙を不変条件に統合(Section 0.1 と整合) - 章番号重複を解消(見出し参照へ統一) Changes: - Section 1: Added ValueId worlds clarification, routing/fallback definitions - Removed duplicate section numbers (5, 6, 3 duplicates → renamed/unnumbered) - Total: +25 lines, -7 lines (net +18) No specification changes, readability improvements only 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -67,6 +67,24 @@ NYASH_JOINIR_DEBUG=1 cargo test --release --lib
|
||||
|
||||
JoinIR ラインで守るべきルールを先に書いておくよ:
|
||||
|
||||
**ValueId の 3 つの世界** (明文化):
|
||||
1. **JoinIR 内部**: JoinParam (100-999) / JoinLocal (1000+) のみ。alloc_param()/alloc_local() が SSOT。
|
||||
2. **MIR builder**: builder.variable_map で管理。JoinInst の operand には持ち込まない。
|
||||
3. **PHI dst (メタ)**: LoopHeader PHI の dst は MIR builder が割り当て。JoinIR の reserve_phi() は衝突防止マークのみ。
|
||||
|
||||
**語彙統一**:
|
||||
- `alloc_value()` は `alloc_local()` の alias(実装上、概念上は Local を増やす)
|
||||
- `LOCAL_MAX` は debug/verifier 上限(概念上無限ではない、図と実装の関係を明記)
|
||||
|
||||
**Routing vs Fallback の語彙 SSOT** (Section 0.1 と整合):
|
||||
- **routing**: JoinIR Core 内での正規な経路選択(Pattern1/2/3/4 ルータ、if-sum mode 選択等)
|
||||
- **soft fallback**: 任意箱失敗時の同等意味論退避(例: pre-validation 失敗 → 別 JoinIR 経路)
|
||||
- **prohibited fallback**: 非 JoinIR への退避(LoopBuilder へ落ちる等)、サイレント退避、契約違反握りつぶし
|
||||
|
||||
不変条件 6 (Fail-Fast) はこの定義に基づく: prohibited fallback は絶対禁止、soft fallback は理由ログ必須。
|
||||
|
||||
---
|
||||
|
||||
1. **JoinIR 内部は JoinIR ValueId だけ**
|
||||
- JoinIR lowering が発行する `JoinInst` の `ValueId` は JoinValueSpace の領域(Param/Local)のみを使う。
|
||||
- `alloc_param()`(Param 100–999)/ `alloc_local()`(Local 1000+)が SSOT。
|
||||
@ -925,7 +943,7 @@ Phase 210–221 で「数値ループ+if-sum」を実戦投入し、JoinIR イ
|
||||
|
||||
---
|
||||
|
||||
## 5. selfhost / .hako JoinIR Frontend との関係
|
||||
## selfhost / .hako JoinIR Frontend との関係
|
||||
|
||||
JoinIR は Rust 側だけでなく、将来的に .hako selfhost コンパイラ側でも生成・解析される予定だよ:
|
||||
|
||||
@ -950,17 +968,17 @@ JoinIR は Rust 側だけでなく、将来的に .hako selfhost コンパイラ
|
||||
- 189–193: Multi-function merge / Select bridge / ExitLine 箱化
|
||||
- 171–172 / 33‑10/13: ConditionEnv, ConditionBinding, JoinFragmentMeta, ExitLineRefactor 等
|
||||
- `docs/development/current/main/loop_pattern_space.md`
|
||||
- JoinIR ループパターン空間の整理メモ。
|
||||
どの軸(継続条件 / break / continue / PHI / 条件変数スコープ / 更新パターン)でパターンを分けるか、
|
||||
- JoinIR ループパターン空間の整理メモ。
|
||||
どの軸(継続条件 / break / continue / PHI / 条件変数スコープ / 更新パターン)でパターンを分けるか、
|
||||
そして P1–P4 / Trim(P5) の位置づけと、今後追加候補のパターン一覧がまとまっている。
|
||||
|
||||
---
|
||||
|
||||
## 6. Roadmap(JoinIR の今後のゴール)
|
||||
## Roadmap 詳細版(JoinIR の今後のゴール)
|
||||
|
||||
ここから先の JoinIR の「目指す形」を、箱レベルでざっくり書いておくよ。フェーズ詳細は各 phase ドキュメントに分散させて、このセクションは常に最新の方向性だけを保つ。
|
||||
|
||||
### 6.1 直近(Phase 176-177 まわり)
|
||||
### 直近(Phase 176-177 まわり)
|
||||
|
||||
- **P5(Trim/JsonParser 系)ループの複数キャリア対応** ✅ Phase 176 完了 (2025-12-08)
|
||||
- 完了内容:
|
||||
@ -1141,9 +1159,9 @@ JoinIR は Rust 側だけでなく、将来的に .hako selfhost コンパイラ
|
||||
|
||||
---
|
||||
|
||||
## 3. JoinIR → JoinIR 正規化レイヤ(構想 / Phase 26-H ライン)
|
||||
## JoinIR 正規化レイヤ(構想 / Phase 26-H ライン)
|
||||
|
||||
### 3.1 Structured JoinIR と Normalized JoinIR(概念レベル)
|
||||
### Structured JoinIR と Normalized JoinIR(概念レベル)
|
||||
|
||||
JoinIR ラインは、今後は「同じ JoinIR をフェーズごとに正規化していく」二段構成で扱う想定だよ:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user