Files
hakorune/docs/private/roadmap/phases/phase-20.12/SMOKES.md

63 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Phase 20.12 — Smokes / Benches
代表スモーク
- AOT: `aot_cli_emit_exe.sh`PASS
- AOT: dist/lib 既定探索FFI`aot_c_api_ffi_dist_lib_default.sh`環境次第でPASS/未整備はSKIP
- VM : Runner 決定/採用(観測のみ)
- AOT: emitexe の MIR 保存(前処理後)— `emit_exe_mir_prep_fold_binop.sh`
- dev/quick 既定: `HAKO_AOT_PREP=1`, `HAKO_AOT_PREP_LANG=1``HAKO_SAVE_MIR=1` 推奨)
- STRICT: `strict_print_const_exe.sh`print(1000) → PASS
- STRICT: `strict_print_loop_exe.sh`(ループ最終値 1000 → PASS、PHIローカライズ適用
- STRICT: `strict_print_if_merge_exe.sh`if-merge 後値 1000 → PASS、PHI正道
- STRICT: `strict_print_loop_small_exe.sh`(ループ内の連続 print: 1,2,3
- STRICT: `strict_print_diamond_exe.sh`(ダイアモンド合流後に 1000 を print
- STRICT: `strict_print_if_same_value_exe.sh`then/else 同値→合流後 1000 を print
- STRICT: `strict_print_nested_if_exe.sh`(ネスト if で 1000→ print
- STRICT: `strict_print_elseif_chain_exe.sh`else-if チェーンで 1000 を print
- STRICT: `strict_print_three_way_exe.sh`(三択分岐の合流で 1000 を print
Using ResolverRunner ゲート)
- `using_resolver_apply_gate_vm.sh`HAKO_USING_RESOLVER_APPLY=1 時に短文 [using-resolver] apply: を観測。ビルドによっては SKIP
- `using_resolver_missing_ok_vm.sh`(存在しないモジュール名 → modules_error 短文を観測)
- `using_resolver_private_strict_fail_vm.sh`パスUsing×private strict。ビルドによっては pathusing が strict をバイパス → SKIP
- `using_resolver_ambiguous_vm.sh`using_paths 上で同名モジュールが複数候補 → ambiguous 短文、実行は継続)
JSON v0 Unify観測・ゲートON
- `json_v0_unify_suite_vm.sh`SMOKES_ENABLE_JSON_V0_UNIFY=1 で代表群を実行。PASS/一部SKIP容認、bringup 状態を観測)
マイクロベンチ(計画)
- EXEC 基準)
- loop_sum: 1e7 加算ループ
- call_chain: 小関数チェーンの反復
- array_walk: 連続アクセスstride=1
- VMPython 基準)
- loop_sum_vm, call_chain_vm, array_walk_vm
観測・判定
- EXE: C 比 ≥ 0.6×(ファイル出力/STDOUT一致の確認つき
- VM : Python と ±20%JSON形式で中央値出力→比較
Loop parity (new)
- `tools/smokes/v2/profiles/integration/parity/loop_side_effect_vm_llvm.sh`
- Purpose: ensure VM/LLVM parity for a minimal side-effect loop (prints 0..2)
- Gate: harness-first; NYASH_ENABLE_LOOPFORM=1 by default for this smoke (parity-safe)
- `tools/smokes/v2/profiles/integration/parity/loop_continue_vm_llvm.sh`
- Purpose: VM/LLVM parity for `continue` in small loop (prints 0,2)
- Gate: harness-first; LoopForm gate optional
- `tools/smokes/v2/profiles/integration/parity/loop_break_vm_llvm.sh`
- Purpose: VM/LLVM parity for `break` in small loop (prints 0,1)
- Gate: harness-first; LoopForm gate optional
IR-level checks (new)
- `tools/smokes/v2/profiles/quick/rust-aot/llvm_ir_bench_externs_void_i64.sh`
- Purpose: Ensure bench externs are declared/called as `void(i64)` (`hako_console_log_i64`, `hako_bench_noop_i64`, `hako_bench_use_value_i64`).
- Method: grep optimized IR for declare/call signatures; harness-only.
- `tools/smokes/v2/profiles/quick/rust-aot/llvm_ir_tail_musttail_placement.sh`
- Purpose: Tail-call hint (`tail call`) is emitted when in true tail position and strict gate is ON.
- Gate: `NYASH_LLVM_TAILCALL=1 NYASH_LLVM_TAILCALL_STRICT=1` (harness-only)
- `tools/smokes/v2/profiles/quick/rust-aot/llvm_ir_no_unused_method_name_global.sh`
- Purpose: Unused method results prefer by-id path (no `@unified_method_*` globals materialized).
- Gate: `NYASH_LLVM_METHOD_BY_ID=1` (harness-only)
- `tools/smokes/v2/profiles/quick/rust-aot/llvm_ir_constructor_new_i64x_unknown_box.sh`
- Purpose: Unknown user box constructor lowers to `nyash.env.box.new_i64x`.