2.1 KiB
2.1 KiB
Frozen Toolchain Strategy — Balanced Plan (Freeze‑First + Dual‑Run)
Purpose
- 捨てる(削減%)ではなく「契約を凍結」して自立へ前進する。Rust は発射台と保険、Hakorune は既定へ段階移行。
Principles
- Freeze the contracts first: JSON v0 MIR の形状と Core VM 最小意味論(const/binop/compare/branch/jump/phi/call代表)を先に固定。
- Dual‑Run migration: 同一契約に Rust 実装と Hakorune 実装を並走(プロファイル/ENVで切替)。パリティはスモークと Fail‑Fast で担保。
- Metrics shift: 「削減%」ではなく「契約準拠カバレッジ%」「自己ビルド再現率」を主要指標にする。
Phases (20.15 → 20.17)
- 20.15 Selfhost α(契約の骨格と計測)
- 固定: JSON v0 スキーマ、Core 最小意味論、診断タグ(Fail‑Fast)。
- 並走: emit→Core canary(既定OFF)、Rust/LLVM は parity 検証。
- 受け入れ: 契約準拠 canary 全緑・used‑before‑def 検出が安定。
- 20.16 Frozen v1(Stage 0→1→2)
- Stage 0: Rust で frozen‑v1 をビルド
- Stage 1: frozen‑v1 で同一ソースを再ビルド
- Stage 2: ハッシュ/正規化 diff 合意(再現性)
- ツールチェーン最小一式(compiler/core, runtime/minimal‑vm, stdlib/minimal)
- 20.17 自立化(既定切替・TTL整理)
- dev/quick 既定を Selfhost へ切替。Rust は fallback/検証。
- Runner 側の診断整形は TTL 撤去・Core に集約。ENV は HAKO_* 優先。
Acceptance Metrics
- 契約準拠カバレッジ: JSON v0 項目・Core ops の準拠率を canary/スモークで可視化。
- 自己ビルド再現性: Stage1→Stage2 の再現度(hash/size/正規化)。
- パリティ: Core vs LLVM/RustVM の差分検出(代表ケース)
Gates (default OFF)
- HAKO_GATE_C_CORE / NYASH_GATE_C_CORE — Gate‑C → Core 実行
- SMOKES_ENABLE_CORE_CANARY / SMOKES_ENABLE_2015 — 追加 canary 有効化
- HAKO_SELFHOST — Selfhost ルート(Stage 実行)
Rollback
- 既定切替は ENV/プロファイルで即戻し可能。契約は維持(後方互換)