ReviewOS

zig-utils/zig-js

JIT: publish native baseline and optimizer support on Linux

#485
Open chris opened this 8 days ago ·
8 days ago

Parent: #459 Depends on: #483, #484

Goal

Ship native baseline/optimizer execution on Linux AArch64 and x86-64 with the same W^X, correctness, GC, concurrency, and performance contract as macOS.

Scope

  • Implement Linux executable-memory transitions, page accounting, instruction-cache synchronization, patching/linking, unwind/debug visibility, and retirement through #483.
  • Enable the AArch64 emitter on Linux only after ABI/system-call differences are modeled and gated.
  • Enable #484 x86-64 codegen on Linux with SysV ABI parity.
  • Test static-library embedding, PIE/ASLR, hardened W^X policy, signals/traps, threads, fork policy if supported, and teardown across distributions/kernels in the declared matrix.
  • Collect evidence on real supported hardware; cross-compilation proves only buildability.

No-workaround rules

  • No RWX, /tmp executable file trampoline, JIT library, external assembler, qemu-only performance claim, or platform marked supported while native publication remains zero.

Acceptance

  • Linux AArch64/x86-64 publish real baseline and optimizer artifacts through the same inventories and counters.
  • Full forced-tier, moving-GC, no-GIL, TSan, termination/debugger, OOM/fault, artifact-retirement, unit, test262, PR-249, ABI, and embedding gates pass.
  • #460/#461 publish clean real-hardware evidence with code bytes, compile cost, RSS, and tier attribution.
  • Unsupported kernels/architectures fail closed with an explicit reason and exact lower-tier behavior.
  • CI and local builds use only owned Zig code plus standard Linux OS interfaces.

Foundation

Linux x86-64 already gates portable correctness/TSan; this issue changes only the native publication boundary, not the existing exact fallback.

Sign in to comment on this issue.