chore: Phase 26-H セッション完了 - 全ドキュメント更新

Phase 26-H 完了内容:
 JoinIR 型定義実装(src/mir/join_ir.rs)
 MIR → JoinIR 自動変換実装(lower_min_loop_to_joinir)
 自動変換テスト実装(mir_joinir_min_auto_lowering)
 PHI/Loop箱 → JoinIR 移行対応表追加(loopform_ssot.md)

ドキュメント更新:
- Phase 27 JoinIR タスク計画追加
- Phase 26-H タスク完了記録
- 各種 README 更新(進捗反映)
- CURRENT_TASK.md 更新

コミット統計: $(git status --short | wc -l) files changed

次のステップ: Phase 27 一般化 MIR → JoinIR 変換
This commit is contained in:
nyash-codex
2025-11-23 05:53:27 +09:00
parent 9a5cec394c
commit 8750186e55
41 changed files with 157 additions and 220 deletions

View File

@ -404,7 +404,7 @@ Notes
- User MacrosMacroBox/Phase 2: `docs/guides/user-macros.md` - User MacrosMacroBox/Phase 2: `docs/guides/user-macros.md`
- Macro capabilities (io/net/env): `docs/reference/macro/capabilities.md` - Macro capabilities (io/net/env): `docs/reference/macro/capabilities.md`
- LoopForm ガイド: `docs/guides/loopform.md` - LoopForm ガイド: `docs/guides/loopform.md`
- Phase17LoopForm SelfHosting & Polish: `docs/development/roadmap/phases/phase-17-loopform-selfhost/` - Phase17LoopForm SelfHosting & Polish: `docs/private/roadmap2/phases/phase-17-loopform-selfhost/`
- MacroBoxユーザー拡張: `docs/guides/macro-box.md` - MacroBoxユーザー拡張: `docs/guides/macro-box.md`
- MacroBox in Nyash設計草案: `docs/guides/macro-box-nyash.md` - MacroBox in Nyash設計草案: `docs/guides/macro-box-nyash.md`
- MIR デバッグ総覧dump/hints/__mir__: `docs/guides/testing-guide.md``MIR デバッグの入口まとめ` セクション) - MIR デバッグ総覧dump/hints/__mir__: `docs/guides/testing-guide.md``MIR デバッグの入口まとめ` セクション)

View File

