Files
hakorune/docs/private/roadmap/phases/phase-20.11

Phase 20.11 — AOT FFI + AotBox Plugin + Runner Decision脱Rust/配布前進)

目的

  • AOT の実用導線を「小ライブラリ + プラグインAotBox」で公開し、将来は「プロセス → インプロセス(FFI)」へ段階移行。
  • UsingResolver の“本配線”へ一歩前進(挙動不変のまま runner→ModuleFunction 決定導線を細く接続)。
  • EXE 配布 UX を整える(ユーザーが自作ハコルネスクリプトを簡単に exe 化できる導線)。

範囲(変更は小差分・既定不変)

  • AOT: 入口は AotBox プラグインcompile/2, link/3を優先。内部で CABI 小ライブラリ → FFI(native/harness/rust) を委譲。
    • 直結の小ライブラリ経路は後方互換として温存(プラグイン未ロード時のフォールバック)。
  • Runner: UsingResolver.resolve/1 の結果JSONを受け取り、Rust 側は検証/整流へ寄せるためのフックをゲート配下に追加。
  • 配布: bin ランチャと dist レイアウトの雛形を整備。OS 別アーティファクトの配置規約を固定。

ゲート

  • HAKO_AOT_USE_FFI=1既定OFF: ny-llvmc を inprocess で呼ぶ FFI 経路に切替(現時点スタブ)。
  • HAKO_AOT_USE_PLUGIN=1既定OFF: emit-exe 経路を AotBox 経由に切替(段階導入・挙動不変)。
  • HAKO_CODEGEN={llvm|cranelift}(既定=llvm: 将来の Cranelift 実験を optin で許可。
  • HAKO_USING_DECISION_FROM_LANG=1既定OFF: runner→ModuleFunction の決定を使用(失敗は FailFast・短文

受け入れ基準(概要)

  • AOT: 小ライブラリ・プラグイン・CLI の3経路が依存あり環境で PASS従来のプロセス版も PASS
  • Runner: 決定フック ON でも挙動不変(短文観測のみ)。負例は FAIL を短文で観測できる。
  • 配布: dist テンプレがビルドで生成可能、bin ランチャで OS 自動委譲が動作。

参照

  • phase-20.10Runner/UsingResolver 観測、c-abi-aot.md、runner-facade.md、env-variables.md
  • plugins/AotBox の配置・ビルド方針)