## Phase 20.12 — Tasks & Checklist (Optimization) Status: Planned Objectives - EXE: C の 60–80% を安定達成 - VM : Python と同程度(±20%) Deliverables - [x] AotPrepBox(JSON 正規化/安全な単一ブロック定数畳み込み) - [x] AotPrepBox in‑place 置換(main 優先→関数走査。first block の instructions を直接置換して const→ret に簡約) - [ ] dev/quick で `HAKO_AOT_PREP`/`HAKO_AOT_PREP_LANG` 既定ON(docs/スモーク整合) - [ ] VMHotPathBox(軽量ディスパッチ/メソッドマップ事前構築) - [x] ゲート: `HAKO_AOT_PREP=1`, `HAKO_VM_FAST_PATH=1`(quick 既定ON/env-variables.md 掲載) - [ ] マイクロベンチ&スモーク(dist 形状の起動手順つき) - [ ] Docs 追記(getting-started / c-abi-aot / distribution) - [x] emit-exe 完了時に MIR サイドカーを短文で表示(`[emit-exe] mir: `) - [x] HAKO_SAVE_MIR=1 で `.mir.json` を保存(HAKO_AOT_PREP=1 時は前処理後のMIRを保存) - [x] subtract ベースライン & in‑process(sum/mul)を代表に昇格(ベンチREADMEに記載) - [x] PHI Localization(LocalizationPhiBox)導入:単一predは pred 終端値を直接 i64 正規化して使用 - [x] console 降ろしで PhiDispatch→0 の場合に LocalizationPhiBox / pred snapshot フォールバックを実装 - [x] predeclare ポリシーの明確化:multi‑pred のみ predeclare(空PHIを回避) - [ ] ProgressGuardBox(NYASH_LLVM_LOOP_PROGRESS_GUARD=1): 進捗未更新ループで latch に i++ を合成(while_.py) - [ ] LoopForm payload 配線(NYASH_ENABLE_LOOPFORM=1): payload_phi に i_next を合流し、確実に進捗を materialize - [ ] PHI wiring 検証強化(empty/incomplete の短文ログ) Acceptance - [ ] EXE: 代表マイクロベンチで C の ≥0.6×(関数呼び出し/ループ/配列) - [ ] VM : Python と ±20% 以内 - [ ] 短文診断/Fail‑Fast維持、既存スモークは緑 - [ ] dev/quick 既定ONで emit‑exe MIR サイドカーの短文・保存内容が安定 - [ ] subtract/in‑process のいずれかで EXE 比率が 0.6× 以上を確認 - [ ] 固定N(小)の new/extern を含むループで EXE が timeout せず完走(Box birth 固定N) - [x] STRICT スモーク:print(loop var) / print(if‑merge) の EXE 経路が PASS Bench Setup - OS: Linux / macOS(Windows は SKIP 基準) - リンカ: `clang -fuse-ld=lld` 推奨(Linux) - 計測: `hyperfine` または内蔵スクリプトで3回以上の中央値