@ -88,9 +88,9 @@ ChatGPT: 実装・検証
``` ```
### 📚 **重要リソース** ### 📚 **重要リソース**
- **開発マスタープラン**: [00_MASTER_ROADMAP.md](docs/development/roadmap/phases/00_MASTER_ROADMAP.md) - **開発マスタープラン**: [00_MASTER_ROADMAP.md](docs/private/roadmap2/phases/00_MASTER_ROADMAP.md)
- **現在のタスク**: [CURRENT_TASK.md](CURRENT_TASK.md) - **現在のタスク**: [CURRENT_TASK.md](CURRENT_TASK.md)
- **Phase 15詳細**: [docs/development/roadmap/phases/phase-15/](docs/development/roadmap/phases/phase-15/) - **Phase 15詳細**: [docs/private/roadmap2/phases/phase-15/](docs/private/roadmap2/phases/phase-15/)
--- ---
@ -155,7 +155,7 @@ NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/tests/peek_e
- 📁 **LLVM**: [docs/development/current/llvm/](docs/development/current/llvm/) - 📁 **LLVM**: [docs/development/current/llvm/](docs/development/current/llvm/)
- 📁 **Self**: [docs/development/current/self_current_task/](docs/development/current/self_current_task/) - 📁 **Self**: [docs/development/current/self_current_task/](docs/development/current/self_current_task/)
- ドキュメントハブ: [README.md](README.md) - ドキュメントハブ: [README.md](README.md)
- 🚀 **開発マスタープラン**: [00_MASTER_ROADMAP.md](docs/development/roadmap/phases/00_MASTER_ROADMAP.md) - 🚀 **開発マスタープラン**: [00_MASTER_ROADMAP.md](docs/private/roadmap2/phases/00_MASTER_ROADMAP.md)
- 📊 **JIT統計JSONスキーマ(v1)**: [jit_stats_json_v1.md](docs/reference/jit/jit_stats_json_v1.md) - 📊 **JIT統計JSONスキーマ(v1)**: [jit_stats_json_v1.md](docs/reference/jit/jit_stats_json_v1.md)
## 🧱 先頭原則: 「箱理論Box-First」で足場を積む ## 🧱 先頭原則: 「箱理論Box-First」で足場を積む
@ -178,7 +178,7 @@ Nyashは「Everything is Box」。実装・最適化・検証のすべてを「
## 🤖 **Claude×Copilot×ChatGPT協調開発** ## 🤖 **Claude×Copilot×ChatGPT協調開発**
### 📋 **開発マスタープラン - 全フェーズの統合ロードマップ** ### 📋 **開発マスタープラン - 全フェーズの統合ロードマップ**
**すべてはここに書いてある!** → [00_MASTER_ROADMAP.md](docs/development/roadmap/phases/00_MASTER_ROADMAP.md) **すべてはここに書いてある!** → [00_MASTER_ROADMAP.md](docs/private/roadmap2/phases/00_MASTER_ROADMAP.md)
**現在のフェーズPhase 15 (Nyashセルフホスティング実行器統一化 - Rust VM + LLVM 2本柱体制)** **現在のフェーズPhase 15 (Nyashセルフホスティング実行器統一化 - Rust VM + LLVM 2本柱体制)**
@ -203,7 +203,7 @@ Nyashは「Everything is Box」。実装・最適化・検証のすべてを「
【削除完了】 レガシーインタープリター(~350行削除済み 【削除完了】 レガシーインタープリター(~350行削除済み
``` ```
📋 **詳細計画**: [Phase 15.5 README](docs/development/roadmap/phases/phase-15.5/README.md) | [CURRENT_TASK.md](CURRENT_TASK.md) 📋 **詳細計画**: [Phase 15.5 README](docs/private/roadmap2/phases/phase-15.5/README.md) | [CURRENT_TASK.md](CURRENT_TASK.md)
## 🏃 開発の基本方針: 80/20ルール - 完璧より進捗 ## 🏃 開発の基本方針: 80/20ルール - 完璧より進捗
@ -593,7 +593,7 @@ Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変
- `src/mir/builder/call_resolution.rs`: 型安全解決ユーティリティ - `src/mir/builder/call_resolution.rs`: 型安全解決ユーティリティ
- `src/mir/builder/builder_calls.rs`: resolve_call_target()実装 - `src/mir/builder/builder_calls.rs`: resolve_call_target()実装
- `docs/development/architecture/mir-callee-revolution.md`: 設計文書 - `docs/development/architecture/mir-callee-revolution.md`: 設計文書
- `docs/development/roadmap/phases/phase-15/mir-callee-implementation-roadmap.md`: 実装計画 - `docs/private/roadmap2/phases/phase-15/mir-callee-implementation-roadmap.md`: 実装計画
#### 📋 **次のステップPhase 2-3** #### 📋 **次のステップPhase 2-3**
- **Phase 2**: HIR導入コンパイル時名前解決 - **Phase 2**: HIR導入コンパイル時名前解決
@ -681,7 +681,7 @@ Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変
- 🎯 **All or Nothing**: Phase 10.7でPython transpilation、フォールバック無し設計 - 🎯 **All or Nothing**: Phase 10.7でPython transpilation、フォールバック無し設計
- 📚 **完全ドキュメント化**: README.md導線、実装戦略、技術仕様すべて完備 - 📚 **完全ドキュメント化**: README.md導線、実装戦略、技術仕様すべて完備
- 🗃️ **アーカイブ整理**: 古いphaseファイル群をarchiveに移動、導線クリーンアップ完了 - 🗃️ **アーカイブ整理**: 古いphaseファイル群をarchiveに移動、導線クリーンアップ完了
- 📋 詳細: [Property System仕様](docs/development/proposals/unified-members.md) | [Python統合計画](docs/development/roadmap/phases/phase-10.7/) - 📋 詳細: [Property System仕様](docs/development/proposals/unified-members.md) | [Python統合計画](docs/private/roadmap2/phases/phase-10.7/)
## 📝 Update (2025-09-24) ✅ 改行処理革命Phase 2-B完了実用レベル到達 ## 📝 Update (2025-09-24) ✅ 改行処理革命Phase 2-B完了実用レベル到達
- 🎯 **改行処理革命Phase 2-B完了** Box宣言系ファイルから14箇所のskip_newlines()完全削除 - 🎯 **改行処理革命Phase 2-B完了** Box宣言系ファイルから14箇所のskip_newlines()完全削除
@ -722,7 +722,7 @@ Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変
- 🤝 AI協働の知見を論文化 - 実装駆動型学習の重要性を実証 - 🤝 AI協働の知見を論文化 - 実装駆動型学習の重要性を実証
- 🎉 **面白事件ログ収集完了!** 41個の世界記録級事件を記録 → [CURRENT_TASK.md#面白事件ログ](CURRENT_TASK.md#🎉-面白事件ログ---ai協働開発45日間の奇跡41事例収集済み) - 🎉 **面白事件ログ収集完了!** 41個の世界記録級事件を記録 → [CURRENT_TASK.md#面白事件ログ](CURRENT_TASK.md#🎉-面白事件ログ---ai協働開発45日間の奇跡41事例収集済み)
- 🎯 **LoopForm戦略決定**: PHIは逆Lowering時に自動生成Codex推奨 - 🎯 **LoopForm戦略決定**: PHIは逆Lowering時に自動生成Codex推奨
- 📋 詳細: [Phase 15 README](docs/development/roadmap/phases/phase-15/README.md) - 📋 詳細: [Phase 15 README](docs/private/roadmap2/phases/phase-15/README.md)
### 🚀 新発見:プラグイン全方向ビルド戦略 ### 🚀 新発見:プラグイン全方向ビルド戦略
```bash ```bash
@ -915,9 +915,9 @@ box MyBox {
## 📚 ドキュメント構造 ## 📚 ドキュメント構造
### 🎯 最重要ドキュメント(開発者向け) ### 🎯 最重要ドキュメント(開発者向け)
- **[Phase 15 セルフホスティング計画](docs/development/roadmap/phases/phase-15/self-hosting-plan.txt)** - 80k→20k行革命 - **[Phase 15 セルフホスティング計画](docs/private/roadmap2/phases/phase-15/self-hosting-plan.txt)** - 80k→20k行革命
- **[Phase 15 ROADMAP](docs/development/roadmap/phases/phase-15/ROADMAP.md)** - 現在の進捗チェックリスト - **[Phase 15 ROADMAP](docs/private/roadmap2/phases/phase-15/ROADMAP.md)** - 現在の進捗チェックリスト
- **[Phase 15 INDEX](docs/development/roadmap/phases/phase-15/INDEX.md)** - 入口の統合 - **[Phase 15 INDEX](docs/private/roadmap2/phases/phase-15/INDEX.md)** - 入口の統合
- **[CURRENT_TASK.md](CURRENT_TASK.md)** - 現在進行状況詳細 - **[CURRENT_TASK.md](CURRENT_TASK.md)** - 現在進行状況詳細
- **[native-plan/README.md](docs/development/roadmap/native-plan/README.md)** - ネイティブビルド計画 - **[native-plan/README.md](docs/development/roadmap/native-plan/README.md)** - ネイティブビルド計画
@ -976,14 +976,14 @@ Read docs/reference/ # まずドキュメントAPI/言語仕様の入口)
- **[構文早見表](docs/quick-reference/syntax-cheatsheet.md)** - 基本構文・よくある間違い - **[構文早見表](docs/quick-reference/syntax-cheatsheet.md)** - 基本構文・よくある間違い
### 📋 **Phase 15.5重要資料** ### 📋 **Phase 15.5重要資料**
- **[Core Box統一計画](docs/development/roadmap/phases/phase-15.5/README.md)** - builtin vs plugin問題 - **[Core Box統一計画](docs/private/roadmap2/phases/phase-15.5/README.md)** - builtin vs plugin問題
- **[Box Factory設計](docs/reference/architecture/box-factory-design.md)** - 優先順位問題・解決策 - **[Box Factory設計](docs/reference/architecture/box-factory-design.md)** - 優先順位問題・解決策
- **[Callee実装ロードマップ](docs/development/roadmap/phases/phase-15/mir-callee-implementation-roadmap.md)** - **[Callee実装ロードマップ](docs/private/roadmap2/phases/phase-15/mir-callee-implementation-roadmap.md)**
### 📖 **完全リファレンス** ### 📖 **完全リファレンス**
- **[言語仕様](docs/reference/language/LANGUAGE_REFERENCE_2025.md)** - 全構文・セマンティクス - **[言語仕様](docs/reference/language/LANGUAGE_REFERENCE_2025.md)** - 全構文・セマンティクス
- **[プラグインシステム](docs/reference/plugin-system/)** - プラグイン開発ガイド - **[プラグインシステム](docs/reference/plugin-system/)** - プラグイン開発ガイド
- **[Phase 15 INDEX](docs/development/roadmap/phases/phase-15/INDEX.md)** - 現在進捗 - **[Phase 15 INDEX](docs/private/roadmap2/phases/phase-15/INDEX.md)** - 現在進捗
## 🔧 開発サポート ## 🔧 開発サポート
@ -1181,4 +1181,4 @@ Notes:
- ここから先の導線は README.md に集約 - ここから先の導線は README.md に集約
- 詳細情報は各docsファイルへのリンクから辿る - 詳細情報は各docsファイルへのリンクから辿る
- このファイルは500行以内が目安あくまで目安であり、必要に応じて増減可 - このファイルは500行以内が目安あくまで目安であり、必要に応じて増減可
- Phase 15セルフホスティング実装中詳細は[Phase 15](docs/development/roadmap/phases/phase-15/)へ - Phase 15セルフホスティング実装中詳細は[Phase 15](docs/private/roadmap2/phases/phase-15/)へ

View File

@ -208,7 +208,7 @@
- 「全 pred で定義されているか」「不正な incoming が無いか」をチェックし、構造バグはここで止める。 - 「全 pred で定義されているか」「不正な incoming が無いか」をチェックし、構造バグはここで止める。
- Docs 整備: - Docs 整備:
- `docs/development/architecture/loops/loopform_ssot.md` に 4箱構成と環境変数ガード方針を追記。 - `docs/development/architecture/loops/loopform_ssot.md` に 4箱構成と環境変数ガード方針を追記。
- `docs/development/roadmap/phases/phase-26-F/README.md` を新設し、26-F のスコープやらないこと次フェーズMIR スキャン本体)への橋渡しを書き切り。 - `docs/private/roadmap2/phases/phase-26-F/README.md` を新設し、26-F のスコープやらないこと次フェーズMIR スキャン本体)への橋渡しを書き切り。
**テスト状況(ガード OFF 時点)** **テスト状況(ガード OFF 時点)**
- Phase 26-F-3 → 26-F の流れで、一時的に退行したが、 - Phase 26-F-3 → 26-F の流れで、一時的に退行したが、
@ -228,7 +228,7 @@
- 26-F で作った差し替え口に、本物の use/def スキャン実装を載せるフェーズ。 - 26-F で作った差し替え口に、本物の use/def スキャン実装を載せるフェーズ。
- `NYASH_EXIT_LIVE_ENABLE=1` で MIR スキャン版を有効にし、FuncScanner カナリアskip_ws / parse_params_trimを緑にするのが目標。 - `NYASH_EXIT_LIVE_ENABLE=1` で MIR スキャン版を有効にし、FuncScanner カナリアskip_ws / parse_params_trimを緑にするのが目標。
- 新設 docs: `docs/development/roadmap/phases/phase-26-G/README.md` に手順と受け入れ条件を記載済み。 - 新設 docs: `docs/private/roadmap2/phases/phase-26-G/README.md` に手順と受け入れ条件を記載済み。
### 1-03. Phase 25.3 — FuncScanner / StageB defs 安定化(完了) ### 1-03. Phase 25.3 — FuncScanner / StageB defs 安定化(完了)
@ -377,7 +377,7 @@
- `emit_mir_json`: `MirBuilderBox.emit_from_program_json_v0` をそのまま呼ぶdelegate 未設定なら null - `emit_mir_json`: `MirBuilderBox.emit_from_program_json_v0` をそのまま呼ぶdelegate 未設定なら null
- `run_program_json`: backend==llvm の場合は `env.codegen.emit_object` まで通す。vm/pyvm は当面 MIR(JSON) を stdout に出すのみ(実行は Stage0 橋渡し未配線)。 - `run_program_json`: backend==llvm の場合は `env.codegen.emit_object` まで通す。vm/pyvm は当面 MIR(JSON) を stdout に出すのみ(実行は Stage0 橋渡し未配線)。
- CLI: `emit program-json|mir-json` / `run --backend ... <src>` を受理。`NYASH_SCRIPT_ARGS_JSON` を JSON で best-effort 伝播。 - CLI: `emit program-json|mir-json` / `run --backend ... <src>` を受理。`NYASH_SCRIPT_ARGS_JSON` を JSON で best-effort 伝播。
- Docs: `docs/development/roadmap/phases/phase-25.1/stage1-usingresolver-loopform.md` に stub 状態を追記run は暫定挙動)。 - Docs: `docs/private/roadmap2/phases/phase-25.1/stage1-usingresolver-loopform.md` に stub 状態を追記run は暫定挙動)。
- Known gaps: vm/pyvm 実行はまだ Stage0 への橋渡し未着手。llvm も emit object 止まりlink/exec は後続)。 - Known gaps: vm/pyvm 実行はまだ Stage0 への橋渡し未着手。llvm も emit object 止まりlink/exec は後続)。
### 1-5. Phase 25.1A4 — Using SSOT 薄設計BuildBox include 除去 ### 1-5. Phase 25.1A4 — Using SSOT 薄設計BuildBox include 除去
@ -498,7 +498,7 @@ Rust 側は LoopForm v2 / StageB fib / Stage1 UsingResolver 構造テス
- 再入防止として子プロセスには `NYASH_STAGE1_CLI_CHILD=1` を付与(子側からは Rust ブリッジを素通り)。 - 再入防止として子プロセスには `NYASH_STAGE1_CLI_CHILD=1` を付与(子側からは Rust ブリッジを素通り)。
- A2: Stage1 CLI skeleton の責務を doc に固定DONE - A2: Stage1 CLI skeleton の責務を doc に固定DONE
- `lang/src/runner/stage1_cli.hako``Stage1Cli.emit_program_json/emit_mir_json/run_program_json/stage1_main` のシグネチャとトグルトポロジーを固定。 - `lang/src/runner/stage1_cli.hako``Stage1Cli.emit_program_json/emit_mir_json/run_program_json/stage1_main` のシグネチャとトグルトポロジーを固定。
- `docs/development/roadmap/phases/phase-25.1/stage1-usingresolver-loopform.md` に Rust 側ブリッジの振る舞いとトグル名(`NYASH_USE_STAGE1_CLI` / `STAGE1_EMIT_*` / `STAGE1_BACKEND` / `NYASH_STAGE1_CLI_CHILD`)を追記。 - `docs/private/roadmap2/phases/phase-25.1/stage1-usingresolver-loopform.md` に Rust 側ブリッジの振る舞いとトグル名(`NYASH_USE_STAGE1_CLI` / `STAGE1_EMIT_*` / `STAGE1_BACKEND` / `NYASH_STAGE1_CLI_CHILD`)を追記。
- A3: 次ステップ(未着手) - A3: 次ステップ(未着手)
- Stage1 CLI skeleton に StageB/BuildBox/MirBuilder 呼び出しを順に実装し、「Program(JSON)/MIR(JSON) を selfhost 経由で emit できる」状態まで持っていく。 - Stage1 CLI skeleton に StageB/BuildBox/MirBuilder 呼び出しを順に実装し、「Program(JSON)/MIR(JSON) を selfhost 経由で emit できる」状態まで持っていく。
- `tools/selfhost/run_stage1_cli.sh` から呼び出す selfhost パスと、Rust CLl からのブリッジパスの両方で JSON I/O 契約が同じになるように揃える。 - `tools/selfhost/run_stage1_cli.sh` から呼び出す selfhost パスと、Rust CLl からのブリッジパスの両方で JSON I/O 契約が同じになるように揃える。
@ -548,27 +548,35 @@ Rust 側は LoopForm v2 / StageB fib / Stage1 UsingResolver 構造テス
**目的** **目的**
- 制御構造if / loop / break / continue / return**関数呼び出し+継続** に正規化する中間層JoinIRを設計し、LoopForm v2 / PHI / ExitLiveness の負担を将来軽くする足場を作る。 - 制御構造if / loop / break / continue / return**関数呼び出し+継続** に正規化する中間層JoinIRを設計し、LoopForm v2 / PHI / ExitLiveness の負担を将来軽くする足場を作る。
- 25.1 / 26-F / 26-G の本線を止めずに、「設計+ごく小さな実験」だけを先に進める。 - 25.1 / 26-F / 26-G の本線を止めずに、「設計+ごく小さな実験」だけを先に進める。
- スモーク/本線は既存の MIR/LoopForm 経路のまま維持しつつ、徐々に「関数型LoopFnIR/JoinIR」側に重心を移す。 - スモーク/本線は既存の MIR/LoopForm 経路のまま維持しつつ、徐々に「関数型LoopFnIR/JoinIR」側に重心を移す。
**進捗26-H 完了分)**
- JoinIR 設計ドキュメント反映済み(`docs/development/architecture/join-ir.md`
- 26-H README/TASKS でスコープ・最終箱セット・次フェーズ境界を明記
- `src/mir/join_ir.rs` で JoinIR 型定義+ JoinIrMin 用のミニ自動変換を実装
- `apps/tests/joinir_min_loop.hako` + `src/tests/mir_joinir_min.rs`(トグル付きカナリア)を追加
- トグル: `NYASH_JOINIR_EXPERIMENT=1` で JoinIR 実験を有効化(デフォルトは既存 MIR/LoopForm のみ)
**次フェーズPhase 27 — JoinIR 実用化)**
- フォルダ: `docs/private/roadmap2/phases/phase-27-joinir/`
- 27.1: JoinIR 変換を FuncScanner/StageB の代表ループに拡張(トグル付き)
- 27.2: JoinIR → VM/LLVM ブリッジのプロトタイプを作り、A/B 実行を試す(トグル付き)
- 27.3: レガシー PHI/Loop 箱を段階削減Header/Exit/LoopPhi 系の吸収・削除計画を実行)
**やること26-H スコープ)** **やること26-H スコープ)**
- H1: JoinIR 設計ドキュメントの追加 - H1: JoinIR 設計ドキュメントの追加**完了**
- `docs/development/architecture/join-ir.md` に命令セットと変換規則、対応表を記述(設計反映済み - `docs/development/architecture/join-ir.md` に命令セットと変換規則、対応表を記述済み。
- `docs/development/roadmap/phases/phase-26-H/README.md` に、26-H のスコープ/やらないこと/他フェーズとの関係を記載(済) - `docs/private/roadmap2/phases/phase-26-H/README.md` に、26-H のスコープ/やらないこと/他フェーズとの関係を記載済み
- H2: JoinIR 型定義の骨格だけ入れる - H2: JoinIR 型定義とミニ変換の骨格(**完了**
- ファイル候補: `src/mir/join_ir.rs` - `src/mir/join_ir.rs``JoinFunction/JoinInst/JoinContId/JoinModule` 等の型を定義済み
- `JoinFunction`, `JoinInst`, `JoinContId` 等の型だけ定義しておき、MIR→JoinIR 変換のロジックはまだ書かない - `lower_min_loop_to_joinir``JoinIrMin.main/0` 用の試験的な自動変換を実装Phase 27.x で一般化予定)
- MirQueryBox`src/mir/query.rs`)から JoinIR への変換に必要な最小 APIsuccs / reads / writesが揃っているか確認する26-G との整合を優先)。 - `src/tests/mir_joinir_min.rs``apps/tests/joinir_min_loop.hako` でカナリアテストを追加(`NYASH_JOINIR_EXPERIMENT=1` 時のみ有効)。
- H3: 1 ケースだけのミニ変換実験 - H3: トグル付きミニ実験(**完了**
- 専用の最小 .hako を 1 本用意する(例: `apps/tests/joinir_min_loop.hako` - `NYASH_JOINIR_EXPERIMENT=1` で JoinIR 実験テストを有効化
- `loop(i < 3) { if i >= 2 { break } i = i + 1 } return i` 程度の単純なケース - トグル OFF 時は既存の MIR/LoopForm 経路のみが動作することを確認(ゼロリグレッション)
- `src/tests/mir_joinir_min.rs`(仮)で:
- 上記 .hako を MIR までコンパイル。
- 手書き or ごく簡単なロジックで JoinIR を 1 関数ぶんだけ生成してダンプする。
- join/loop_step/k_exit の形になっているか、手動で確認する。
- このフェーズでは JoinIR の VM 実行まではやらず、「形が破綻していないか」を見るだけに留める。
**やらないこと26-H では保留)** **やらないこと26-H では保留)**
@ -692,7 +700,7 @@ Rust 側は LoopForm v2 / StageB fib / Stage1 UsingResolver 構造テス
- E-3: Legacy 経路の一覧と新規利用禁止ポリシーを docs に反映 - E-3: Legacy 経路の一覧と新規利用禁止ポリシーを docs に反映
- ファイル: - ファイル:
- `docs/development/roadmap/phases/phase-25.1/README.md`(本線側のルール) - `docs/private/roadmap2/phases/phase-25.1/README.md`(本線側のルール)
- `docs/private/roadmap/phases/phase-31.2/legacy-loop-deletion-plan.md`(削除計画側と整合させる) - `docs/private/roadmap/phases/phase-31.2/legacy-loop-deletion-plan.md`(削除計画側と整合させる)
- やること: - やること:
- Legacy として扱うモジュール(例: `phi_core::loop_phi`, 一部旧 JSON v0 bridge helperを一覧にして、「新しいコードからここを呼ばない」「Phase 31.x で削除予定」と明記する。 - Legacy として扱うモジュール(例: `phi_core::loop_phi`, 一部旧 JSON v0 bridge helperを一覧にして、「新しいコードからここを呼ばない」「Phase 31.x で削除予定」と明記する。
@ -723,7 +731,7 @@ Rust 側は LoopForm v2 / StageB fib / Stage1 UsingResolver 構造テス
- break/continue/exit の snapshot を `LoopSnapshotMergeBox` でマージし、canonical continue_merge → header backedge を JSON 側でも採用。 - break/continue/exit の snapshot を `LoopSnapshotMergeBox` でマージし、canonical continue_merge → header backedge を JSON 側でも採用。
- `tests/json_program_loop.rs` で JSON v0 だけを入力にした軽量ループ(通常 / continue / body-local exit`MirVerifier` で確認するスモークを追加。 - `tests/json_program_loop.rs` で JSON v0 だけを入力にした軽量ループ(通常 / continue / body-local exit`MirVerifier` で確認するスモークを追加。
- Docs/README: - Docs/README:
- `docs/development/roadmap/phases/phase-25.1q/README.md` に「AST/JSON ともに LoopForm v2 + LoopSnapshotMergeBox が SSOT」と明記。 - `docs/private/roadmap2/phases/phase-25.1q/README.md` に「AST/JSON ともに LoopForm v2 + LoopSnapshotMergeBox が SSOT」と明記。
- `src/runner/json_v0_bridge/README.md` で “bridge は薄いアダプタであり、新しい PHI 仕様は loopform 側でのみ扱う” とガードを追記。 - `src/runner/json_v0_bridge/README.md` で “bridge は薄いアダプタであり、新しい PHI 仕様は loopform 側でのみ扱う” とガードを追記。
- `src/mir/phi_core/loop_phi.rs` には “legacy分析用のみ” コメントを追加。将来の cleanup (Phase 31.x) で削除対象とする。 - `src/mir/phi_core/loop_phi.rs` には “legacy分析用のみ” コメントを追加。将来の cleanup (Phase 31.x) で削除対象とする。
- 残タスクは別フェーズへ: - 残タスクは別フェーズへ:

View File

@ -474,7 +474,7 @@ box DataProcessor {
### Documentation ### Documentation
- **[Property System Specification](docs/development/proposals/unified-members.md)** - Complete syntax reference - **[Property System Specification](docs/development/proposals/unified-members.md)** - Complete syntax reference
- **[Python Integration Guide](docs/development/roadmap/phases/phase-10.7/)** - Python → Nyash transpilation - **[Python Integration Guide](docs/private/roadmap2/phases/phase-10.7/)** - Python → Nyash transpilation
- **[Implementation Strategy](docs/private/papers/paper-m-method-postfix-catch/implementation-strategy.md)** - Technical details - **[Implementation Strategy](docs/private/papers/paper-m-method-postfix-catch/implementation-strategy.md)** - Technical details
--- ---
@ -521,7 +521,7 @@ abi = "unified" # Both ABIs supported!
**Key Innovation**: TypeBox enables cross-plugin Box creation without circular dependencies. MapBox can now return ArrayBox seamlessly! **Key Innovation**: TypeBox enables cross-plugin Box creation without circular dependencies. MapBox can now return ArrayBox seamlessly!
📚 **[Full TypeBox Documentation](docs/development/roadmap/phases/phase-12/)** 📚 **[Full TypeBox Documentation](docs/private/roadmap2/phases/phase-12/)**
--- ---

View File

@ -142,4 +142,4 @@ The Nyash Kernel integrates seamlessly with:
--- ---
*Part of Phase 15 Nyash Self-hosting Revolution* *Part of Phase 15 Nyash Self-hosting Revolution*
*Documentation: [ChatGPT5 NyRT→NyKernel Design](../../docs/development/roadmap/phases/phase-15/chatgpt5-nyrt-kernel-design.md)* *Documentation: [ChatGPT5 NyRT→NyKernel Design](../../docs/private/roadmap2/phases/phase-15/chatgpt5-nyrt-kernel-design.md)*

View File

@ -8,7 +8,7 @@ Reason:
Where to look now: Where to look now:
- Current builder: `src/mir/builder/` and `src/mir/builder.rs` - Current builder: `src/mir/builder/` and `src/mir/builder.rs`
- MIR cleanup plan/spec: `docs/development/roadmap/phases/phase-11.8_mir_cleanup/{PLAN.md,TECHNICAL_SPEC.md}` - MIR cleanup plan/spec: `docs/private/roadmap2/phases/phase-11.8_mir_cleanup/{PLAN.md,TECHNICAL_SPEC.md}`
Notes: Notes:
- Any historical design details can be recovered from git history. This page exists as a breadcrumb for past references. - Any historical design details can be recovered from git history. This page exists as a breadcrumb for past references.

View File

@ -75,7 +75,7 @@
7) 依存関係 7) 依存関係
==================== ====================
- 10.5 完了AOT/nyrt/Handle-First/TLV統一/Strict運用を前提 - 10.5 完了AOT/nyrt/Handle-First/TLV統一/Strict運用を前提
- Docsの最新導線: docs/development/roadmap/phases/phase-10.5/INDEX.md - Docsの最新導線: docs/private/roadmap2/phases/phase-10.5/INDEX.md
==================== ====================
8) 参照リンク 8) 参照リンク

View File

@ -162,4 +162,4 @@ cargo build --release --features cranelift-jit
## 備考 ## 備考
本シーケンスは `docs/development/roadmap/phases/phase-15/self-hosting-plan.txt` を尊重しつつ、JIT最小体験を優先させるため順序を最適化LLVM/lld と YAML自動生成は後段へスライド。進捗に応じて適宜見直し、CI/スモークで常時検証する。 本シーケンスは `docs/private/roadmap2/phases/phase-15/self-hosting-plan.txt` を尊重しつつ、JIT最小体験を優先させるため順序を最適化LLVM/lld と YAML自動生成は後段へスライド。進捗に応じて適宜見直し、CI/スモークで常時検証する。

View File

@ -738,7 +738,7 @@ fn test_mir_executor<E: MirExecutor>(mut exec: E) {
- **CLAUDE.md**: 開発ガイド (Phase 15戦略) - **CLAUDE.md**: 開発ガイド (Phase 15戦略)
- **CURRENT_TASK.md**: 現在進行中の作業 - **CURRENT_TASK.md**: 現在進行中の作業
- **docs/development/roadmap/phases/phase-15/**: 実行器統一化計画 - **docs/private/roadmap2/phases/phase-15/**: 実行器統一化計画
--- ---

View File

@ -293,7 +293,7 @@ hyperfine --warmup 3 \
1. **`CURRENT_TASK.md`**: 1. **`CURRENT_TASK.md`**:
- Add entry: "✅ Phase 25.1b: LoopForm PHI circular dependency resolved" - Add entry: "✅ Phase 25.1b: LoopForm PHI circular dependency resolved"
2. **`docs/development/roadmap/phases/phase-25.1b/README.md`**: 2. **`docs/private/roadmap2/phases/phase-25.1b/README.md`**:
- Document LoopFormBuilder implementation - Document LoopFormBuilder implementation
- Add testing results - Add testing results

View File

@ -244,7 +244,7 @@ enum JoinInst {
## 5. 他ドキュメントとの関係 ## 5. 他ドキュメントとの関係
- `docs/development/roadmap/phases/phase-26-H/README.md` - `docs/private/roadmap2/phases/phase-26-H/README.md`
- Phase 26-H のスコープ設計ミニ実験、他フェーズ25.1 / 26-F / 26-Gとの関係を定義。 - Phase 26-H のスコープ設計ミニ実験、他フェーズ25.1 / 26-F / 26-Gとの関係を定義。
- `docs/development/architecture/loops/loopform_ssot.md` - `docs/development/architecture/loops/loopform_ssot.md`
- LoopForm v2 / Exit PHI / 4箱構成LoopVarClassBox / LoopExitLivenessBox / BodyLocalPhiBuilder / PhiInvariantsBoxの設計ート。 - LoopForm v2 / Exit PHI / 4箱構成LoopVarClassBox / LoopExitLivenessBox / BodyLocalPhiBuilder / PhiInvariantsBoxの設計ート。

View File

@ -175,7 +175,7 @@ static box MirLogBox {
## 参考 ## 参考
- Phase 25.4 計画: `docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md` - Phase 25.4 計画: `docs/private/roadmap2/phases/phase-25.4-naming-cli-cleanup/README.md`
- Stage-1 CLI: `lang/src/runner/stage1_cli.hako` - Stage-1 CLI: `lang/src/runner/stage1_cli.hako`
- FuncScanner: `lang/src/compiler/entry/func_scanner.hako` - FuncScanner: `lang/src/compiler/entry/func_scanner.hako`
- StringHelpers: `lang/src/shared/common/string_helpers.hako` - StringHelpers: `lang/src/shared/common/string_helpers.hako`

View File

@ -252,7 +252,7 @@ mv AGENTS.md .claude/AGENTS.md
```bash ```bash
# 1. 重要マイルストーンのみREADME.mdに記載 # 1. 重要マイルストーンのみREADME.mdに記載
# 2. CHANGELOG.mdを削除 # 2. CHANGELOG.mdを削除
# 3. 詳細はgit logとdocs/development/roadmap/phases/で管理 # 3. 詳細はgit logとdocs/private/roadmap2/phases/で管理
``` ```
**メリット**: メンテナンス負荷削減 **メリット**: メンテナンス負荷削減

View File

@ -69,7 +69,7 @@
- **行数**: L14 - **行数**: L14
- **状態**: ✅ 完了 - **状態**: ✅ 完了
#### 4. docs/development/roadmap/phases/00_MASTER_ROADMAP.md #### 4. docs/private/roadmap2/phases/00_MASTER_ROADMAP.md
- **修正内容**: `docs/CURRENT_TASK.md``../../../CURRENT_TASK.md`(相対パス) - **修正内容**: `docs/CURRENT_TASK.md``../../../CURRENT_TASK.md`(相対パス)
- **行数**: L263, L2972箇所 - **行数**: L263, L2972箇所
- **状態**: ✅ 完了 - **状態**: ✅ 完了
@ -79,12 +79,12 @@
- **行数**: L25 - **行数**: L25
- **状態**: ✅ 完了 - **状態**: ✅ 完了
#### 6. docs/development/roadmap/phases/phase-8/phase8.3_wasm_box_operations.md #### 6. docs/private/roadmap2/phases/phase-8/phase8.3_wasm_box_operations.md
- **修正内容**: `docs/execution-backends.md``docs/reference/architecture/execution-backends.md` - **修正内容**: `docs/execution-backends.md``docs/reference/architecture/execution-backends.md`
- **行数**: L110 - **行数**: L110
- **状態**: ✅ 完了 - **状態**: ✅ 完了
#### 7. docs/development/roadmap/phases/phase-9/phase9_aot_wasm_implementation.md #### 7. docs/private/roadmap2/phases/phase-9/phase9_aot_wasm_implementation.md
- **修正内容**: `docs/execution-backends.md``docs/reference/architecture/execution-backends.md` - **修正内容**: `docs/execution-backends.md``docs/reference/architecture/execution-backends.md`
- **行数**: L162 - **行数**: L162
- **状態**: ✅ 完了 - **状態**: ✅ 完了

View File

@ -421,7 +421,7 @@
### タスク ### タスク
- [x] **4.1: Phase 21.7 README 更新** ✅ 完了 (2025-11-22) - [x] **4.1: Phase 21.7 README 更新** ✅ 完了 (2025-11-22)
- ファイル: `docs/development/roadmap/phases/phase-21.7-normalization/README.md` - ファイル: `docs/private/roadmap2/phases/phase-21.7-normalization/README.md`
- 追記内容: - 追記内容:
```markdown ```markdown
## Global 名の SSOT ルール ## Global 名の SSOT ルール

View File

@ -568,7 +568,7 @@ impl Stage1Bridge {
### G-3. Nyash内部ドキュメント ### G-3. Nyash内部ドキュメント
- `CURRENT_TASK.md`: Phase 25.1-25.2の進捗状況 - `CURRENT_TASK.md`: Phase 25.1-25.2の進捗状況
- `docs/development/roadmap/phases/phase-25.1/stage1-usingresolver-loopform.md`: Stage1設計詳細 - `docs/private/roadmap2/phases/phase-25.1/stage1-usingresolver-loopform.md`: Stage1設計詳細
- `docs/development/runtime/cli-hakorune-stage1.md`: CLI仕様SSOT - `docs/development/runtime/cli-hakorune-stage1.md`: CLI仕様SSOT
- `src/runner/stage1_bridge.rs`: Rust側ブリッジ実装 - `src/runner/stage1_bridge.rs`: Rust側ブリッジ実装
- `lang/src/runner/stage1_cli.hako`: Stage1 CLI本体 - `lang/src/runner/stage1_cli.hako`: Stage1 CLI本体

View File

@ -0,0 +1,7 @@
# Roadmap Phases
開発フェーズごとの設計メモと進捗ログをまとめる正本ディレクトリだよ。
- ここが最新の正本。`docs/private/roadmap2` 側は将来的なミラー候補として検討中だよ。
- 各フェーズの README/TASKS はこの階層直下にある `phase-XX` ディレクトリを参照してね。
- JoinIR 以降の新規フェーズ26-H, 27 など)もここに追加していくよ。

View File

@ -75,7 +75,7 @@
7) 依存関係 7) 依存関係
==================== ====================
- 10.5 完了AOT/nyrt/Handle-First/TLV統一/Strict運用を前提 - 10.5 完了AOT/nyrt/Handle-First/TLV統一/Strict運用を前提
- Docsの最新導線: docs/development/roadmap/phases/phase-10.5/INDEX.md - Docsの最新導線: docs/private/roadmap2/phases/phase-10.5/INDEX.md
==================== ====================
8) 参照リンク 8) 参照リンク

View File

@ -157,7 +157,7 @@ Week 3: 完全検証
``` ```
src/mir/definitions/call_unified.rs (297行) ✅ src/mir/definitions/call_unified.rs (297行) ✅
src/llvm_py/instructions/mir_call.py (120行) ✅ src/llvm_py/instructions/mir_call.py (120行) ✅
docs/development/roadmap/phases/phase-15.5/ (6文書) ✅ docs/private/roadmap2/phases/phase-15.5/ (6文書) ✅
``` ```
### 変更済みファイル ✅ ### 変更済みファイル ✅

View File

@ -162,4 +162,4 @@ cargo build --release --features cranelift-jit
## 備考 ## 備考
本シーケンスは `docs/development/roadmap/phases/phase-15/self-hosting-plan.txt` を尊重しつつ、JIT最小体験を優先させるため順序を最適化LLVM/lld と YAML自動生成は後段へスライド。進捗に応じて適宜見直し、CI/スモークで常時検証する。 本シーケンスは `docs/private/roadmap2/phases/phase-15/self-hosting-plan.txt` を尊重しつつ、JIT最小体験を優先させるため順序を最適化LLVM/lld と YAML自動生成は後段へスライド。進捗に応じて適宜見直し、CI/スモークで常時検証する。

View File

@ -102,4 +102,4 @@ Out of scope:
- Numeric core AOT ライン: - Numeric core AOT ライン:
- IntArrayCore/MatI64 の実装を `.hako`Ring1側に寄せ、LLVM からは汎用 `ExternCall`/numeric ABI のみを見る構造は Phase 25 の設計スコープとする。 - IntArrayCore/MatI64 の実装を `.hako`Ring1側に寄せ、LLVM からは汎用 `ExternCall`/numeric ABI のみを見る構造は Phase 25 の設計スコープとする。
詳細な将来計画・numeric runtime AOT 方針については `docs/development/roadmap/phases/phase-25/README.md` を参照。 詳細な将来計画・numeric runtime AOT 方針については `docs/private/roadmap2/phases/phase-25/README.md` を参照。

View File

@ -254,6 +254,6 @@ Status: design+partial implementationStage1 ビルド導線の初期版まで
- Stage1 ランチャー(フル CLI モード切り替え)の実装本体(このフェーズでは Ny Executor 最小 EXE まで)。 - Stage1 ランチャー(フル CLI モード切り替え)の実装本体(このフェーズでは Ny Executor 最小 EXE まで)。
Related docs: Related docs:
- `docs/development/roadmap/phases/phase-25/README.md` … Stage0/Ring0-Ring1 再編と numeric_core BoxCall→Call パスのまとめ。 - `docs/private/roadmap2/phases/phase-25/README.md` … Stage0/Ring0-Ring1 再編と numeric_core BoxCall→Call パスのまとめ。
- `docs/development/runtime/cli-hakorune-stage1.md` … Stage1 hakorune CLI のサブコマンド設計と Stage0 との役割分離。 - `docs/development/runtime/cli-hakorune-stage1.md` … Stage1 hakorune CLI のサブコマンド設計と Stage0 との役割分離。
- `docs/development/roadmap/phases/phase-25.1a/README.md` … Stage1 build パイプラインProgram→MIR/selfhost AOTのホットフィックス計画。*** - `docs/private/roadmap2/phases/phase-25.1a/README.md` … Stage1 build パイプラインProgram→MIR/selfhost AOTのホットフィックス計画。***

View File

@ -116,8 +116,8 @@ Status: hotfix-in-progress緊急タスク配線修正フェーズ
## Related docs ## Related docs
- `docs/development/roadmap/phases/phase-25.1/README.md` … Stage0/Stage1 Bootstrap & Binary Layout設計初期実装 - `docs/private/roadmap2/phases/phase-25.1/README.md` … Stage0/Stage1 Bootstrap & Binary Layout設計初期実装
- `docs/development/roadmap/phases/phase-25/README.md` … Ring0/Ring1 再編と numeric_core BoxCall→Call パス。 - `docs/private/roadmap2/phases/phase-25/README.md` … Ring0/Ring1 再編と numeric_core BoxCall→Call パス。
- `docs/development/runtime/cli-hakorune-stage1.md` … Stage1 hakorune CLI のサブコマンド設計と実装範囲。 - `docs/development/runtime/cli-hakorune-stage1.md` … Stage1 hakorune CLI のサブコマンド設計と実装範囲。
- `tools/hakorune_emit_mir.sh` … StageB → Program(JSON v0) → MIR(JSON) の selfhostdelegate パイプライン。 - `tools/hakorune_emit_mir.sh` … StageB → Program(JSON v0) → MIR(JSON) の selfhostdelegate パイプライン。
- `tools/selfhost_exe_stageb.sh` / `tools/selfhost/build_stage1.sh``.hako → MIR(JSON) → EXE` selfhost AOT パス。*** - `tools/selfhost_exe_stageb.sh` / `tools/selfhost/build_stage1.sh``.hako → MIR(JSON) → EXE` selfhost AOT パス。***

View File

@ -142,7 +142,7 @@ Status: Step0〜3 実装済み・Step4Method/Extern実装フェーズ
- 複雑な LoopFormキャリア複数・条件付き更新などについては、**Rust 側 MirBuilder/LoopForm 実装を「正解(オラクル)」として扱い**、Hakorune 側の `LowerLoop*Box` 群をそれに追従させる。 - 複雑な LoopFormキャリア複数・条件付き更新などについては、**Rust 側 MirBuilder/LoopForm 実装を「正解(オラクル)」として扱い**、Hakorune 側の `LowerLoop*Box` 群をそれに追従させる。
- Hakorune 側は LoopForm の設計や PHI 配線を再実装せず、「入力 JSON のパターンマッチ+既存 LowerLoop* の呼び出し」に専念する。 - Hakorune 側は LoopForm の設計や PHI 配線を再実装せず、「入力 JSON のパターンマッチ+既存 LowerLoop* の呼び出し」に専念する。
- 手順イメージ: - 手順イメージ:
1. Rust 側 loop スモーク(例: `docs/development/roadmap/phases/phase-17-loopform-selfhost/``phase-21.6/21.8` 関連)に対応する .hako を特定し、provider-first`HAKO_SELFHOST_BUILDER_FIRST=0`)で MIR(JSON) を採取する。 1. Rust 側 loop スモーク(例: `docs/private/roadmap2/phases/phase-17-loopform-selfhost/``phase-21.6/21.8` 関連)に対応する .hako を特定し、provider-first`HAKO_SELFHOST_BUILDER_FIRST=0`)で MIR(JSON) を採取する。
2. 同じ .hako を selfhost-first`HAKO_SELFHOST_BUILDER_FIRST=1 HAKO_MIR_BUILDER_FUNCS=1 HAKO_SELFHOST_TRACE=1`)で通し、`LowerLoop*Box` がどこまで拾えているか/どのケースが `[builder/funcs:unsupported:loopform]` になっているかを観測する。 2. 同じ .hako を selfhost-first`HAKO_SELFHOST_BUILDER_FIRST=1 HAKO_MIR_BUILDER_FUNCS=1 HAKO_SELFHOST_TRACE=1`)で通し、`LowerLoop*Box` がどこまで拾えているか/どのケースが `[builder/funcs:unsupported:loopform]` になっているかを観測する。
3. 差分が出ているループだけを対象に、小さな `LowerLoopXXXBox`(または既存 LowerLoop* の強化)を追加する。 3. 差分が出ているループだけを対象に、小さな `LowerLoopXXXBox`(または既存 LowerLoop* の強化)を追加する。
4. ループの意味論差異キャリア更新・退出条件・rcが出ていないかは、VM/EXE canaryrc チェック)で確認する。 4. ループの意味論差異キャリア更新・退出条件・rcが出ていないかは、VM/EXE canaryrc チェック)で確認する。

View File

@ -58,7 +58,7 @@ Status: in-progressLoopBuilder 側の canonical continue_merge 導入済み /
## スコープ25.1q でやること) ## スコープ25.1q でやること)
1. **LoopForm / phi_core / LoopSnapshotMergeBox を SSOT として明文化(ドキュメント整理)** 1. **LoopForm / phi_core / LoopSnapshotMergeBox を SSOT として明文化(ドキュメント整理)**
- `docs/development/roadmap/phases/phase-25.1b/` / `phase-25.1m/` / 本 `phase-25.1q` で: - `docs/private/roadmap2/phases/phase-25.1b/` / `phase-25.1m/` / 本 `phase-25.1q` で:
- ループ意味論preheader/header/body/latch/exit、continue/break スナップショット、PHIの SSOT を - ループ意味論preheader/header/body/latch/exit、continue/break スナップショット、PHIの SSOT を
`LoopFormBuilder` + `LoopSnapshotMergeBox` に一本化すると明言する。 `LoopFormBuilder` + `LoopSnapshotMergeBox` に一本化すると明言する。
- legacy `phi_core::loop_phi` は JSON v0 bridge など互換レイヤ限定、と位置づける。 - legacy `phi_core::loop_phi` は JSON v0 bridge など互換レイヤ限定、と位置づける。

View File

@ -148,7 +148,7 @@ FuncScanner / StageB のデバッグ時には、`scan_all_boxes` のループ
- 対象: - 対象:
- `tools/smokes/v2/profiles/quick/core/phase251/stageb_fib_program_defs_canary_vm.sh` - `tools/smokes/v2/profiles/quick/core/phase251/stageb_fib_program_defs_canary_vm.sh`
- `docs/development/roadmap/phases/phase-25.1q/README.md` - `docs/private/roadmap2/phases/phase-25.1q/README.md`
- `CURRENT_TASK.md` - `CURRENT_TASK.md`
今回の結果: 今回の結果:

View File

@ -57,7 +57,7 @@
- microbench`tools/perf/microbench.sh --case matmul_core --backend llvm --exe`)による EXE/LLVM ベンチ統合と性能チューニングは **Phase 25.2** に移管する。 - microbench`tools/perf/microbench.sh --case matmul_core --backend llvm --exe`)による EXE/LLVM ベンチ統合と性能チューニングは **Phase 25.2** に移管する。
Related docs: Related docs:
- `docs/development/roadmap/phases/phase-25.1/README.md` … Stage0Rust bootstrap/Stage1Hakorune selfhostによるバイナリ二段構えの設計。 - `docs/private/roadmap2/phases/phase-25.1/README.md` … Stage0Rust bootstrap/Stage1Hakorune selfhostによるバイナリ二段構えの設計。
- `docs/development/runtime/NUMERIC_ABI.md` … IntArrayCore/MatI64 など numeric ABI の関数契約。 - `docs/development/runtime/NUMERIC_ABI.md` … IntArrayCore/MatI64 など numeric ABI の関数契約。
- `docs/development/runtime/system-hakorune-subset.md` … Ring1/System Hakorune サブセットの範囲と責務。 - `docs/development/runtime/system-hakorune-subset.md` … Ring1/System Hakorune サブセットの範囲と責務。
- `docs/development/runtime/ENV_VARS.md``NYASH_AOT_NUMERIC_CORE` など Phase 25 関連の環境変数。 - `docs/development/runtime/ENV_VARS.md``NYASH_AOT_NUMERIC_CORE` など Phase 25 関連の環境変数。

View File

@ -64,7 +64,7 @@ Status: planning設計 + 受け口整備。MIRスキャン本体は後続フ
### FD: 将来フェーズMIR スキャン本体)への橋渡し ### FD: 将来フェーズMIR スキャン本体)への橋渡し
- ファイル候補: - ファイル候補:
- `docs/development/roadmap/phases/phase-26-F/README.md`(本ファイル) - `docs/private/roadmap2/phases/phase-26-F/README.md`(本ファイル)
- `docs/development/architecture/loops/loopform_ssot.md` - `docs/development/architecture/loops/loopform_ssot.md`
- やること: - やること:
- Phase 26-F では「箱」と「受け口」と「環境変数ガード」までに留め、MIR 命令列の実スキャンは次フェーズ26-G など)に分離する方針を書き切る。 - Phase 26-F では「箱」と「受け口」と「環境変数ガード」までに留め、MIR 命令列の実スキャンは次フェーズ26-G など)に分離する方針を書き切る。

View File

@ -1,82 +1,13 @@
# Phase 26-H — JoinIR / 関数正規化フェーズ設計図 # Phase 26-H — JoinIR / 関数正規化フェーズprivate 正本)
目的: これまで「構文 → LoopForm → PHI」で説明してきた制御構造を、もう一段抽象度を上げて「関数呼び出し継続」に正規化する中間層JoinIR / LoopFnIRとして理し直すこと。 このフェーズ 26H の詳細な設計・タスク・ログは、まだ公開したくない内容を多く含むので、`docs/private` 側を正本として理しているよ。
最終的には「ループや if の合流点で悩む」のではなく、「関数の引数と戻り先で意味が決まる」世界に寄せ、箱の数と責務を減らしていく。
このフェーズ 26H ではあくまで「設計とミニ実験」に留め、スモークや本線は既存の MIR/LoopForm ルートのまま維持する。 - 正本 README: `docs/private/roadmap2/phases/phase-26-H/README.md`
- 正本 TASKS: `docs/private/roadmap2/phases/phase-26-H/TASKS.md`
--- ここdevelopment 側)は公開用の入口だけ残しておいて、本文は private リポジトリ側でメンテナンスする方針だよ。
## 1. 現状: LoopForm 正規化ベースの世界 JoinIR / 関数正規化の全体方針や最終的な箱の形は、上記の private 側 README を参照してね。
現在のパイプライン(概略):
```text
AST → MIR / LoopForm v2 → VM / LLVM
```
LoopForm v2 / PHI 周辺には、だいたい次のような箱が存在している:
- 構造系
- `LoopFormBuilder` / `LoopFormOps`
- `ControlForm`If/Loop の形と preds
- PHI 生成系
- `HeaderPhiBuilder`
- `ExitPhiBuilder`
- `BodyLocalPhiBuilder`
- `IfBodyLocalMergeBox`
- `PhiBuilderBox`If φ 統合)
- `PhiInvariantsBox`Fail-Fast チェック)
- 解析/分類系
- `LoopVarClassBox`Pinned / Carrier / BodyLocal*
- `LoopExitLivenessBox`ExitLiveness、実装は段階的
- `LocalScopeInspectorBox`
- if 解析系(`if_phi.rs` の補助群)
これらの箱が「どの変数がループをまたぐか」「どこで φ が必要か」「Exit で何を Live とみなすか」を決めているが、その分、箱の数と責務が多く、ループの形を変えるたびに PHI 側の負担が増えている。
---
## 2. 代案: 「関数を呼ぶ回数=ループ」というモデル
発想の転換:
- 今: 構文を LoopForm に正規化し、ループ構造header/body/latch/exitを中心に世界を説明している。
- 代案: 構文を「関数呼び出し」に正規化し、**関数を繰り返し呼ぶこと自体がループ**というモデルに寄せる。
### 2.1 ループの例
元のコード(擬似 Nyash:
```hako
var x = 0
loop {
x = x + 1
if x >= 10 { break }
}
print(x)
```
関数ループモデルで見ると:
```hako
// ループ一歩ぶんの関数Box
step(x, k_exit) {
if x >= 10 {
k_exit(x) // ループ終了して「先」に進む
} else {
step(x + 1, k_exit) // もう一周
}
}
// ループの「先」の処理
k_exit = (v) => {
print(v)
}
// 実行開始
step(0, k_exit)
```
- ループ = `step` を何回も呼ぶこと - ループ = `step` を何回も呼ぶこと
- `break` = `k_exit(...)` を呼ぶこと - `break` = `k_exit(...)` を呼ぶこと
@ -164,6 +95,42 @@ AST → MIR / LoopForm v2 → ★LoopFnIR(関数ループ層) → VM/LLVM
--- ---
## 4. 最終的に残したい「小さくて強い箱」セット
関数正規化JoinIR / LoopFnIRまで含めて、最終的に目指す箱の形をざっくりまとめておく。
1. フロント構造箱(構文 → 構造)
- `ParserBox`
- 役割: ソース → AST 変換。制御構造はまだ構文レベル。
- `ControlFormBox``ControlForm` / `LoopForm` の薄いラッパ)
- 役割: AST から If/Loop の「骨格」preheader/header/body/latch/exit, then/else/merge 等)だけを抜き出す。
- ここでは φ/SSA は扱わない(形の SSOT
2. 関数正規化箱LoopFnIR / JoinIR
- `LoopFnLoweringBox`LoopForm → LoopFnIR/JoinIR
- 役割: LoopForm/ControlForm を入力に、`step(i, k_exit)` / `join_after_if(x, k_exit)` のような関数+継続の形に落とす。
- φ/Exit/Carrier/BodyLocal をすべて「関数の引数」に吸収する。
- `JoinIRBox`
- 役割: JoinFunction/JoinInst を保持・ダンプし、将来的には JoinIR 上の最適化もここにまとめる。
- 制御は Call/Jump/Ret だけに集約される。
3. 解析箱(最小セット)
- `JoinIrQueryBox`MirQuery/JoinQuery 相当)
- 役割: read/write/succs を返すビュー層。ExitLiveness や GC root 判定の入力に使う。
- `LoopVarClass/IfAnalysisBox`(統合して 1 箱でもよい)
- 役割: どの変数が loop-carried かCarrier/Pinned/BodyLocal・exit 後に使われるかを表で決める箱。
- JoinIR 観点では「関数引数として持つべき変数集合」を返す責務に縮退する。
4. 実行箱(バックエンド)
- `VmBackendBox`Rust VM / PyVM
- 役割: JoinIR から VM 実行用コードに落とす。JoinIR の Call/Jump/Ret を関数呼び出しと分岐に写す。
- `LlvmBackendBox`
- 役割: JoinIR から LLVM IR/AOT への変換。関数+基本ブロックへの再投影を行う。
このセットを「最終形」として意識しつつ、26H ではまず JoinIR/LoopFnIR 周りの設計とミニ実装だけを進め、PHI/Loop 周辺の既存箱は徐々にこの形に寄せていく。
---
## 4. 26-H でやること(スコープ) ## 4. 26-H でやること(スコープ)
- JoinIR / LoopFnIR の設計ドキュメント作成 - JoinIR / LoopFnIR の設計ドキュメント作成
@ -212,6 +179,8 @@ AST → MIR / LoopForm v2 → ★LoopFnIR(関数ループ層) → VM/LLVM
## 8. 次フェーズへの橋渡し ## 8. 次フェーズへの橋渡し
- 変換器を拡張して FuncScanner / StageB などカナリアを JoinIR で通す(トグル付き)。 - 26-H のスコープは「設計+最小 JoinIR ダンプ+ JoinIrMin 向け自動変換(トグル付き)」まで
- ExitLiveness や BodyLocal PHI の一部を LoopFnIR 側に吸収し、PHI/Loop 周辺の箱を徐々に減らす。 - 27.x では、次のような範囲を候補とする:
- VM/LLVM 実行経路に JoinIR を統合するのは 27.x 以降を想定し、当面は「設計+ミニ実験」に留める - JoinIR 変換器を拡張し、FuncScanner / StageB など本番寄りのループを 1〜2 個 JoinIR で通す(トグル付き)
- ExitLiveness や BodyLocal PHI の一部を LoopFnIR 側に吸収し、PHI/Loop 周辺の箱を徐々に減らす。
- VM/LLVM 実行経路に JoinIR を統合するのは 27.x 以降を想定し、当面は「設計+ミニ実験」に留める。

View File

@ -1,69 +1,7 @@
# Phase 26-H — JoinIR / 関数正規化 タスクチェックリスト # Phase 26-H TASKS — JoinIR / 関数正規化public stub
このフェーズは「設計ミニ実験」専用だよ。本線のスモークCI は既存の MIR/LoopForm 経路のまま維持しつつ、関数正規化JoinIR/LoopFnIRの足場を小さく固めることをゴールにする このフェーズの詳細なタスクチェックリストは、まだ非公開のメモが多いため private 側に正本を置いているよ
## A. 設計ドキュメントまわり - 正本: `docs/private/roadmap2/phases/phase-26-H/TASKS.md`
- [ ] A-1: join-ir 設計の骨格を固める development 側では「JoinIR の設計+ミニ実験フェーズが進行中」という事実だけ共有しておくね。
- [ ] `docs/development/architecture/join-ir.md` に:
- [ ] 命令セット(`call`, `ret`, 必要なら `jump`)の最小定義を明記する
- [ ] if / loop / break / continue / return → JoinIR の変換規則を列挙する
- [ ] φ = 関数引数 / merge = join 関数 / loop = 再帰 + exit 継続 の対応表を書く
- [ ] 26-H で「実装として本当に増やす箱」と、「概念ラベルとしてだけ残す箱」を分けてコメントしておく
- [ ] A-2: 26-H フェーズ README の整備
- [ ] `docs/development/roadmap/phases/phase-26-H/README.md` に:
- [ ] 現在の箱群LoopForm/PHI/解析系)の棚卸し
- [ ] 最終的に残したい箱セットLoopForm 前段 + LoopFnIR/JoinIR + 最小解析箱)を 1 セクションでまとめる
- [ ] 「このフェーズでは設計+ミニ実験のみ、本線は既存ルート」というスコープ/制限を明記する
## B. JoinIR 型・変換の最小実装
- [ ] B-1: JoinIR 型定義ファイルの追加
- [ ] `src/mir/join_ir.rs` を追加し、以下を定義する最小限でOK:
- [ ] `JoinFunction`(名前・引数・ブロック一覧)
- [ ] `JoinBlock`(ラベルと命令列)
- [ ] `JoinInst`call/ret などのバリアント)
- [ ] `Debug`/`Display` などダンプに必要な実装だけ付ける(最初は `Debug` だけでも可)
- [ ] B-2: LoopForm→JoinIR ミニ変換関数1ケース用
- [ ] まずは **汎用変換ではなく、特定の小関数だけを対象にした試験的関数** を 1つ実装する:
- 例: `fn lower_simple_loop_to_joinir(mir: &MirModule, func_name: &str) -> Option<JoinFunction>`
- [ ] ルールは join-ir.md の「Loop→step/k_exit」変換に従って手作業気味でよいこのフェーズでは general solution を目指さない)
## C. 最小 .hako + テスト(カナリア)
- [ ] C-1: 最小 JoinIR 用 .hako を追加
- [ ] `apps/tests/joinir_min_loop.hako`(例)を作成:
- 例: `static box JoinIrMin { main() { var i = 0; loop(i < 3) { if i >= 2 { break } i = i + 1 } return i } }`
- [ ] C-2: Rust テストで MIR→JoinIR ダンプを確認
- [ ] `src/tests/mir_joinir_min.rs`(仮ファイル)を追加し:
- [ ] 上記 .hako を AST→MIR までコンパイル
- [ ] `lower_simple_loop_to_joinir` を呼んで `JoinFunction` を生成
- [ ] `eprintln!("{:?}", join_fn)` などで形を確認(当面は assert よりも形の手動確認を重視)
- [ ] テストは **デフォルト ON でも軽い** ことを確認(重ければ `#[ignore]` + 手動実行でもOK
## D. トグル付き実験フック
- [ ] D-1: 実験用トグルの追加
- [ ] `NYASH_JOINIR_EXPERIMENT=1` のときだけ JoinIR ダンプを有効にするパスを Runner 側に追加する(例: `--debug-joinir-min` に相乗りでも可)
- [ ] トグル OFF のときは既存の MIR/LoopForm 経路しか走らないことを確認する
## E. ループ/PHI ラインとの関係メモ
- [ ] E-1: 「どの箱が将来 JoinIR に吸収されるか」を一覧にする
- [ ] `loopform_ssot.md` か 26-H README に:
- [ ] Header/Exit PHI まわりの箱で、JoinIR 導入後に **不要or縮退** するもの
- [ ] LoopForm / ControlForm は「前段の構造箱」として残すもの
- [ ] 解析系LoopVarClassBox / LoopExitLivenessBox などのうち、JoinIR 後も必要なもの
を簡易な表にして残す
- [ ] E-2: 「今はここまで、27.x でここまで」を線引きする
- [ ] 26-H のスコープ: 設計+最小 JoinIR ダンプ
- [ ] 27.x 候補: JoinIR 経由で 1〜2 個の本番ループFuncScanner/Stage-Bを通す、PHI/ExitLiveness の一部を JoinIR 側に移す
---
このファイルは「26H でやることを一覧で見たいときのチェックリスト」として使ってね。
タスクが増えたら、このファイルに A/B/C… の形で足していく想定だよ。

View File

@ -0,0 +1,8 @@
# Phase 27 — JoinIR 実用化フェーズprivate 正本)
Phase 27 以降の JoinIR 実用化フェーズも、詳細な設計やタスクは private 側で管理するよ。
- 正本 README: `docs/private/roadmap2/phases/phase-27-joinir/README.md`
- 正本 TASKS: `docs/private/roadmap2/phases/phase-27-joinir/TASKS.md`
development 側では「JoinIR 実用化フェーズを進めている」ことだけを共有して、具体的な計画や手順は private リポジトリ側のドキュメントを参照する運用にするよ。

View File

@ -0,0 +1,7 @@
# Phase 27 — JoinIR 実用化タスクpublic stub
Phase 27 の具体的なタスクチェックリストは、private 側に正本を置いているよ。
- 正本: `docs/private/roadmap2/phases/phase-27-joinir/TASKS.md`
development 側では「JoinIR 実用化フェーズが進行中」という情報だけを公開して、細かいタスク管理やログは private リポジトリ側で行う方針だよ。

View File

@ -16,7 +16,7 @@ Status: design-stage; Phase 25 scope; no behaviour change yet.
- 必要な場合のみ、既存の `ExternCall`/FFI 構造の上に同じ関数群を載せ替えられるようにするPhase 25 では必須ではない)。 - 必要な場合のみ、既存の `ExternCall`/FFI 構造の上に同じ関数群を載せ替えられるようにするPhase 25 では必須ではない)。
Related docs: Related docs:
- Phase 25 roadmap: `docs/development/roadmap/phases/phase-25/README.md` - Phase 25 roadmap: `docs/private/roadmap2/phases/phase-25/README.md`
- Ring1 numeric runtime layout: `lang/src/runtime/numeric/README.md` - Ring1 numeric runtime layout: `lang/src/runtime/numeric/README.md`
- System Hakorune subset (runtime/numeric 用記法): `docs/development/runtime/system-hakorune-subset.md` - System Hakorune subset (runtime/numeric 用記法): `docs/development/runtime/system-hakorune-subset.md`

View File

@ -13,7 +13,7 @@ Status: design-stage; subset definition only. No behavior change yet.
- Ring1Hakoruneは「元・C 相当の実装」をこの subset で記述する。 - Ring1Hakoruneは「元・C 相当の実装」をこの subset で記述する。
Related docs: Related docs:
- Phase 25 roadmap: `docs/development/roadmap/phases/phase-25/README.md` - Phase 25 roadmap: `docs/private/roadmap2/phases/phase-25/README.md`
- Ring1 numeric runtime layout: `lang/src/runtime/numeric/README.md` - Ring1 numeric runtime layout: `lang/src/runtime/numeric/README.md`
- Numeric ABI surface (IntArrayCore / MatI64): `docs/development/runtime/NUMERIC_ABI.md` - Numeric ABI surface (IntArrayCore / MatI64): `docs/development/runtime/NUMERIC_ABI.md`

View File

@ -241,7 +241,7 @@ Global("Calculator.add/2")
## 関連ドキュメント ## 関連ドキュメント
- **Phase 21.7 README**: [docs/development/roadmap/phases/phase-21.7-normalization/README.md](../roadmap/phases/phase-21.7-normalization/README.md) - **Phase 21.7 README**: [docs/private/roadmap2/phases/phase-21.7-normalization/README.md](../roadmap/phases/phase-21.7-normalization/README.md)
- **Phase 21.7++ チェックリスト**: [docs/development/current/main/phase-21.7-naming-ssot-checklist.md](../current/main/phase-21.7-naming-ssot-checklist.md) - **Phase 21.7++ チェックリスト**: [docs/development/current/main/phase-21.7-naming-ssot-checklist.md](../current/main/phase-21.7-naming-ssot-checklist.md)
- **NamingBox 実装**: [src/mir/naming.rs](../../src/mir/naming.rs) - **NamingBox 実装**: [src/mir/naming.rs](../../src/mir/naming.rs)
- **StaticMethodId テスト**: [src/tests/namingbox_static_method_id.rs](../../src/tests/namingbox_static_method_id.rs) - **StaticMethodId テスト**: [src/tests/namingbox_static_method_id.rs](../../src/tests/namingbox_static_method_id.rs)

View File

@ -30,4 +30,4 @@ Onepager Template
Examples Examples
- Using→Loader overview: docs/development/design/legacy/using-loader-integration.md - Using→Loader overview: docs/development/design/legacy/using-loader-integration.md
- MiniVM roadmap: docs/development/roadmap/phases/phase-17-loopform-selfhost/MINI_VM_ROADMAP.md - MiniVM roadmap: docs/private/roadmap2/phases/phase-17-loopform-selfhost/MINI_VM_ROADMAP.md

View File

@ -140,4 +140,4 @@ Selfhost compiler prepass恒等→最小正規化
- 条件を満たす場合のみ「非代入→代入」の順でボディを再構成します(意味は不変)。 - 条件を満たす場合のみ「非代入→代入」の順でボディを再構成します(意味は不変)。
参考 参考
- docs/development/roadmap/phases/phase-17-loopform-selfhost/ - docs/private/roadmap2/phases/phase-17-loopform-selfhost/

View File

@ -149,5 +149,5 @@ NYASH_BOX_FACTORY_POLICY=plugin_first ./target/release/hakorune program.hako
## 参考 ## 参考
- **MIRログ観測**: [docs/development/architecture/mir-logs-observability.md](../development/architecture/mir-logs-observability.md) - **MIRログ観測**: [docs/development/architecture/mir-logs-observability.md](../development/architecture/mir-logs-observability.md)
- **Phase 25.4計画**: [docs/development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md](../development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md) - **Phase 25.4計画**: [docs/private/roadmap2/phases/phase-25.4-naming-cli-cleanup/README.md](../development/roadmap/phases/phase-25.4-naming-cli-cleanup/README.md)
- **MIR検証システム**: [src/mir/verification/](../../src/mir/verification/) - **MIR検証システム**: [src/mir/verification/](../../src/mir/verification/)

View File

@ -1,7 +1,7 @@
# 🌐 P2PBox完全実装 - AI大会議仕様準拠 # 🌐 P2PBox完全実装 - AI大会議仕様準拠
Status: PlannedPhase 9.79で実装、Cranelift前に完了 Status: PlannedPhase 9.79で実装、Cranelift前に完了
Roadmap: docs/development/roadmap/phases/phase-9/phase_9_79_p2pbox_rebuild.md Roadmap: docs/private/roadmap2/phases/phase-9/phase_9_79_p2pbox_rebuild.md
## 📋 Issue概要 ## 📋 Issue概要

View File

@ -113,6 +113,6 @@ fn mir_funcscanner_skip_ws_vm_debug_flaky() {
// 開発用ハーネスとして残しておく。 // 開発用ハーネスとして残しておく。
// //
// 実装詳細は tools 側の専用ハーネスおよび // 実装詳細は tools 側の専用ハーネスおよび
// docs/development/roadmap/phases/phase-25.3-funcscanner/README.md を参照。 // docs/private/roadmap2/phases/phase-25.3-funcscanner/README.md を参照。
assert!(true, "dev-only flaky test placeholder"); assert!(true, "dev-only flaky test placeholder");
} }

View File

@ -7,7 +7,7 @@ echo "[nyfmt-smoke] PoC placeholder (no runtime changes). Shows docs and example
if [[ "${NYFMT_POC:-}" == "1" ]]; then if [[ "${NYFMT_POC:-}" == "1" ]]; then
echo "[nyfmt-smoke] Running PoC guidance..." echo "[nyfmt-smoke] Running PoC guidance..."
echo "- Read: docs/tools/nyfmt/NYFMT_POC_ROADMAP.md" echo "- Read: docs/tools/nyfmt/NYFMT_POC_ROADMAP.md"
echo "- Mapping: docs/development/roadmap/phases/phase-12.7/ancp-specs/ANCP-Reversible-Mapping-v1.md" echo "- Mapping: docs/private/roadmap2/phases/phase-12.7/ancp-specs/ANCP-Reversible-Mapping-v1.md"
if [[ -d "apps/nyfmt-poc" ]]; then if [[ -d "apps/nyfmt-poc" ]]; then
echo "- Examples found under apps/nyfmt-poc/ (documentation only)" echo "- Examples found under apps/nyfmt-poc/ (documentation only)"
ls -1 apps/nyfmt-poc | sed 's/^/ * /' ls -1 apps/nyfmt-poc | sed 's/^/ * /'