33 lines
2.3 KiB
Markdown
33 lines
2.3 KiB
Markdown
## Plan — Phase 20.11
|
||
|
||
1) AOT 小ライブラリ + AotBox プラグイン(既定 ON: 小ライブラリ/opt-in: プラグイン)
|
||
- 小ライブラリ(libhako_aot)をコアに据え、AotBox プラグイン内部からも同APIを呼び出し(共有コア)。
|
||
- AotBox: `compile/2`(json→obj), `link/3`(obj→exe)。効果 Io。短文診断維持。
|
||
- CLI: `hakorune --emit-exe` は既定プロセス経路、小ライブラリ/プラグイン経路はゲートで選択(将来FFIへ昇格)。
|
||
|
||
2) Runner → UsingResolver 決定フック(挙動不変)
|
||
- ゲート `HAKO_USING_DECISION_FROM_LANG=1` で ModuleFunction の結果(JSON shape)を取得し runner で採用(失敗はFail‑Fast)。
|
||
- Rust 側は検証/整流に寄せ、二重決定を避ける(互換期間は警告のみ)。
|
||
|
||
3) 配布レイアウト・UX 整備
|
||
- bin/ はランチャ(OS委譲)に限定、バイナリは target/ または dist/ に配置。
|
||
- dist/hakorune-<ver>-<os>-<arch>/{bin,lib,include,docs} をテンプレ化。
|
||
- CLI: `--emit-exe`(一発)+ `hako-aot compile/link`(段階)をガイド。
|
||
|
||
4) スモーク/CI 追加
|
||
- quick/llvm/aot_c_lib_compile_link_run.sh(小ライブラリ)
|
||
- quick/plugins/aot_plugin_compile_link_vm.sh(AotBox)
|
||
- quick/core/using_resolver_decision_vm.sh(ゲートONで短文観測)
|
||
- run_local_checks に dist テンプレ shape チェック(strict=warn)
|
||
|
||
5) LLVM Script Builder(Hakorune スクリプト層・段階導入)
|
||
- 目標: Python llvmlite ハーネスを段階的に置換。まずは“最小命令”のIR構築をスクリプトで実装し、生成物は従来の ny-llvmc/リンカで処理。
|
||
- 境界: IR 構築のみ(箱化)。リンク/実行は既存の小ライブラリ/AotBoxが担当。Fail‑Fast(未実装命令は `UNSUPPORTED`)。
|
||
- フォルダ: `lang/src/llvm_ir/`(README + LAYER_GUARD)/ `.../boxes/`(Module/Function/Builder/Types/Emit)
|
||
- ゲート: `HAKO_LLVM_SCRIPT_BUILDER=1`(既定OFF、opt‑in)
|
||
- MVP(緑の順):
|
||
- v0: const/binop/ret(exe = 0 を生成)→ スモーク2本(const_ret / binop)
|
||
- v1: compare/branch/phi(簡易条件分岐)
|
||
- v2: call/extern(hako_* のC-ABIのみ)
|
||
- 受け入れ: 代表スモークPASS、ny-llvmc/ハーネス経路は既存のまま緑維持(opt‑inのみ影響)
|