docs(phase-20.33): Stage‑B Hakorune compiler plan (scope/milestones/criteria)
This commit is contained in:
53
docs/private/roadmap/phases/phase-20.33/README.md
Normal file
53
docs/private/roadmap/phases/phase-20.33/README.md
Normal file
@ -0,0 +1,53 @@
|
||||
# Phase 20.33 — Hakorune コンパイラ完成(Stage‑B 本線)
|
||||
|
||||
目的
|
||||
- Hakorune 製コンパイラを「実用レベル」へ引き上げる(Stage‑B)。
|
||||
- Rust ラインの意味論を変えず、Ny→JSON v0(必要に応じて v1→v0)を安定出力。
|
||||
- 既存 Runner/VM/LLVM(llvmlite, ny-llvmc)と確実に連携する。
|
||||
|
||||
非目標(本フェーズ外)
|
||||
- 大規模最適化(MIR 前処理/LLVM最適化/ベンチ高速化)は Phase‑20.31 継続タスク。
|
||||
- Runner の全面移行(Phase‑20.32 にて段階導入)。
|
||||
|
||||
設計原則
|
||||
- Box‑First / Fail‑Fast / 仕様不変(Rust ラインの意味論は維持)。
|
||||
- 既定 OFF の新トグル。既定挙動は CI/quick 緑のまま。
|
||||
- JSON v0 は 1 行出力(Quiet)。
|
||||
|
||||
スコープ(Stage‑B)
|
||||
- ParserBox(Stage‑2/3)→ pipeline_v2 → FlowEntry(emit-only)
|
||||
- 対応ノード(優先度順)
|
||||
- 必須: const/binop/compare/if/branch/jump/ret/new/boxcall/externcall
|
||||
- 実用: load/store/phi/copy/unary/typeop
|
||||
- 先送り: lambda/async/match(形状のみ or SKIP)
|
||||
- v1 互換: MirCall(v1)→ MirJsonV1Adapter で v0 に降格(当面の橋渡し)
|
||||
|
||||
受け入れ基準
|
||||
- JSON v0 canary(Hako): return/binop/if/index(array/map)緑。
|
||||
- Runner(Gate‑C)で v0 を読み VM 実行 → Rust ラインと同じ出力。
|
||||
- ny-llvmc(llvmlite)で v0→EXE 生成が最小ケースで PASS。
|
||||
- 既定 OFF のため quick/integration は回帰なし。
|
||||
|
||||
マイルストーン
|
||||
1) 入口統一
|
||||
- Main.main → ParserBox.parse → pipeline_v2 → FlowEntry.emit_v0 で 1 行 JSON 出力。
|
||||
- `NYASH_JSON_ONLY=1` 下で静音保証。
|
||||
2) 代表構文の対応
|
||||
- binop/compare/if/index/new/boxcall/externcall を優先実装。
|
||||
- 既存 Stage‑A の canary(binop/if/index)を Stage‑B でも緑化。
|
||||
3) v1→v0 アダプタ
|
||||
- pipeline_v2 が v1(MirCall)を出す経路を活かし、Adapter で v0 へ降格。
|
||||
4) スモーク整備
|
||||
- tools/smokes/v2/profiles/quick/core/selfhost_* を追加(opt‑in)。
|
||||
5) ドキュメント
|
||||
- 本 README / PLAN / CHECKLIST を維持更新。
|
||||
|
||||
リスクと対策
|
||||
- 仕様すり替え禁止: Runner/VM/LLVM の意味論差が出たら Fail‑Fast。
|
||||
- ノイズ: `NYASH_QUIET=1 HAKO_QUIET=1 NYASH_CLI_VERBOSE=0` をデフォルトで inject(emit 経路)。
|
||||
|
||||
参考
|
||||
- lang/src/compiler/pipeline_v2/*
|
||||
- lang/src/compiler/entry/compiler.hako(入口)
|
||||
- lang/src/shared/json/mir_v1_adapter.hako
|
||||
- src/runner/json_v0_bridge/*(Rust 側 v0 ブリッジ)
|
||||
Reference in New Issue
Block a user