Files
hakorune/docs/private/roadmap/phases/phase-20.32/README.md
2025-10-31 23:16:27 +09:00

3.5 KiB
Raw Blame History

Phase 20.32 — Runner 移行Hakorune 側への薄いゲート)

目的

  • Rust Runner への依存を段階的に縮小し、Hakorune 側に「薄い Runner ファサードGateC 相当)」を実装する。
  • 既存の VM/Core 実装MIR 実行器は維持。境界JSON v0 受理→MIR 構築→実行)の一部を Hako 側に寄せる。

非目標(本フェーズではやらない)

  • using 解決AST/ファイル)全移行、プラグインローダ全置換、大規模 CLI/ENV 互換カバー。
  • 既定経路の全面切替(既定は Rust を維持。Hako Runner は optin

設計原則(抜粋)

  • BoxFirst / FailFast を継続。副作用境界(ファイル/ENV/プロセス)は箱で隔離、静かなフォールバックは禁止。
  • 既定 OFF のトグルで段階導入。ロールバック容易(小差分・可逆)。
  • 仕様不変VM の意味論は Rust Builder→NyVM(Core) に依存。Hako Runner は橋渡しのみ。

範囲Phase 20.32

  • Hako Runner 薄層lang/src/runner/runner_facade.hako を拡張)
    • 入力: JSON v0--json-file/--ny-parser-pipe 相当)。
    • 出力: 数値 Result を exit code へ反映。Quiet/Noise の ENV を最小受理(NYASH_QUIET など)。
    • 依存: 既存の Core Dispatcher / Interpreter へ委譲。extern は追加しない。
  • Rust Runner 側トグル
    • HAKO_SCRIPT_RUNNER=1既定OFFで Hako Runner を呼び出す経路を追加(呼出し/戻りは既存の GateC と同等)。
  • スモーク
    • GateC(file/pipe) の最小 canaryreturn/binop/ifを Runner(Hako) 経由でも PASS 確認optin

実装項目MVP

  1. Hako: runner_facade.hako を GateC 最小対応へ拡張
    • 受理: JSON v0 文字列/ファイルパス
    • 実行: 既存 Core VM の JSON→実行間接呼び
    • 退出: 数値→exit code、非数値→FailFast
  2. Rust: トグルで Hako Runner を経由
    • HAKO_SCRIPT_RUNNER=1 で file/pipe 両方の分岐に Hako 呼出しを追加
  3. ENV 整理
    • 既定 OFF の静音: NYASH_QUIET=1/HAKO_QUIET=1NYASH_CLI_VERBOSE=0
    • plugins は OFF 既定で通す(本フェーズでプラグイン依存を持ち込まない)
  4. スモーク
    • quick/core に optin 追加: SMOKES_ENABLE_HAKO_RUNNER=1
    • 代表 2 本: file/pipereturn 7 / if→1

次フェーズ(予告: 20.33+

  • CLI/ENV の薄い受理(引数配列・基本オプション)
  • using/前処理の一部箱化ファイル境界のみ、AST結合は後続
  • 子プロセス・再帰ガードを Hako へ移設Rust との並走期間は短期)

受け入れ基準

  • 既定経路Rust Runnerは不変。Hako Runner 経路は optin で quick 緑。
  • GateC 対称file/pipeで数値結果→exit code が一致。
  • イズ最小quiet onかつ FailFast非数値や不正入力は安定診断

トグル一覧(本フェーズ追加)

  • HAKO_SCRIPT_RUNNER=1Rust→Hako Runner 経路に切替)
  • SMOKES_ENABLE_HAKO_RUNNER=1(スモーク optin

リスクと対策

  • 実行器の二重解釈: すべて JSON→MIR→既存 VM/Core 実行に統一し、Hako 側で独自実行はしない。
  • ノイズ差: quiet 環境変数を強制し、Result 行のみ/exit code 対称性を確認。

参考

  • lang/src/runner/runner_facade.hako
  • src/runner/pipe_io.rsGateC 既存挙動)
  • lang/src/vm/core/json_v0_reader.hakoJSON v0 解析ユーティリティ)