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

63 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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=1``NYASH_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=1`Rust→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.rs`GateC 既存挙動)
- `lang/src/vm/core/json_v0_reader.hako`JSON v0 解析ユーティリティ)