28 lines
2.1 KiB
Markdown
28 lines
2.1 KiB
Markdown
## 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)を優先。内部で C‑ABI 小ライブラリ → FFI(native/harness/rust) を委譲。
|
||
- 直結の小ライブラリ経路は後方互換として温存(プラグイン未ロード時のフォールバック)。
|
||
- Runner: UsingResolver.resolve/1 の結果(JSON)を受け取り、Rust 側は検証/整流へ寄せるためのフックをゲート配下に追加。
|
||
- 配布: bin ランチャと dist レイアウトの雛形を整備。OS 別アーティファクトの配置規約を固定。
|
||
|
||
ゲート
|
||
- `HAKO_AOT_USE_FFI=1`(既定OFF): ny-llvmc を in‑process で呼ぶ FFI 経路に切替(現時点スタブ)。
|
||
- `HAKO_AOT_USE_PLUGIN=1`(既定OFF): emit-exe 経路を AotBox 経由に切替(段階導入・挙動不変)。
|
||
- `HAKO_CODEGEN={llvm|cranelift}`(既定=llvm): 将来の Cranelift 実験を opt‑in で許可。
|
||
- `HAKO_USING_DECISION_FROM_LANG=1`(既定OFF): runner→ModuleFunction の決定を使用(失敗は Fail‑Fast・短文)。
|
||
|
||
受け入れ基準(概要)
|
||
- AOT: 小ライブラリ・プラグイン・CLI の3経路が依存あり環境で PASS(従来のプロセス版も PASS)。
|
||
- Runner: 決定フック ON でも挙動不変(短文観測のみ)。負例は FAIL を短文で観測できる。
|
||
- 配布: dist テンプレがビルドで生成可能、bin ランチャで OS 自動委譲が動作。
|
||
|
||
参照
|
||
- phase-20.10(Runner/UsingResolver 観測)、c-abi-aot.md、runner-facade.md、env-variables.md
|
||
- plugins/(AotBox の配置・ビルド方針)
|