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:
@ -404,7 +404,7 @@ Notes
|
||||
- User Macros(MacroBox/Phase 2): `docs/guides/user-macros.md`
|
||||
- Macro capabilities (io/net/env): `docs/reference/macro/capabilities.md`
|
||||
- LoopForm ガイド: `docs/guides/loopform.md`
|
||||
- Phase‑17(LoopForm Self‑Hosting & Polish): `docs/development/roadmap/phases/phase-17-loopform-selfhost/`
|
||||
- Phase‑17(LoopForm Self‑Hosting & Polish): `docs/private/roadmap2/phases/phase-17-loopform-selfhost/`
|
||||
- MacroBox(ユーザー拡張): `docs/guides/macro-box.md`
|
||||
- MacroBox in Nyash(設計草案): `docs/guides/macro-box-nyash.md`
|
||||
- MIR デバッグ総覧(dump/hints/__mir__): `docs/guides/testing-guide.md`(`MIR デバッグの入口まとめ` セクション)
|
||||
|
||||
30
CLAUDE.md
30
CLAUDE.md
@ -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)
|
||||
- **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/)
|
||||
- 📁 **Self**: [docs/development/current/self_current_task/](docs/development/current/self_current_task/)
|
||||
- ドキュメントハブ: [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)
|
||||
|
||||
## 🧱 先頭原則: 「箱理論(Box-First)」で足場を積む
|
||||
@ -178,7 +178,7 @@ Nyashは「Everything is Box」。実装・最適化・検証のすべてを「
|
||||
|
||||
## 🤖 **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本柱体制)**
|
||||
|
||||
@ -203,7 +203,7 @@ Nyashは「Everything is Box」。実装・最適化・検証のすべてを「
|
||||
【削除完了】 レガシーインタープリター(~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ルール - 完璧より進捗
|
||||
|
||||
@ -593,7 +593,7 @@ Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変
|
||||
- `src/mir/builder/call_resolution.rs`: 型安全解決ユーティリティ
|
||||
- `src/mir/builder/builder_calls.rs`: resolve_call_target()実装
|
||||
- `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**: HIR導入(コンパイル時名前解決)
|
||||
@ -681,7 +681,7 @@ Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変
|
||||
- 🎯 **All or Nothing**: Phase 10.7でPython transpilation、フォールバック無し設計
|
||||
- 📚 **完全ドキュメント化**: README.md導線、実装戦略、技術仕様すべて完備
|
||||
- 🗃️ **アーカイブ整理**: 古い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完了!実用レベル到達
|
||||
- 🎯 **改行処理革命Phase 2-B完了!** Box宣言系ファイルから14箇所のskip_newlines()完全削除
|
||||
@ -722,7 +722,7 @@ Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変
|
||||
- 🤝 AI協働の知見を論文化 - 実装駆動型学習の重要性を実証
|
||||
- 🎉 **面白事件ログ収集完了!** 41個の世界記録級事件を記録 → [CURRENT_TASK.md#面白事件ログ](CURRENT_TASK.md#🎉-面白事件ログ---ai協働開発45日間の奇跡41事例収集済み)
|
||||
- 🎯 **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
|
||||
@ -915,9 +915,9 @@ box MyBox {
|
||||
## 📚 ドキュメント構造
|
||||
|
||||
### 🎯 最重要ドキュメント(開発者向け)
|
||||
- **[Phase 15 セルフホスティング計画](docs/development/roadmap/phases/phase-15/self-hosting-plan.txt)** - 80k→20k行革命
|
||||
- **[Phase 15 ROADMAP](docs/development/roadmap/phases/phase-15/ROADMAP.md)** - 現在の進捗チェックリスト
|
||||
- **[Phase 15 INDEX](docs/development/roadmap/phases/phase-15/INDEX.md)** - 入口の統合
|
||||
- **[Phase 15 セルフホスティング計画](docs/private/roadmap2/phases/phase-15/self-hosting-plan.txt)** - 80k→20k行革命
|
||||
- **[Phase 15 ROADMAP](docs/private/roadmap2/phases/phase-15/ROADMAP.md)** - 現在の進捗チェックリスト
|
||||
- **[Phase 15 INDEX](docs/private/roadmap2/phases/phase-15/INDEX.md)** - 入口の統合
|
||||
- **[CURRENT_TASK.md](CURRENT_TASK.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)** - 基本構文・よくある間違い
|
||||
|
||||
### 📋 **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)** - 優先順位問題・解決策
|
||||
- **[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/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 に集約
|
||||
- 詳細情報は各docsファイルへのリンクから辿る
|
||||
- このファイルは500行以内が目安(あくまで目安であり、必要に応じて増減可)
|
||||
- Phase 15セルフホスティング実装中!詳細は[Phase 15](docs/development/roadmap/phases/phase-15/)へ
|
||||
- Phase 15セルフホスティング実装中!詳細は[Phase 15](docs/private/roadmap2/phases/phase-15/)へ
|
||||
|
||||
@ -208,7 +208,7 @@
|
||||
- 「全 pred で定義されているか」「不正な incoming が無いか」をチェックし、構造バグはここで止める。
|
||||
- Docs 整備:
|
||||
- `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 時点)**
|
||||
- Phase 26-F-3 → 26-F の流れで、一時的に退行したが、
|
||||
@ -228,7 +228,7 @@
|
||||
|
||||
- 26-F で作った差し替え口に、本物の use/def スキャン実装を載せるフェーズ。
|
||||
- `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 / Stage‑B defs 安定化(完了)
|
||||
|
||||
@ -377,7 +377,7 @@
|
||||
- `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 橋渡し未配線)。
|
||||
- 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 は後続)。
|
||||
|
||||
### 1-5. Phase 25.1A‑4 — Using SSOT 薄設計+BuildBox include 除去
|
||||
@ -498,7 +498,7 @@ Rust 側は LoopForm v2 / Stage‑B fib / Stage‑1 UsingResolver 構造テス
|
||||
- 再入防止として子プロセスには `NYASH_STAGE1_CLI_CHILD=1` を付与(子側からは Rust ブリッジを素通り)。
|
||||
- A‑2: Stage‑1 CLI skeleton の責務を doc に固定(DONE)
|
||||
- `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`)を追記。
|
||||
- A‑3: 次ステップ(未着手)
|
||||
- Stage‑1 CLI skeleton に Stage‑B/BuildBox/MirBuilder 呼び出しを順に実装し、「Program(JSON)/MIR(JSON) を selfhost 経由で emit できる」状態まで持っていく。
|
||||
- `tools/selfhost/run_stage1_cli.sh` から呼び出す selfhost パスと、Rust CLl からのブリッジパスの両方で JSON I/O 契約が同じになるように揃える。
|
||||
@ -550,25 +550,33 @@ Rust 側は LoopForm v2 / Stage‑B fib / Stage‑1 UsingResolver 構造テス
|
||||
- 25.1 / 26-F / 26-G の本線を止めずに、「設計+ごく小さな実験」だけを先に進める。
|
||||
- スモーク/本線は既存の 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/Stage‑B の代表ループに拡張(トグル付き)
|
||||
- 27.2: JoinIR → VM/LLVM ブリッジのプロトタイプを作り、A/B 実行を試す(トグル付き)
|
||||
- 27.3: レガシー PHI/Loop 箱を段階削減(Header/Exit/LoopPhi 系の吸収・削除計画を実行)
|
||||
|
||||
**やること(26-H スコープ)**
|
||||
|
||||
- H‑1: JoinIR 設計ドキュメントの追加
|
||||
- `docs/development/architecture/join-ir.md` に命令セットと変換規則、対応表を記述(設計反映済み)。
|
||||
- `docs/development/roadmap/phases/phase-26-H/README.md` に、26-H のスコープ/やらないこと/他フェーズとの関係を記載(済)。
|
||||
- H‑1: JoinIR 設計ドキュメントの追加(**完了**)
|
||||
- `docs/development/architecture/join-ir.md` に命令セットと変換規則、対応表を記述済み。
|
||||
- `docs/private/roadmap2/phases/phase-26-H/README.md` に、26-H のスコープ/やらないこと/他フェーズとの関係を記載済み。
|
||||
|
||||
- H‑2: JoinIR 型定義の骨格だけ入れる
|
||||
- ファイル候補: `src/mir/join_ir.rs`。
|
||||
- `JoinFunction`, `JoinInst`, `JoinContId` 等の型だけ定義しておき、MIR→JoinIR 変換のロジックはまだ書かない。
|
||||
- MirQueryBox(`src/mir/query.rs`)から JoinIR への変換に必要な最小 API(succs / reads / writes)が揃っているか確認する(26-G との整合を優先)。
|
||||
- H‑2: JoinIR 型定義とミニ変換の骨格(**完了**)
|
||||
- `src/mir/join_ir.rs` に `JoinFunction/JoinInst/JoinContId/JoinModule` 等の型を定義済み。
|
||||
- `lower_min_loop_to_joinir` で `JoinIrMin.main/0` 用の試験的な自動変換を実装(Phase 27.x で一般化予定)。
|
||||
- `src/tests/mir_joinir_min.rs` と `apps/tests/joinir_min_loop.hako` でカナリアテストを追加(`NYASH_JOINIR_EXPERIMENT=1` 時のみ有効)。
|
||||
|
||||
- H‑3: 1 ケースだけのミニ変換実験
|
||||
- 専用の最小 .hako を 1 本用意する(例: `apps/tests/joinir_min_loop.hako`)。
|
||||
- `loop(i < 3) { if i >= 2 { break } i = i + 1 } return i` 程度の単純なケース。
|
||||
- `src/tests/mir_joinir_min.rs`(仮)で:
|
||||
- 上記 .hako を MIR までコンパイル。
|
||||
- 手書き or ごく簡単なロジックで JoinIR を 1 関数ぶんだけ生成してダンプする。
|
||||
- join/loop_step/k_exit の形になっているか、手動で確認する。
|
||||
- このフェーズでは JoinIR の VM 実行まではやらず、「形が破綻していないか」を見るだけに留める。
|
||||
- H‑3: トグル付きミニ実験(**完了**)
|
||||
- `NYASH_JOINIR_EXPERIMENT=1` で JoinIR 実験テストを有効化。
|
||||
- トグル OFF 時は既存の MIR/LoopForm 経路のみが動作することを確認(ゼロリグレッション)。
|
||||
|
||||
**やらないこと(26-H では保留)**
|
||||
|
||||
@ -692,7 +700,7 @@ Rust 側は LoopForm v2 / Stage‑B fib / Stage‑1 UsingResolver 構造テス
|
||||
|
||||
- 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`(削除計画側と整合させる)
|
||||
- やること:
|
||||
- Legacy として扱うモジュール(例: `phi_core::loop_phi`, 一部旧 JSON v0 bridge helper)を一覧にして、「新しいコードからここを呼ばない」「Phase 31.x で削除予定」と明記する。
|
||||
@ -723,7 +731,7 @@ Rust 側は LoopForm v2 / Stage‑B fib / Stage‑1 UsingResolver 構造テス
|
||||
- break/continue/exit の snapshot を `LoopSnapshotMergeBox` でマージし、canonical continue_merge → header backedge を JSON 側でも採用。
|
||||
- `tests/json_program_loop.rs` で JSON v0 だけを入力にした軽量ループ(通常 / continue / body-local exit)を `MirVerifier` で確認するスモークを追加。
|
||||
- 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/mir/phi_core/loop_phi.rs` には “legacy(分析用のみ)” コメントを追加。将来の cleanup (Phase 31.x) で削除対象とする。
|
||||
- 残タスクは別フェーズへ:
|
||||
|
||||
@ -474,7 +474,7 @@ box DataProcessor {
|
||||
|
||||
### Documentation
|
||||
- **[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
|
||||
|
||||
---
|
||||
@ -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!
|
||||
|
||||
📚 **[Full TypeBox Documentation](docs/development/roadmap/phases/phase-12/)**
|
||||
📚 **[Full TypeBox Documentation](docs/private/roadmap2/phases/phase-12/)**
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -142,4 +142,4 @@ The Nyash Kernel integrates seamlessly with:
|
||||
---
|
||||
|
||||
*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)*
|
||||
@ -8,7 +8,7 @@ Reason:
|
||||
|
||||
Where to look now:
|
||||
- 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:
|
||||
- Any historical design details can be recovered from git history. This page exists as a breadcrumb for past references.
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
7) 依存関係
|
||||
====================
|
||||
- 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) 参照リンク
|
||||
|
||||
@ -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/スモークで常時検証する。
|
||||
|
||||
@ -738,7 +738,7 @@ fn test_mir_executor<E: MirExecutor>(mut exec: E) {
|
||||
|
||||
- **CLAUDE.md**: 開発ガイド (Phase 15戦略)
|
||||
- **CURRENT_TASK.md**: 現在進行中の作業
|
||||
- **docs/development/roadmap/phases/phase-15/**: 実行器統一化計画
|
||||
- **docs/private/roadmap2/phases/phase-15/**: 実行器統一化計画
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -293,7 +293,7 @@ hyperfine --warmup 3 \
|
||||
1. **`CURRENT_TASK.md`**:
|
||||
- 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
|
||||
- Add testing results
|
||||
|
||||
|
||||
@ -244,7 +244,7 @@ enum JoinInst {
|
||||
|
||||
## 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)との関係を定義。
|
||||
- `docs/development/architecture/loops/loopform_ssot.md`
|
||||
- LoopForm v2 / Exit PHI / 4箱構成(LoopVarClassBox / LoopExitLivenessBox / BodyLocalPhiBuilder / PhiInvariantsBox)の設計ノート。
|
||||
|
||||
@ -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`
|
||||
- FuncScanner: `lang/src/compiler/entry/func_scanner.hako`
|
||||
- StringHelpers: `lang/src/shared/common/string_helpers.hako`
|
||||
|
||||
@ -252,7 +252,7 @@ mv AGENTS.md .claude/AGENTS.md
|
||||
```bash
|
||||
# 1. 重要マイルストーンのみREADME.mdに記載
|
||||
# 2. CHANGELOG.mdを削除
|
||||
# 3. 詳細はgit logとdocs/development/roadmap/phases/で管理
|
||||
# 3. 詳細はgit logとdocs/private/roadmap2/phases/で管理
|
||||
```
|
||||
|
||||
**メリット**: メンテナンス負荷削減
|
||||
|
||||
@ -69,7 +69,7 @@
|
||||
- **行数**: 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`(相対パス)
|
||||
- **行数**: L263, L297(2箇所)
|
||||
- **状態**: ✅ 完了
|
||||
@ -79,12 +79,12 @@
|
||||
- **行数**: 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`
|
||||
- **行数**: 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`
|
||||
- **行数**: L162
|
||||
- **状態**: ✅ 完了
|
||||
|
||||
@ -421,7 +421,7 @@
|
||||
### タスク
|
||||
|
||||
- [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
|
||||
## Global 名の SSOT ルール
|
||||
|
||||
@ -568,7 +568,7 @@ impl Stage1Bridge {
|
||||
### G-3. Nyash内部ドキュメント
|
||||
|
||||
- `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)
|
||||
- `src/runner/stage1_bridge.rs`: Rust側ブリッジ実装
|
||||
- `lang/src/runner/stage1_cli.hako`: Stage1 CLI本体
|
||||
|
||||
7
docs/development/roadmap/phases/README.md
Normal file
7
docs/development/roadmap/phases/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# Roadmap Phases
|
||||
|
||||
開発フェーズごとの設計メモと進捗ログをまとめる正本ディレクトリだよ。
|
||||
|
||||
- ここが最新の正本。`docs/private/roadmap2` 側は将来的なミラー候補として検討中だよ。
|
||||
- 各フェーズの README/TASKS はこの階層直下にある `phase-XX` ディレクトリを参照してね。
|
||||
- JoinIR 以降の新規フェーズ(26-H, 27 など)もここに追加していくよ。
|
||||
@ -75,7 +75,7 @@
|
||||
7) 依存関係
|
||||
====================
|
||||
- 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) 参照リンク
|
||||
|
||||
@ -157,7 +157,7 @@ Week 3: 完全検証
|
||||
```
|
||||
src/mir/definitions/call_unified.rs (297行) ✅
|
||||
src/llvm_py/instructions/mir_call.py (120行) ✅
|
||||
docs/development/roadmap/phases/phase-15.5/ (6文書) ✅
|
||||
docs/private/roadmap2/phases/phase-15.5/ (6文書) ✅
|
||||
```
|
||||
|
||||
### 変更済みファイル ✅
|
||||
|
||||
@ -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/スモークで常時検証する。
|
||||
|
||||
@ -102,4 +102,4 @@ Out of scope:
|
||||
- Numeric core AOT ライン:
|
||||
- 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` を参照。
|
||||
|
||||
@ -254,6 +254,6 @@ Status: design+partial implementation(Stage1 ビルド導線の初期版まで
|
||||
- Stage1 ランチャー(フル CLI モード切り替え)の実装本体(このフェーズでは Ny Executor 最小 EXE まで)。
|
||||
|
||||
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/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)のホットフィックス計画。***
|
||||
|
||||
@ -116,8 +116,8 @@ Status: hotfix-in-progress(緊急タスク/配線修正フェーズ)
|
||||
|
||||
## Related docs
|
||||
|
||||
- `docs/development/roadmap/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.1/README.md` … Stage0/Stage1 Bootstrap & Binary Layout(設計+初期実装)。
|
||||
- `docs/private/roadmap2/phases/phase-25/README.md` … Ring0/Ring1 再編と numeric_core BoxCall→Call パス。
|
||||
- `docs/development/runtime/cli-hakorune-stage1.md` … Stage1 hakorune CLI のサブコマンド設計と実装範囲。
|
||||
- `tools/hakorune_emit_mir.sh` … Stage‑B → Program(JSON v0) → MIR(JSON) の selfhost+delegate パイプライン。
|
||||
- `tools/selfhost_exe_stageb.sh` / `tools/selfhost/build_stage1.sh` … `.hako → MIR(JSON) → EXE` selfhost AOT パス。***
|
||||
|
||||
@ -142,7 +142,7 @@ Status: Step0〜3 実装済み・Step4(Method/Extern)実装フェーズ
|
||||
- 複雑な LoopForm(キャリア複数・条件付き更新など)については、**Rust 側 MirBuilder/LoopForm 実装を「正解(オラクル)」として扱い**、Hakorune 側の `LowerLoop*Box` 群をそれに追従させる。
|
||||
- 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]` になっているかを観測する。
|
||||
3. 差分が出ているループだけを対象に、小さな `LowerLoopXXXBox`(または既存 LowerLoop* の強化)を追加する。
|
||||
4. ループの意味論差異(キャリア更新・退出条件・rc)が出ていないかは、VM/EXE canary(rc チェック)で確認する。
|
||||
|
||||
@ -58,7 +58,7 @@ Status: in-progress(LoopBuilder 側の canonical continue_merge 導入済み /
|
||||
## スコープ(25.1q でやること)
|
||||
|
||||
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 を
|
||||
`LoopFormBuilder` + `LoopSnapshotMergeBox` に一本化すると明言する。
|
||||
- legacy `phi_core::loop_phi` は JSON v0 bridge など互換レイヤ限定、と位置づける。
|
||||
|
||||
@ -148,7 +148,7 @@ FuncScanner / Stage‑B のデバッグ時には、`scan_all_boxes` のループ
|
||||
|
||||
- 対象:
|
||||
- `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`
|
||||
|
||||
今回の結果:
|
||||
|
||||
@ -57,7 +57,7 @@
|
||||
- microbench(`tools/perf/microbench.sh --case matmul_core --backend llvm --exe`)による EXE/LLVM ベンチ統合と性能チューニングは **Phase 25.2** に移管する。
|
||||
|
||||
Related docs:
|
||||
- `docs/development/roadmap/phases/phase-25.1/README.md` … Stage0(Rust bootstrap)/Stage1(Hakorune selfhost)によるバイナリ二段構えの設計。
|
||||
- `docs/private/roadmap2/phases/phase-25.1/README.md` … Stage0(Rust bootstrap)/Stage1(Hakorune selfhost)によるバイナリ二段構えの設計。
|
||||
- `docs/development/runtime/NUMERIC_ABI.md` … IntArrayCore/MatI64 など numeric ABI の関数契約。
|
||||
- `docs/development/runtime/system-hakorune-subset.md` … Ring1/System Hakorune サブセットの範囲と責務。
|
||||
- `docs/development/runtime/ENV_VARS.md` … `NYASH_AOT_NUMERIC_CORE` など Phase 25 関連の環境変数。
|
||||
|
||||
@ -64,7 +64,7 @@ Status: planning(設計 + 受け口整備。MIRスキャン本体は後続フ
|
||||
### F‑D: 将来フェーズ(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`
|
||||
- やること:
|
||||
- Phase 26-F では「箱」と「受け口」と「環境変数ガード」までに留め、MIR 命令列の実スキャンは次フェーズ(26-G など)に分離する方針を書き切る。
|
||||
|
||||
@ -1,82 +1,13 @@
|
||||
# Phase 26-H — JoinIR / 関数正規化フェーズ設計図
|
||||
# Phase 26-H — JoinIR / 関数正規化フェーズ(private 正本)
|
||||
|
||||
目的: これまで「構文 → LoopForm → PHI」で説明してきた制御構造を、もう一段抽象度を上げて「関数呼び出し+継続」に正規化する中間層(JoinIR / LoopFnIR)として整理し直すこと。
|
||||
最終的には「ループや if の合流点で悩む」のではなく、「関数の引数と戻り先で意味が決まる」世界に寄せ、箱の数と責務を減らしていく。
|
||||
このフェーズ 26‑H の詳細な設計・タスク・ログは、まだ公開したくない内容を多く含むので、`docs/private` 側を正本として管理しているよ。
|
||||
|
||||
このフェーズ 26‑H ではあくまで「設計とミニ実験」に留め、スモークや本線は既存の 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 正規化ベースの世界
|
||||
|
||||
現在のパイプライン(概略):
|
||||
|
||||
```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)
|
||||
```
|
||||
JoinIR / 関数正規化の全体方針や最終的な箱の形は、上記の private 側 README を参照してね。
|
||||
|
||||
- ループ = `step` を何回も呼ぶこと
|
||||
- `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 への変換。関数+基本ブロックへの再投影を行う。
|
||||
|
||||
このセットを「最終形」として意識しつつ、26‑H ではまず JoinIR/LoopFnIR 周りの設計とミニ実装だけを進め、PHI/Loop 周辺の既存箱は徐々にこの形に寄せていく。
|
||||
|
||||
---
|
||||
|
||||
## 4. 26-H でやること(スコープ)
|
||||
|
||||
- JoinIR / LoopFnIR の設計ドキュメント作成
|
||||
@ -212,6 +179,8 @@ AST → MIR / LoopForm v2 → ★LoopFnIR(関数ループ層) → VM/LLVM
|
||||
|
||||
## 8. 次フェーズへの橋渡し
|
||||
|
||||
- 変換器を拡張して FuncScanner / Stage‑B などカナリアを JoinIR で通す(トグル付き)。
|
||||
- 26-H のスコープは「設計+最小 JoinIR ダンプ+ JoinIrMin 向け自動変換(トグル付き)」まで。
|
||||
- 27.x では、次のような範囲を候補とする:
|
||||
- JoinIR 変換器を拡張し、FuncScanner / Stage‑B など本番寄りのループを 1〜2 個 JoinIR で通す(トグル付き)。
|
||||
- ExitLiveness や BodyLocal PHI の一部を LoopFnIR 側に吸収し、PHI/Loop 周辺の箱を徐々に減らす。
|
||||
- VM/LLVM 実行経路に JoinIR を統合するのは 27.x 以降を想定し、当面は「設計+ミニ実験」に留める。
|
||||
|
||||
@ -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 設計の骨格を固める
|
||||
- [ ] `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 側に移す
|
||||
|
||||
---
|
||||
|
||||
このファイルは「26‑H でやることを一覧で見たいときのチェックリスト」として使ってね。
|
||||
タスクが増えたら、このファイルに A/B/C… の形で足していく想定だよ。
|
||||
development 側では「JoinIR の設計+ミニ実験フェーズが進行中」という事実だけ共有しておくね。
|
||||
|
||||
@ -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 リポジトリ側のドキュメントを参照する運用にするよ。
|
||||
7
docs/development/roadmap/phases/phase-27-joinir/TASKS.md
Normal file
7
docs/development/roadmap/phases/phase-27-joinir/TASKS.md
Normal 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 リポジトリ側で行う方針だよ。
|
||||
@ -16,7 +16,7 @@ Status: design-stage; Phase 25 scope; no behaviour change yet.
|
||||
- 必要な場合のみ、既存の `ExternCall`/FFI 構造の上に同じ関数群を載せ替えられるようにする(Phase 25 では必須ではない)。
|
||||
|
||||
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`
|
||||
- System Hakorune subset (runtime/numeric 用記法): `docs/development/runtime/system-hakorune-subset.md`
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ Status: design-stage; subset definition only. No behavior change yet.
|
||||
- Ring1(Hakorune)は「元・C 相当の実装」をこの subset で記述する。
|
||||
|
||||
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`
|
||||
- Numeric ABI surface (IntArrayCore / MatI64): `docs/development/runtime/NUMERIC_ABI.md`
|
||||
|
||||
|
||||
@ -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)
|
||||
- **NamingBox 実装**: [src/mir/naming.rs](../../src/mir/naming.rs)
|
||||
- **StaticMethodId テスト**: [src/tests/namingbox_static_method_id.rs](../../src/tests/namingbox_static_method_id.rs)
|
||||
|
||||
@ -30,4 +30,4 @@ One‑pager Template
|
||||
|
||||
Examples
|
||||
- Using→Loader overview: docs/development/design/legacy/using-loader-integration.md
|
||||
- Mini‑VM roadmap: docs/development/roadmap/phases/phase-17-loopform-selfhost/MINI_VM_ROADMAP.md
|
||||
- Mini‑VM roadmap: docs/private/roadmap2/phases/phase-17-loopform-selfhost/MINI_VM_ROADMAP.md
|
||||
|
||||
@ -140,4 +140,4 @@ Selfhost compiler prepass(恒等→最小正規化)
|
||||
- 条件を満たす場合のみ「非代入→代入」の順でボディを再構成します(意味は不変)。
|
||||
|
||||
参考
|
||||
- docs/development/roadmap/phases/phase-17-loopform-selfhost/
|
||||
- docs/private/roadmap2/phases/phase-17-loopform-selfhost/
|
||||
|
||||
@ -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)
|
||||
- **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/)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# 🌐 P2PBox完全実装 - AI大会議仕様準拠
|
||||
|
||||
Status: Planned(Phase 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概要
|
||||
|
||||
|
||||
@ -113,6 +113,6 @@ fn mir_funcscanner_skip_ws_vm_debug_flaky() {
|
||||
// 開発用ハーネスとして残しておく。
|
||||
//
|
||||
// 実装詳細は 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");
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ echo "[nyfmt-smoke] PoC placeholder (no runtime changes). Shows docs and example
|
||||
if [[ "${NYFMT_POC:-}" == "1" ]]; then
|
||||
echo "[nyfmt-smoke] Running PoC guidance..."
|
||||
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
|
||||
echo "- Examples found under apps/nyfmt-poc/ (documentation only)"
|
||||
ls -1 apps/nyfmt-poc | sed 's/^/ * /'
|
||||
|
||||
Reference in New Issue
Block a user