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