Files
hakorune/docs/smokes.md

1.2 KiB

Smoke Matrix (Backends)

Policy

  • PyVM: partial coverage only (no async/nowait/await/GC/sync). Used for semantics sanity.
  • LLVM: full coverage via llvmlite harness. Preferred path for async/nowait and Stage-3 control-flow.
  • JIT: not maintained for these smokes (skip).

Curated Smokes

  • Core (LLVM): examples/llvm11_core_smoke.nyash
  • Async (LLVM only):
    • apps/tests/async-await-min/main.nyash
    • apps/tests/async-spawn-instance/main.nyash
    • apps/tests/async-await-timeout-fixed/main.nyash (set NYASH_AWAIT_MAX_MS=100)

Runner Scripts

  • tools/smokes/curated_llvm.sh [--phi-off]
    • --phi-off: enables NYASH_MIR_NO_PHI=1 + verifier relaxor.
  • Archived (not maintained): see tools/smokes/archive/
    • smoke_phase_10_10.sh, smoke_vm_jit.sh, smoke_async_spawn.sh, jit_smoke.sh, aot_smoke_cranelift.sh
    • These target JIT/Cranelift-era flows. Use the curated LLVM runner instead.

Flags

  • NYASH_LLVM_USE_HARNESS=1: use llvmlite harness for AOT.
  • NYASH_MIR_NO_PHI=1 and NYASH_VERIFY_ALLOW_NO_PHI=1: PHI-less MIR (edge-copy) mode.

Notes

  • Marked async smokes should not be run under PyVM/JIT.
  • Legacy/archived smokes may exist; curated runner avoids them.