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

2.4 KiB
Raw Blame History

Phase 20.9 — LLVM Canary Smokes

Purpose

  • Verify wiring of script externs → C symbols (readonly GC) on the LLVM line under gates.

Gates

  • SMOKES_GC_ENV_LLVM=1 — enables GC canaries for LLVM.

Tests

  • tools/smokes/v2/profiles/quick/core/gc_env_stats_llvm.sh

    • Expects JSON containing "safepoints".
  • tools/smokes/v2/profiles/quick/core/gc_env_roots_snapshot_llvm.sh

    • Expects a single integer line.
  • Utilities (gate: SMOKES_UTILS_LLVM=1)

    • tools/smokes/v2/profiles/quick/core/console_warn_error_llvm.sh — expects warn-line and error-line in output
    • tools/smokes/v2/profiles/quick/core/env_local_get_llvm.sh — expects value of SMOKES_ENV_LOCAL_GET
    • tools/smokes/v2/profiles/quick/core/env_local_get_missing_llvm.sh — expects short warn NOT_FOUND (stderr), handle remains 0
    • tools/smokes/v2/profiles/quick/llvm/time_now_ms_exe.sh — EXE canary; prints plausible ms value (> 2000-01-01)
    • tools/smokes/v2/profiles/quick/llvm/diagnostics_mir_emit_failed_exe.sh — EXE compile path emits SMOKES_ERR: mir_emit_failed
    • Parity:
      • tools/smokes/v2/profiles/quick/llvm/parity_console_warn_error_vm_llvm.sh
      • tools/smokes/v2/profiles/quick/llvm/parity_env_local_get_vm_llvm.sh
  • Integrationcore代表

    • tools/smokes/v2/profiles/integration-core/utils_console_warn_error_core.sh — VM↔LLVM warn/error parity
    • tools/smokes/v2/profiles/integration-core/utils_env_local_get_missing_core.sh — VM↔LLVM env.local.get missing parity
    • tools/smokes/v2/profiles/integration-core/env_local_get_exists_core.sh — VM↔LLVM env.local.get exists parity

Prereqs

  • hako_gc_stats / hako_gc_roots_snapshot symbols must be available (linked) when using the harness.

  • If not present, keep gates OFF (tests remain SKIP).

  • Notes

  • VM path has readonly handlers for observability; LLVM canaries are wiring checks only in 20.8/20.9.

  • Utilities: console.warn/error write to stderr; filters normalize noise and do not assert order.

  • env.local.get (missing): current behavior prints 0 (boxed handle=0). Future work may use short diagnostics.

  • When LLVM harness compilation fails, smokes now emit stable short lines:

    • SMOKES_ERR: mir_emit_failed (MIR JSON emission)
    • SMOKES_ERR: llvm_compile_failed (ny-llvmc compilation/link)
    • SMOKES_ERR: llvm_exe_missing (post-compile artifact missing) Use SMOKES_KEEP_LD=1 to keep linker diagnostics.