Files
hakorune/docs/private/roadmap/phases/phase-20.11/TASKS.md

4.2 KiB
Raw Blame History

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

  • AotBox プラグインcompile/2, link/3— 内部は libhako_aot を呼び出し(共有コア)

  • AotBox スモークquick/plugins — 代表 PASS.o/.exe の生成確認)

  • AOT FFI既定OFFHAKO_AOT_USE_FFI=1 で FFI 選択(最小命令→段階拡張)

    • UNSUPPORTED stub + 代表スモーク(期待=非ゼロ・短文観測)
    • dist/lib 既定探索libhako_llvmc_ffi.*と代表スモークSKIP基準
    • RustBackend const/binop/retAdd/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方針整備時は PASSdocs 追記)

  • 配布: dist テンプレ構成bin/lib/include/docsを生成するタスクshape-only

    • tools/dist/make.sh 追加shape-only; WARN運用
  • CLI: --emit-exe 実装と docs 反映emit-onlyFailFast方針

  • CLI: --emit-exe 代表スモークquick/llvm

  • emit-exe PreflightFailFast— ny-llvmc/NyRT/libs の事前検証

  • Runner plugin init: HAKO_PLUGIN_CONFIG エイリアス対応+二重初期化の早期 return観測ログの安定化

— LLVM Script Builder計画に追加・optin

  • lang 側の箱化Module/Function/Builder/Types/Emit— README + LAYER_GUARD を含む
  • MVP v0const/binop/ret— 最小 JSON 直構築Facade/Wrapperで exe=0 を確認IR直構築は後続
  • v0 スモーク2本const_ret/binop— 生成→リンク→実行=0 を確認Facade/Wrappers
  • compare/branch/phiv1 最小)— 代表スモークPASSFacade/Builder
  • call/externv2— hako_* C-ABI のみ受理、FailFast維持
  • 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.mdSSOT/型/命令対応/ENV/責務境界/制限)

Implementation Checklist

  1. Structure & Contracts
  • 入口=AotBoxプラグイン優先、小ライブラリ直結はフォールバック
  • 既定挙動不変FFIはopt-in、Runner 決定はゲートOFF
  • FailFastemit-exe preflight: ny-llvmc/NyRT/libs を即時検証)
  • dist/bin/lib/include/docs の責務分離と最小テンプレ生成
  1. Docs & Smokes20.11 最終)
  • c-abi-aot.md: プラグイン優先/FFI探索/ENVnative/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 決定(正/負)スモーク一式(観測)
  1. CI (shape-only)
  • run_local_checks: dist テンプレ生成WARN/ externs SSOT 生成STRICT時のみFAIL

Notes

  • Cranelift 路線は実験Phase 20.11 では入口のみ議論/オプション設置)。
  • Windows: MinGW/clang 依存時は SKIP/短文の方針を継続。