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

6.2 KiB
Raw Blame History

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