Files
hakorune/docs/private/roadmap/phases/FROZEN_TOOLCHAIN_STRATEGY.md

2.1 KiB
Raw Blame History

Frozen Toolchain Strategy — Balanced Plan (FreezeFirst + DualRun)

Purpose

  • 捨てる削減ではなく「契約を凍結」して自立へ前進する。Rust は発射台と保険、Hakorune は既定へ段階移行。

Principles

  • Freeze the contracts first: JSON v0 MIR の形状と Core VM 最小意味論const/binop/compare/branch/jump/phi/call代表を先に固定。
  • DualRun migration: 同一契約に Rust 実装と Hakorune 実装を並走(プロファイル/ENVで切替。パリティはスモークと FailFast で担保。
  • Metrics shift: 「削減%」ではなく「契約準拠カバレッジ%」「自己ビルド再現率」を主要指標にする。

Phases (20.15 → 20.17)

  • 20.15 Selfhost α(契約の骨格と計測)
    • 固定: JSON v0 スキーマ、Core 最小意味論、診断タグFailFast
    • 並走: emit→Core canary既定OFF、Rust/LLVM は parity 検証。
    • 受け入れ: 契約準拠 canary 全緑・usedbeforedef 検出が安定。
  • 20.16 Frozen v1Stage 0→1→2
    • Stage 0: Rust で frozenv1 をビルド
    • Stage 1: frozenv1 で同一ソースを再ビルド
    • Stage 2: ハッシュ/正規化 diff 合意(再現性)
    • ツールチェーン最小一式compiler/core, runtime/minimalvm, 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 — GateC → Core 実行
  • SMOKES_ENABLE_CORE_CANARY / SMOKES_ENABLE_2015 — 追加 canary 有効化
  • HAKO_SELFHOST — Selfhost ルートStage 実行)

Rollback

  • 既定切替は ENV/プロファイルで即戻し可能。契約は維持(後方互換)