4.2 KiB
Phase 20.11 — Tasks & Checklist
Status: Completed (docs pass); small follow-ups optional
Objectives
- AOT FFI 経路の導入(既定OFF)と短文診断の維持
- Runner → ModuleFunction 決定フック(挙動不変・ゲート)
- 配布レイアウト(bin/dist)と
--emit-exeUX の明文化
Deliverables
-
AotBox プラグイン(compile/2, link/3)— 内部は libhako_aot を呼び出し(共有コア)
-
AotBox スモーク(quick/plugins) — 代表 PASS(.o/.exe の生成確認)
-
AOT FFI(既定OFF)—
HAKO_AOT_USE_FFI=1で FFI 選択(最小命令→段階拡張)- UNSUPPORTED stub + 代表スモーク(期待=非ゼロ・短文観測)
- dist/lib 既定探索(libhako_llvmc_ffi.*)と代表スモーク(SKIP基準)
- RustBackend const/binop/ret(Add/Sub/Mul/Div/Mod)+ aarch64 64bit 即値
- RustBackend 負例スモーク(unsupported binop / malformed JSON)
-
Runner 決定フック:
HAKO_USING_DECISION_FROM_LANG=1ゲート実装(短文観測) -
Runner 決定採用(最小):
HAKO_USING_DECISION_APPLY=1実装(OK/NOOP/FAIL 短文) -
Runner 決定フック: quick 代表スモーク PASS(成功/負例)
-
AOT console ライン: リンク環境未整備は [SKIP](link unavailable)方針/整備時は PASS(docs 追記)
-
配布: dist テンプレ構成(bin/lib/include/docs)を生成するタスク(shape-only)
- tools/dist/make.sh 追加(shape-only; WARN運用)
-
CLI:
--emit-exe実装と docs 反映(emit-only/Fail‑Fast方針) -
CLI:
--emit-exe代表スモーク(quick/llvm) -
emit-exe Preflight(Fail‑Fast)— ny-llvmc/NyRT/libs の事前検証
-
Runner plugin init: HAKO_PLUGIN_CONFIG エイリアス対応+二重初期化の早期 return(観測ログの安定化)
— LLVM Script Builder(計画に追加・opt‑in) —
- lang 側の箱化(Module/Function/Builder/Types/Emit)— README + LAYER_GUARD を含む
- MVP v0(const/binop/ret)— 最小 JSON 直構築(Facade/Wrapper)で exe=0 を確認(IR直構築は後続)
- v0 スモーク2本(const_ret/binop)— 生成→リンク→実行=0 を確認(Facade/Wrappers)
- compare/branch/phi(v1 最小)— 代表スモークPASS(Facade/Builder)
- call/extern(v2)— hako_* C-ABI のみ受理、Fail‑Fast維持
- extern 代表(time.now_ms / JSON.stringify)— Builder/Facade/スモーク追加
- Builder: program_call_time_now_ms_ret0 / program_call_json_stringify_ret0
- Facade: compile_link_call_time_now_ms / compile_link_call_json_stringify
- Smokes: rust-aot wrappers 2本(time.now_ms / JSON.stringify)
- Facade→Builder 委譲(ret_i64)— HAKO_LLVM_SCRIPT_BUILDER=1 で委譲
- JsonShapeToMap.parse の実装(lang/meta)+ 最小スモーク
- SSOT 消費の縮退(fallbackの削減: env.console.log の重複を撤去)
- ドキュメント: guides/llvm-script-builder.md(SSOT/型/命令対応/ENV/責務境界/制限)
Implementation Checklist
- Structure & Contracts
- 入口=AotBox(プラグイン優先)、小ライブラリ直結はフォールバック
- 既定挙動不変(FFIはopt-in、Runner 決定はゲートOFF)
- Fail‑Fast(emit-exe preflight: ny-llvmc/NyRT/libs を即時検証)
- dist/bin/lib/include/docs の責務分離と最小テンプレ生成
- Docs & Smokes(20.11 最終)
- c-abi-aot.md: プラグイン優先/FFI探索/ENV(native/harness/rust/ENTRY/export)追記
- distribution.md: dist/lib 既定探索・起動例・短文診断を追記
- getting-started.md: AOTはAotBox経由のガイドを追加
- quick/rust-aot: emit-exe 代表、FFI dist/lib 既定探索、ENTRY観測のスモーク
- quick/rust-aot: RustBackend 代表(binop add)と負例(unsupported binop / malformed JSON)
- Runner 決定(正/負)スモーク一式(観測)
- CI (shape-only)
- run_local_checks: dist テンプレ生成(WARN)/ externs SSOT 生成(STRICT時のみFAIL)
Notes
- Cranelift 路線は実験(Phase 20.11 では入口のみ議論/オプション設置)。
- Windows: MinGW/clang 依存時は SKIP/短文の方針を継続。