From 8750186e55d4b143cb95748d71daf08d5fc84419 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Sun, 23 Nov 2025 05:53:27 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20Phase=2026-H=20=E3=82=BB=E3=83=83?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E5=AE=8C=E4=BA=86=20-=20=E5=85=A8?= =?UTF-8?q?=E3=83=89=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 変換 --- AGENTS.md | 2 +- CLAUDE.md | 30 ++--- CURRENT_TASK.md | 52 +++++--- README.md | 4 +- crates/nyash_kernel/README.md | 2 +- docs/archive/code/MIR_BUILDER_MODULARIZED.md | 2 +- docs/archive/phases/phase-10.6/PLAN.txt | 2 +- .../phases/phase-15/planning/sequence.md | 2 +- docs/archive/reports/analysis_report.md | 2 +- .../analysis/LOOPFORM_PHI_NEXT_STEPS.md | 2 +- docs/development/architecture/join-ir.md | 2 +- .../architecture/mir-logs-observability.md | 2 +- .../cleanup/CLEANUP_PLAN_2025-11-04.md | 2 +- .../cleanup/CLEANUP_REPORT_2025-11-04.md | 6 +- .../main/phase-21.7-naming-ssot-checklist.md | 2 +- .../stage1-architecture-improvement.md | 2 +- docs/development/roadmap/phases/README.md | 7 + .../roadmap/phases/phase-10.6/PLAN.txt | 2 +- .../phase-15.5/implementation-status.md | 2 +- .../phases/phase-15/planning/sequence.md | 2 +- .../roadmap/phases/phase-21.8/README.md | 2 +- .../roadmap/phases/phase-25.1/README.md | 4 +- .../roadmap/phases/phase-25.1a/README.md | 4 +- .../roadmap/phases/phase-25.1b/README.md | 2 +- .../roadmap/phases/phase-25.1q/README.md | 2 +- .../phases/phase-25.3-funcscanner/README.md | 2 +- .../roadmap/phases/phase-25/README.md | 2 +- .../roadmap/phases/phase-26-F/README.md | 2 +- .../roadmap/phases/phase-26-H/README.md | 125 +++++++----------- .../roadmap/phases/phase-26-H/TASKS.md | 70 +--------- .../roadmap/phases/phase-27-joinir/README.md | 8 ++ .../roadmap/phases/phase-27-joinir/TASKS.md | 7 + docs/development/runtime/NUMERIC_ABI.md | 2 +- .../runtime/system-hakorune-subset.md | 2 +- .../troubleshooting/using-resolution.md | 2 +- docs/guides/contributing-docs.md | 2 +- docs/guides/loopform.md | 2 +- docs/reference/environment-variables.md | 2 +- docs/reference/execution-backend/p2p_spec.md | 2 +- src/tests/mir_funcscanner_ssa.rs | 2 +- tools/nyfmt_smoke.sh | 2 +- 41 files changed, 157 insertions(+), 220 deletions(-) create mode 100644 docs/development/roadmap/phases/README.md create mode 100644 docs/development/roadmap/phases/phase-27-joinir/README.md create mode 100644 docs/development/roadmap/phases/phase-27-joinir/TASKS.md diff --git a/AGENTS.md b/AGENTS.md index 6cc63a9a..8f193efd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 デバッグの入口まとめ` セクション) diff --git a/CLAUDE.md b/CLAUDE.md index 17ba0f54..1acf9ab3 100644 --- a/CLAUDE.md +++ b/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 } // 段階移行で破壊的変 - `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 } // 段階移行で破壊的変 - 🎯 **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 } // 段階移行で破壊的変 - 🤝 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/)へ diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index c33b67e0..cbaa1f2c 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -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 ... ` を受理。`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 契約が同じになるように揃える。 @@ -548,27 +548,35 @@ Rust 側は LoopForm v2 / Stage‑B fib / Stage‑1 UsingResolver 構造テス **目的** - 制御構造(if / loop / break / continue / return)を **関数呼び出し+継続** に正規化する中間層(JoinIR)を設計し、LoopForm v2 / PHI / ExitLiveness の負担を将来軽くする足場を作る。 - 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/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) で削除対象とする。 - 残タスクは別フェーズへ: diff --git a/README.md b/README.md index 4fa2c44a..3c83d2ca 100644 --- a/README.md +++ b/README.md @@ -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/)** --- diff --git a/crates/nyash_kernel/README.md b/crates/nyash_kernel/README.md index ef957509..2aa0a9d4 100644 --- a/crates/nyash_kernel/README.md +++ b/crates/nyash_kernel/README.md @@ -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)* \ No newline at end of file +*Documentation: [ChatGPT5 NyRT→NyKernel Design](../../docs/private/roadmap2/phases/phase-15/chatgpt5-nyrt-kernel-design.md)* \ No newline at end of file diff --git a/docs/archive/code/MIR_BUILDER_MODULARIZED.md b/docs/archive/code/MIR_BUILDER_MODULARIZED.md index 90466108..c00f7134 100644 --- a/docs/archive/code/MIR_BUILDER_MODULARIZED.md +++ b/docs/archive/code/MIR_BUILDER_MODULARIZED.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. diff --git a/docs/archive/phases/phase-10.6/PLAN.txt b/docs/archive/phases/phase-10.6/PLAN.txt index 0b742845..9e0b0ef8 100644 --- a/docs/archive/phases/phase-10.6/PLAN.txt +++ b/docs/archive/phases/phase-10.6/PLAN.txt @@ -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) 参照リンク diff --git a/docs/archive/phases/phase-15/planning/sequence.md b/docs/archive/phases/phase-15/planning/sequence.md index 101e75ed..165db579 100644 --- a/docs/archive/phases/phase-15/planning/sequence.md +++ b/docs/archive/phases/phase-15/planning/sequence.md @@ -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/スモークで常時検証する。 diff --git a/docs/archive/reports/analysis_report.md b/docs/archive/reports/analysis_report.md index a6e7606e..932aeb81 100644 --- a/docs/archive/reports/analysis_report.md +++ b/docs/archive/reports/analysis_report.md @@ -738,7 +738,7 @@ fn test_mir_executor(mut exec: E) { - **CLAUDE.md**: 開発ガイド (Phase 15戦略) - **CURRENT_TASK.md**: 現在進行中の作業 -- **docs/development/roadmap/phases/phase-15/**: 実行器統一化計画 +- **docs/private/roadmap2/phases/phase-15/**: 実行器統一化計画 --- diff --git a/docs/development/analysis/LOOPFORM_PHI_NEXT_STEPS.md b/docs/development/analysis/LOOPFORM_PHI_NEXT_STEPS.md index 5a337cdd..45c5a7d5 100644 --- a/docs/development/analysis/LOOPFORM_PHI_NEXT_STEPS.md +++ b/docs/development/analysis/LOOPFORM_PHI_NEXT_STEPS.md @@ -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 diff --git a/docs/development/architecture/join-ir.md b/docs/development/architecture/join-ir.md index 0428e317..30676a25 100644 --- a/docs/development/architecture/join-ir.md +++ b/docs/development/architecture/join-ir.md @@ -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)の設計ノート。 diff --git a/docs/development/architecture/mir-logs-observability.md b/docs/development/architecture/mir-logs-observability.md index d942be94..05d5aec1 100644 --- a/docs/development/architecture/mir-logs-observability.md +++ b/docs/development/architecture/mir-logs-observability.md @@ -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` diff --git a/docs/development/cleanup/CLEANUP_PLAN_2025-11-04.md b/docs/development/cleanup/CLEANUP_PLAN_2025-11-04.md index 08e96b44..7628f832 100644 --- a/docs/development/cleanup/CLEANUP_PLAN_2025-11-04.md +++ b/docs/development/cleanup/CLEANUP_PLAN_2025-11-04.md @@ -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/で管理 ``` **メリット**: メンテナンス負荷削減 diff --git a/docs/development/cleanup/CLEANUP_REPORT_2025-11-04.md b/docs/development/cleanup/CLEANUP_REPORT_2025-11-04.md index e11638cb..39929c86 100644 --- a/docs/development/cleanup/CLEANUP_REPORT_2025-11-04.md +++ b/docs/development/cleanup/CLEANUP_REPORT_2025-11-04.md @@ -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 - **状態**: ✅ 完了 diff --git a/docs/development/current/main/phase-21.7-naming-ssot-checklist.md b/docs/development/current/main/phase-21.7-naming-ssot-checklist.md index aa733ad0..16f705f6 100644 --- a/docs/development/current/main/phase-21.7-naming-ssot-checklist.md +++ b/docs/development/current/main/phase-21.7-naming-ssot-checklist.md @@ -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 ルール diff --git a/docs/development/proposals/stage1-architecture-improvement.md b/docs/development/proposals/stage1-architecture-improvement.md index 9de06371..f4a2c314 100644 --- a/docs/development/proposals/stage1-architecture-improvement.md +++ b/docs/development/proposals/stage1-architecture-improvement.md @@ -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本体 diff --git a/docs/development/roadmap/phases/README.md b/docs/development/roadmap/phases/README.md new file mode 100644 index 00000000..60c4f03f --- /dev/null +++ b/docs/development/roadmap/phases/README.md @@ -0,0 +1,7 @@ +# Roadmap Phases + +開発フェーズごとの設計メモと進捗ログをまとめる正本ディレクトリだよ。 + +- ここが最新の正本。`docs/private/roadmap2` 側は将来的なミラー候補として検討中だよ。 +- 各フェーズの README/TASKS はこの階層直下にある `phase-XX` ディレクトリを参照してね。 +- JoinIR 以降の新規フェーズ(26-H, 27 など)もここに追加していくよ。 diff --git a/docs/development/roadmap/phases/phase-10.6/PLAN.txt b/docs/development/roadmap/phases/phase-10.6/PLAN.txt index 0b742845..9e0b0ef8 100644 --- a/docs/development/roadmap/phases/phase-10.6/PLAN.txt +++ b/docs/development/roadmap/phases/phase-10.6/PLAN.txt @@ -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) 参照リンク diff --git a/docs/development/roadmap/phases/phase-15.5/implementation-status.md b/docs/development/roadmap/phases/phase-15.5/implementation-status.md index 8bb0d3b8..198a2124 100644 --- a/docs/development/roadmap/phases/phase-15.5/implementation-status.md +++ b/docs/development/roadmap/phases/phase-15.5/implementation-status.md @@ -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文書) ✅ ``` ### 変更済みファイル ✅ diff --git a/docs/development/roadmap/phases/phase-15/planning/sequence.md b/docs/development/roadmap/phases/phase-15/planning/sequence.md index 101e75ed..165db579 100644 --- a/docs/development/roadmap/phases/phase-15/planning/sequence.md +++ b/docs/development/roadmap/phases/phase-15/planning/sequence.md @@ -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/スモークで常時検証する。 diff --git a/docs/development/roadmap/phases/phase-21.8/README.md b/docs/development/roadmap/phases/phase-21.8/README.md index 84556a78..af285688 100644 --- a/docs/development/roadmap/phases/phase-21.8/README.md +++ b/docs/development/roadmap/phases/phase-21.8/README.md @@ -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` を参照。 diff --git a/docs/development/roadmap/phases/phase-25.1/README.md b/docs/development/roadmap/phases/phase-25.1/README.md index ea61d554..a3d4e9a1 100644 --- a/docs/development/roadmap/phases/phase-25.1/README.md +++ b/docs/development/roadmap/phases/phase-25.1/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)のホットフィックス計画。*** diff --git a/docs/development/roadmap/phases/phase-25.1a/README.md b/docs/development/roadmap/phases/phase-25.1a/README.md index 1eb3fc35..64b1101b 100644 --- a/docs/development/roadmap/phases/phase-25.1a/README.md +++ b/docs/development/roadmap/phases/phase-25.1a/README.md @@ -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 パス。*** diff --git a/docs/development/roadmap/phases/phase-25.1b/README.md b/docs/development/roadmap/phases/phase-25.1b/README.md index 8cfe4fa0..77bfec32 100644 --- a/docs/development/roadmap/phases/phase-25.1b/README.md +++ b/docs/development/roadmap/phases/phase-25.1b/README.md @@ -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 チェック)で確認する。 diff --git a/docs/development/roadmap/phases/phase-25.1q/README.md b/docs/development/roadmap/phases/phase-25.1q/README.md index 5597cc27..e84b633a 100644 --- a/docs/development/roadmap/phases/phase-25.1q/README.md +++ b/docs/development/roadmap/phases/phase-25.1q/README.md @@ -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 など互換レイヤ限定、と位置づける。 diff --git a/docs/development/roadmap/phases/phase-25.3-funcscanner/README.md b/docs/development/roadmap/phases/phase-25.3-funcscanner/README.md index d1d4c9b7..ce6a5fea 100644 --- a/docs/development/roadmap/phases/phase-25.3-funcscanner/README.md +++ b/docs/development/roadmap/phases/phase-25.3-funcscanner/README.md @@ -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` 今回の結果: diff --git a/docs/development/roadmap/phases/phase-25/README.md b/docs/development/roadmap/phases/phase-25/README.md index 1c9b1a54..7a333b32 100644 --- a/docs/development/roadmap/phases/phase-25/README.md +++ b/docs/development/roadmap/phases/phase-25/README.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 関連の環境変数。 diff --git a/docs/development/roadmap/phases/phase-26-F/README.md b/docs/development/roadmap/phases/phase-26-F/README.md index e9271817..a84e3f02 100644 --- a/docs/development/roadmap/phases/phase-26-F/README.md +++ b/docs/development/roadmap/phases/phase-26-F/README.md @@ -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 など)に分離する方針を書き切る。 diff --git a/docs/development/roadmap/phases/phase-26-H/README.md b/docs/development/roadmap/phases/phase-26-H/README.md index 6dd626e1..588e7dac 100644 --- a/docs/development/roadmap/phases/phase-26-H/README.md +++ b/docs/development/roadmap/phases/phase-26-H/README.md @@ -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 で通す(トグル付き)。 -- ExitLiveness や BodyLocal PHI の一部を LoopFnIR 側に吸収し、PHI/Loop 周辺の箱を徐々に減らす。 -- VM/LLVM 実行経路に JoinIR を統合するのは 27.x 以降を想定し、当面は「設計+ミニ実験」に留める。 +- 26-H のスコープは「設計+最小 JoinIR ダンプ+ JoinIrMin 向け自動変換(トグル付き)」まで。 +- 27.x では、次のような範囲を候補とする: + - JoinIR 変換器を拡張し、FuncScanner / Stage‑B など本番寄りのループを 1〜2 個 JoinIR で通す(トグル付き)。 + - ExitLiveness や BodyLocal PHI の一部を LoopFnIR 側に吸収し、PHI/Loop 周辺の箱を徐々に減らす。 + - VM/LLVM 実行経路に JoinIR を統合するのは 27.x 以降を想定し、当面は「設計+ミニ実験」に留める。 diff --git a/docs/development/roadmap/phases/phase-26-H/TASKS.md b/docs/development/roadmap/phases/phase-26-H/TASKS.md index 67f75657..96b05c34 100644 --- a/docs/development/roadmap/phases/phase-26-H/TASKS.md +++ b/docs/development/roadmap/phases/phase-26-H/TASKS.md @@ -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` - - [ ] ルールは 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 の設計+ミニ実験フェーズが進行中」という事実だけ共有しておくね。 diff --git a/docs/development/roadmap/phases/phase-27-joinir/README.md b/docs/development/roadmap/phases/phase-27-joinir/README.md new file mode 100644 index 00000000..c7adaaac --- /dev/null +++ b/docs/development/roadmap/phases/phase-27-joinir/README.md @@ -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 リポジトリ側のドキュメントを参照する運用にするよ。 diff --git a/docs/development/roadmap/phases/phase-27-joinir/TASKS.md b/docs/development/roadmap/phases/phase-27-joinir/TASKS.md new file mode 100644 index 00000000..cee20671 --- /dev/null +++ b/docs/development/roadmap/phases/phase-27-joinir/TASKS.md @@ -0,0 +1,7 @@ +# Phase 27 — JoinIR 実用化タスク(public stub) + +Phase 27 の具体的なタスクチェックリストは、private 側に正本を置いているよ。 + +- 正本: `docs/private/roadmap2/phases/phase-27-joinir/TASKS.md` + +development 側では「JoinIR 実用化フェーズが進行中」という情報だけを公開して、細かいタスク管理やログは private リポジトリ側で行う方針だよ。 diff --git a/docs/development/runtime/NUMERIC_ABI.md b/docs/development/runtime/NUMERIC_ABI.md index 79105a37..2d0708f9 100644 --- a/docs/development/runtime/NUMERIC_ABI.md +++ b/docs/development/runtime/NUMERIC_ABI.md @@ -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` diff --git a/docs/development/runtime/system-hakorune-subset.md b/docs/development/runtime/system-hakorune-subset.md index 2600e5bd..2c885ce3 100644 --- a/docs/development/runtime/system-hakorune-subset.md +++ b/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` diff --git a/docs/development/troubleshooting/using-resolution.md b/docs/development/troubleshooting/using-resolution.md index 0b97632f..fccbb871 100644 --- a/docs/development/troubleshooting/using-resolution.md +++ b/docs/development/troubleshooting/using-resolution.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) diff --git a/docs/guides/contributing-docs.md b/docs/guides/contributing-docs.md index 169bb6be..8e5a58ff 100644 --- a/docs/guides/contributing-docs.md +++ b/docs/guides/contributing-docs.md @@ -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 diff --git a/docs/guides/loopform.md b/docs/guides/loopform.md index f68957ce..e89be16e 100644 --- a/docs/guides/loopform.md +++ b/docs/guides/loopform.md @@ -140,4 +140,4 @@ Selfhost compiler prepass(恒等→最小正規化) - 条件を満たす場合のみ「非代入→代入」の順でボディを再構成します(意味は不変)。 参考 -- docs/development/roadmap/phases/phase-17-loopform-selfhost/ +- docs/private/roadmap2/phases/phase-17-loopform-selfhost/ diff --git a/docs/reference/environment-variables.md b/docs/reference/environment-variables.md index 082630a7..acca3f8b 100644 --- a/docs/reference/environment-variables.md +++ b/docs/reference/environment-variables.md @@ -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/) diff --git a/docs/reference/execution-backend/p2p_spec.md b/docs/reference/execution-backend/p2p_spec.md index 66a17e93..57b91f58 100644 --- a/docs/reference/execution-backend/p2p_spec.md +++ b/docs/reference/execution-backend/p2p_spec.md @@ -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概要 diff --git a/src/tests/mir_funcscanner_ssa.rs b/src/tests/mir_funcscanner_ssa.rs index ae57083f..987937e8 100644 --- a/src/tests/mir_funcscanner_ssa.rs +++ b/src/tests/mir_funcscanner_ssa.rs @@ -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"); } diff --git a/tools/nyfmt_smoke.sh b/tools/nyfmt_smoke.sh index 3d25279b..16df4d2e 100644 --- a/tools/nyfmt_smoke.sh +++ b/tools/nyfmt_smoke.sh @@ -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/^/ * /'