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

90 lines
6.2 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.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.shAotBox
- 依存: AotBox プラグイン + ny-llvmc + cc/clang未整備は SKIP
- quick/llvm/aot_c_api_compile_link_run_ffi.shFFI 経路)
- 依存: libhako_llvmc_ffi未実装は SKIP
- quick/rust-aot/aot_c_api_ffi_unsupported.shFFI 現状: 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`
- 備考: バイナリが未更新の場合は SKIPrunner 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/決定フックとも optin
- Windows は依存満たない場合 SKIP を許容。
— LLVM Script Builder予定・optin
- quick/llvm/llvm_script_const_ret.shHAKO_LLVM_SCRIPT_BUILDER=1
- 期待: const→ret の exe 生成・実行=0。生成は AotBox/小ライブラリ経路を再利用可。
- quick/llvm/llvm_script_binop_cmp.shHAKO_LLVM_SCRIPT_BUILDER=1
- 期待: 加算→比較→ret の最小分岐。未実装は FailFastUNSUPPORTED
- quick/rust-aot/llvm_script_v1_compare_branch_skip.shv1: compare/branch プレースホルダ)
- 期待: 現状 SKIP将来の実装に置き換え
- quick/rust-aot/llvm_script_v1_phi_skip.shv1: phi プレースホルダ)
- 期待: 現状 SKIP将来の実装に置き換え
- quick/rust-aot/llvm_script_v0_facade_const_ret.shFacade: v0 ビルダ → AotFacade
- 期待: const→ret の exe 生成・実行=0。内部は JSON 直構築で依存レス。
- quick/rust-aot/llvm_script_v0_facade_binop.shFacade: v0 ビルダ → AotFacade
- 期待: (2+3)→ret の exe 生成・実行=0。内部は JSON 直構築で依存レス。
- quick/rust-aot/llvm_script_v0_facade_const_overrides.shoverridesselfhost.*での解決経路)
- 期待: overrides 経由でも const→ret の exe 生成が通る(依存=ny-llvmc/AotBox
- quick/rust-aot/llvm_aot_facade_wrappers_ret0.shAotFacade ラッパ: ret0
- 期待: ret0 の exe 生成・実行=0。Facade 直下の薄いAPIでJSON生成→委譲。
- quick/rust-aot/llvm_aot_facade_wrappers_binop.shAotFacade ラッパ: (2+3)→ret
- 期待: (2+3)→ret の exe 生成・実行=0。Facade 直下の薄いAPIでJSON生成→委譲。
- quick/rust-aot/llvm_aot_facade_wrappers_console_{log,warn,error}.shAotFacade ラッパ: 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.shAotFacade ラッパ: env.time.now_ms
- 期待: now_ms 呼出しを含む JSON を生成し exe 生成・実行=0戻り値は0に正規化
- quick/rust-aot/llvm_aot_facade_wrappers_json_stringify.shAotFacade ラッパ: JSON.stringify
- 期待: nyash.json.stringify_h を介した呼出しで exe 生成・実行=0戻り値は0に正規化
- quick/rust-aot/llvm_aot_facade_wrappers_compare_eq.shAotFacade ラッパ: compare Eq 最小)
- 期待: compareEqが含まれる JSON を生成し exe 生成・実行=0compare結果は 0 に正規化して返す)。
- quick/rust-aot/llvm_aot_facade_wrappers_compare_branch.shFacade: compare→branch
- 期待: 分岐含有の JSON を生成し exe 生成・実行=0
- quick/rust-aot/llvm_aot_facade_wrappers_phi_if.shFacade: phi-if 最小)
- 期待: PHI 含有の JSON を生成し exe 生成・実行=0
- quick/rust-aot/llvm_script_v1_builder_compare_branch.shBuilder→Facade
- 期待: Builder 生成JSONを Facade で compile/link→実行=0
- quick/rust-aot/llvm_script_v1_builder_ret0.shBuilder→Facade
- 期待: ret0 の JSON を生成し exe 生成・実行=0
- quick/rust-aot/llvm_script_v1_builder_phi_if.shBuilder→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.shINファイル欠如
- 期待: 短文 `[using-resolver] decision-apply: FAIL`
- quick/core/using_resolver_decision_apply_in_malformed_vm.shIN JSON不正
- 期待: 短文 `[using-resolver] decision-apply: FAIL`