90 lines
6.2 KiB
Markdown
90 lines
6.2 KiB
Markdown
## Phase 20.11 — Smokes (予定)
|
||
|
||
- AOT(小ライブラリ / プラグイン / FFI)
|
||
- quick/llvm/aot_c_lib_compile_link_run.sh(小ライブラリ)
|
||
- 依存: ny-llvmc + cc/clang。期待: compile→link→run=0、短文errは現状と同型
|
||
- quick/plugins/aot_plugin_compile_link_vm.sh(AotBox)
|
||
- 依存: AotBox プラグイン + ny-llvmc + cc/clang(未整備は SKIP)
|
||
- quick/llvm/aot_c_api_compile_link_run_ffi.sh(FFI 経路)
|
||
- 依存: libhako_llvmc_ffi(未実装は SKIP)
|
||
- quick/rust-aot/aot_c_api_ffi_unsupported.sh(FFI 現状: UNSUPPORTED 固定の観測)
|
||
- 期待: `HAKO_AOT_USE_FFI=1` で非ゼロRC(短文は err 側、ここでは RC のみ確認)
|
||
|
||
- Runner 決定フック(観測のみ)
|
||
- quick/core/using_resolver_decision_vm.sh
|
||
- `HAKO_USING_DECISION_FROM_LANG=1` で起動
|
||
- 期待: 短文 `[using-resolver] decision: OK`(負例は `decision: FAIL`)
|
||
- 備考: バイナリが未更新の場合は SKIP(runner hook 未実装)
|
||
- quick/core/using_resolver_decision_apply_ok_vm.sh(採用フック: 成功)
|
||
- `HAKO_USING_DECISION_APPLY=1` で起動
|
||
- 期待: 短文 `[using-resolver] decision-apply: OK`(最小実装:挙動不変)
|
||
- quick/core/using_resolver_decision_apply_fail_vm.sh(採用フック: 負例 強制)
|
||
- `HAKO_USING_DECISION_APPLY=1 HAKO_USING_DECISION_FORCE_FAIL=1` で起動
|
||
- 期待: 短文 `[using-resolver] decision-apply: FAIL`
|
||
- quick/core/using_resolver_decision_apply_in_vm.sh(採用フック: JSON 読込み)
|
||
- `HAKO_USING_DECISION_IN=<json>` を指定
|
||
- 期待: 短文 `[using-resolver] decision-apply: OK`
|
||
- quick/core/using_resolver_decision_apply_fetch_vm.sh(採用フック: langから形状合成)
|
||
- `HAKO_USING_DECISION_FETCH=1` で tiny-program 合成→FileBox 経由で JSON を取得
|
||
- 期待: 短文 `[using-resolver] decision-apply: OK|NOOP`
|
||
|
||
- 配布テンプレ(shape-only)
|
||
- tools/ci/run_local_checks.sh に dist テンプレ生成の存在チェック(WARN)
|
||
|
||
Notes
|
||
- 既定挙動は変えない(FFI/決定フックとも opt‑in)。
|
||
- Windows は依存満たない場合 SKIP を許容。
|
||
|
||
— LLVM Script Builder(予定・opt‑in) —
|
||
- quick/llvm/llvm_script_const_ret.sh(HAKO_LLVM_SCRIPT_BUILDER=1)
|
||
- 期待: const→ret の exe 生成・実行=0。生成は AotBox/小ライブラリ経路を再利用可。
|
||
- quick/llvm/llvm_script_binop_cmp.sh(HAKO_LLVM_SCRIPT_BUILDER=1)
|
||
- 期待: 加算→比較→ret の最小分岐。未実装は Fail‑Fast(UNSUPPORTED)。
|
||
- quick/rust-aot/llvm_script_v1_compare_branch_skip.sh(v1: compare/branch プレースホルダ)
|
||
- 期待: 現状 SKIP(将来の実装に置き換え)
|
||
- quick/rust-aot/llvm_script_v1_phi_skip.sh(v1: phi プレースホルダ)
|
||
- 期待: 現状 SKIP(将来の実装に置き換え)
|
||
- quick/rust-aot/llvm_script_v0_facade_const_ret.sh(Facade: v0 ビルダ → AotFacade)
|
||
- 期待: const→ret の exe 生成・実行=0。内部は JSON 直構築で依存レス。
|
||
- quick/rust-aot/llvm_script_v0_facade_binop.sh(Facade: v0 ビルダ → AotFacade)
|
||
- 期待: (2+3)→ret の exe 生成・実行=0。内部は JSON 直構築で依存レス。
|
||
- quick/rust-aot/llvm_script_v0_facade_const_overrides.sh(overrides:selfhost.*での解決経路)
|
||
- 期待: overrides 経由でも const→ret の exe 生成が通る(依存=ny-llvmc/AotBox)。
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_ret0.sh(AotFacade ラッパ: ret0)
|
||
- 期待: ret0 の exe 生成・実行=0。Facade 直下の薄いAPIでJSON生成→委譲。
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_binop.sh(AotFacade ラッパ: (2+3)→ret)
|
||
- 期待: (2+3)→ret の exe 生成・実行=0。Facade 直下の薄いAPIでJSON生成→委譲。
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_console_{log,warn,error}.sh(AotFacade ラッパ: console系)
|
||
- 期待: 環境が揃っていれば EXE 生成・実行=0。未整備の環境は [SKIP](link unavailable)
|
||
- Linux では `CC="clang -fuse-ld=lld"` または `HAKO_AOT_LDFLAGS="-no-pie -Wl,-z,notext"` 推奨
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_time_now_ms.sh(AotFacade ラッパ: env.time.now_ms)
|
||
- 期待: now_ms 呼出しを含む JSON を生成し exe 生成・実行=0(戻り値は0に正規化)
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_json_stringify.sh(AotFacade ラッパ: JSON.stringify)
|
||
- 期待: nyash.json.stringify_h を介した呼出しで exe 生成・実行=0(戻り値は0に正規化)
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_compare_eq.sh(AotFacade ラッパ: compare Eq 最小)
|
||
- 期待: compare(Eq)が含まれる JSON を生成し exe 生成・実行=0(compare結果は 0 に正規化して返す)。
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_compare_branch.sh(Facade: compare→branch)
|
||
- 期待: 分岐含有の JSON を生成し exe 生成・実行=0
|
||
- quick/rust-aot/llvm_aot_facade_wrappers_phi_if.sh(Facade: phi-if 最小)
|
||
- 期待: PHI 含有の JSON を生成し exe 生成・実行=0
|
||
- quick/rust-aot/llvm_script_v1_builder_compare_branch.sh(Builder→Facade)
|
||
- 期待: Builder 生成JSONを Facade で compile/link→実行=0
|
||
- quick/rust-aot/llvm_script_v1_builder_ret0.sh(Builder→Facade)
|
||
- 期待: ret0 の JSON を生成し exe 生成・実行=0
|
||
- quick/rust-aot/llvm_script_v1_builder_phi_if.sh(Builder→Facade)
|
||
- 期待: PHI 含有の JSON を生成し exe 生成・実行=0
|
||
|
||
— 失敗系(観測) —
|
||
- quick/rust-aot/aot_negative_missing_llvmc.sh
|
||
- 条件: `NYASH_NY_LLVM_COMPILER` を不正パスに指定
|
||
- 期待: compile で非ゼロ(短文は err 側、ここでは RC のみ確認)
|
||
- quick/rust-aot/aot_negative_missing_nyrt.sh
|
||
- 条件: `NYASH_EMIT_EXE_NYRT` を不正ディレクトリに指定
|
||
- 期待: link で非ゼロ(短文は err 側、ここでは RC のみ確認)
|
||
|
||
- Runner 決定(負例拡充)
|
||
- quick/core/using_resolver_decision_apply_in_missing_vm.sh(INファイル欠如)
|
||
- 期待: 短文 `[using-resolver] decision-apply: FAIL`
|
||
- quick/core/using_resolver_decision_apply_in_malformed_vm.sh(IN JSON不正)
|
||
- 期待: 短文 `[using-resolver] decision-apply: FAIL`
|