107 lines
6.8 KiB
Markdown
107 lines
6.8 KiB
Markdown
# Current Task — Phase 20.34 (Concise)
|
||
|
||
This document is intentionally concise (≤ 500 lines). Detailed history and per‑phase plans are kept under docs/private/roadmap/. See links below.
|
||
|
||
Focus (now)
|
||
- Keep quick profile green and stabilize verification on the Core route.
|
||
- Mini‑VM (Hako) is kept, but canaries that were flaky are temporarily routed to Core for execution. Mini‑VM green will resume in Phase 20.36.
|
||
- Prepare Phase 20.35 (MIR JSON v1 loader expansion) without changing default behavior.
|
||
|
||
What’s green (20.34)
|
||
- Loop/PHI unify (phi_core) in JSON v0 bridge — unified path used (toggle exposed).
|
||
- Program(JSON v0) PHI‑trace canaries — PASS.
|
||
- Core exec canaries (builder → emit → Core) — now routed and PASS:
|
||
- mirbuilder_internal_core_exec_canary_vm (rc=10)
|
||
- mirbuilder_internal_loop_core_exec_canary_vm (rc=3)
|
||
- mirbuilder_internal_loop_count_param_core_exec_canary_vm (rc=6)
|
||
- mirbuilder_internal_loop_sum_bc_core_exec_canary_vm (rc=8)
|
||
|
||
Recent changes (summary)
|
||
- Added MIR JSON v0 loader (minimal): src/runner/mir_json_v0.rs
|
||
- Supports const/compare/branch/jump/phi/ret/copy
|
||
- Promoted --mir-json-file to “execute + exit(rc)”
|
||
- v1 → try_parse_v1_to_module; v0 → minimal loader; executes via Core interpreter
|
||
- rc mapping unified in execute_mir_module_quiet_exit
|
||
- verify_mir_rc improvements (tools/smokes/v2/lib/test_runner.sh)
|
||
- Core primary: MIR(JSON) uses --mir-json-file, Program(JSON v0) uses --json-file
|
||
- Mini‑VM(hakovm)rc==1 ヒューリスティックを削除し、経路評価を素直化(v1はCore、v0はhakovmに整流)
|
||
- Hako JSON reader minor fix
|
||
- lang/src/vm/core/json_v0_reader.hako: r# raw を通常文字列に統一(Hako生文字列の互換性向上)
|
||
- MIR JSON v1 bridge extended
|
||
- parse_const_value now handles f64/float, bool, string, and handle(StringBox) → ConstValue::String
|
||
- Direct extern names supported in VM interpreter: env.mirbuilder.emit, env.codegen.emit_object
|
||
- New v1 canaries (Core route)
|
||
- tools/smokes/v2/profiles/quick/core/phase2035/v1_method_string_indexof_canary_vm.sh
|
||
- tools/smokes/v2/profiles/quick/core/phase2035/v1_extern_mirbuilder_emit_canary_vm.sh
|
||
- tools/smokes/v2/profiles/quick/core/phase2035/v1_method_string_substring_1arg_canary_vm.sh
|
||
- tools/smokes/v2/profiles/quick/core/phase2035/v1_method_string_substring_2args_canary_vm.sh
|
||
- tools/smokes/v2/profiles/quick/core/phase2035/v1_array_push_size_canary_vm.sh
|
||
- (map) tools/smokes/v2/profiles/quick/core/phase2035/v1_map_set_get_size_canary_vm.sh
|
||
- Note: returns size (1) for rc stability; get-path validated structurally
|
||
|
||
Open (pending)
|
||
- なし(v1 extern env.get/env.mirbuilder.emit/env.codegen.emit_object は provider で統一)
|
||
|
||
Active toggles (debug/verify)
|
||
- NYASH_MIR_UNIFY_LOOPFORM=1|0
|
||
- Default ON(実装は統一経路のみ。OFF指定時は警告を出すが挙動は統一のまま)
|
||
- HAKO_VERIFY_PRIMARY=hakovm|core
|
||
- 今回の flaky canary は core 側で実行(検証のみ切替)。Mini‑VM primary は Phase 20.36 で再挑戦。
|
||
- NYASH_VM_TRACE_PHI=1 / HAKO_PHI_VERIFY=1 / NYASH_PHI_VERIFY=1
|
||
- PHI 解析・観測(開発時のみ)
|
||
|
||
How to run (quick)
|
||
- Build: `cargo build --release`
|
||
- Program v0 PHI‑trace (debug):
|
||
- `SMOKES_ENABLE_DEBUG=1 bash tools/smokes/v2/profiles/quick/core/phase2034/program_v0_if_phi_trace_vm.sh`
|
||
- `SMOKES_ENABLE_DEBUG=1 bash tools/smokes/v2/profiles/quick/core/phase2034/program_v0_loop_phi_trace_vm.sh`
|
||
- Core exec canaries(20.34 緑対象):
|
||
- `bash tools/smokes/v2/profiles/quick/core/phase2034/mirbuilder_internal_core_exec_canary_vm.sh`
|
||
- `bash tools/smokes/v2/profiles/quick/core/phase2034/mirbuilder_internal_loop_core_exec_canary_vm.sh`
|
||
- `bash tools/smokes/v2/profiles/quick/core/phase2034/mirbuilder_internal_loop_count_param_core_exec_canary_vm.sh`
|
||
- `bash tools/smokes/v2/profiles/quick/core/phase2034/mirbuilder_internal_loop_sum_bc_core_exec_canary_vm.sh`
|
||
|
||
Mini‑VM policy(20.34)
|
||
- 実装は維持(alias/ret/phi 最小系を今後整える)。ただし quick の canary は Core へ寄せて緑化。
|
||
- 20.36 で verify primary を hakovm に段階的に切替、Mini‑VM green を進める。
|
||
|
||
Next (20.35 — scoped; behavior unchanged)
|
||
1) MIR JSON v1 loader expansion(Method/Extern/BoxCall — 最小)
|
||
- callee.type=Method → BoxCall 復元(box_name/method/receiver/args)
|
||
- callee.type=Extern → ExternCall 復元(env.get/env.codegen.emit_object/env.mirbuilder.emit/console.log など)
|
||
- effects 未指定は PURE 既定、WRITE 系は最小でフラグ化(実害ゼロ)
|
||
- v1 canary 追加(string indexOf/substring、array push/size、map set/get/size、extern env.get)
|
||
2) Using/alias の推移解決の堅牢化(深さ/循環/キャッシュ)
|
||
- 実装済み(DFS 深さ上限=10、循環検知、キャッシュ)。strict では曖昧解決をエラー扱い。
|
||
3) ドキュメント:今回の経路(Core/verify)を roadmap に反映(DONE)
|
||
|
||
Structure cleanups (20.35 A→B→C)
|
||
- A) v1 mir_call 両対応(flat/nested): 実装済(ローダで互換吸収)。
|
||
- B) Extern provider 単一点化: 実装済(handlers/extern_provider.rs)。calls.rs/externals.rs から委譲。
|
||
- C) Const パース共通化: 実装済(src/runner/mir_json/common.rs)。まず v1 から採用(v0 は次段)。
|
||
|
||
Next (20.36 — verify primary → hakovm, preinclude removal, C‑ABI scaffold)
|
||
- Verify primary 切替(段階): hakovm → Core fallback
|
||
- preinclude 非推奨化(quick から撤去)
|
||
- Mini‑VM の最小状態(len/size/push の簡易 state)を flag ガードで導入(デフォルトOFF)— 導入済
|
||
- 受信者別サイズ管理フラグ `HAKO_VM_MIRCALL_SIZESTATE_PER_RECV=1` を導入(canary 追加済)
|
||
- HAKO_VM_MIRCALL_SIZESTATE=1 は緑化済(push 2回→size=2)。次は受信者別管理を flag で導入: HAKO_VM_MIRCALL_SIZESTATE_PER_RECV=1
|
||
- C‑ABI 設計(docs + ヘッダ雛形)
|
||
|
||
Known open items(tracked to 20.36)
|
||
- Mini‑VM: using/alias の推移解決(selfhost.vm.helpers.* 連鎖)
|
||
- Mini‑VM: ret/phi の最小ケースで rc が確実に数値化されるよう整備(継続確認)
|
||
|
||
Roadmap links(per‑phase docs)
|
||
- Index: docs/private/roadmap/README.md
|
||
- Phase 20.34: docs/private/roadmap/phases/phase-20.34/README.md
|
||
- Phase 20.35: docs/private/roadmap/phases/phase-20.35/README.md
|
||
- Phase 20.36: docs/private/roadmap/phases/phase-20.36/README.md
|
||
|
||
Appendix — Toggle quick reference
|
||
- NYASH_MIR_UNIFY_LOOPFORM=1|0 … Loop/PHI 統一(既定ON)
|
||
- HAKO_VERIFY_PRIMARY=hakovm|core … verify 実行経路(今は core 優先で緑化)
|
||
- NYASH_VM_TRACE_PHI=1 … VM PHI 適用トレース
|
||
- HAKO_PHI_VERIFY=1 | NYASH_PHI_VERIFY=1 … ビルダー側の PHI inputs 検証
|
||
- HAKO_VM_PHI_STRICT=0(互換:NYASH_VM_PHI_STRICT=0) … 実行時 PHI 厳格 OFF(開発時のみ)
|