40 lines
2.5 KiB
Markdown
40 lines
2.5 KiB
Markdown
## 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: <path>`)
|
||
- [x] HAKO_SAVE_MIR=1 で `<exe>.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回以上の中央値
|