2.5 KiB
2.5 KiB
Phase 20.12 — Tasks & Checklist (Optimization)
Status: Planned
Objectives
- EXE: C の 60–80% を安定達成
- VM : Python と同程度(±20%)
Deliverables
- AotPrepBox(JSON 正規化/安全な単一ブロック定数畳み込み)
- AotPrepBox in‑place 置換(main 優先→関数走査。first block の instructions を直接置換して const→ret に簡約)
- dev/quick で
HAKO_AOT_PREP/HAKO_AOT_PREP_LANG既定ON(docs/スモーク整合) - VMHotPathBox(軽量ディスパッチ/メソッドマップ事前構築)
- ゲート:
HAKO_AOT_PREP=1,HAKO_VM_FAST_PATH=1(quick 既定ON/env-variables.md 掲載) - マイクロベンチ&スモーク(dist 形状の起動手順つき)
- Docs 追記(getting-started / c-abi-aot / distribution)
- emit-exe 完了時に MIR サイドカーを短文で表示(
[emit-exe] mir: <path>) - HAKO_SAVE_MIR=1 で
<exe>.mir.jsonを保存(HAKO_AOT_PREP=1 時は前処理後のMIRを保存) - subtract ベースライン & in‑process(sum/mul)を代表に昇格(ベンチREADMEに記載)
- PHI Localization(LocalizationPhiBox)導入:単一predは pred 終端値を直接 i64 正規化して使用
- console 降ろしで PhiDispatch→0 の場合に LocalizationPhiBox / pred snapshot フォールバックを実装
- 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)
- STRICT スモーク:print(loop var) / print(if‑merge) の EXE 経路が PASS
Bench Setup
- OS: Linux / macOS(Windows は SKIP 基準)
- リンカ:
clang -fuse-ld=lld推奨(Linux) - 計測:
hyperfineまたは内蔵スクリプトで3回以上の中央値