• v0.19.0 Stable

    petrbalvin released this 2026-08-02 21:11:30 +00:00 | 260 commits to main since this release

    Runtime ABI checks: the second pillar of Phase 3. The JIT trampoline now
    has an ABI-checking variant that sets sentinels in the callee-saved registers
    (BP, R14) before entering the assembled function and verifies they survive on
    return, plus a red-zone canary (128 bytes below SP filled with 0xA5) that
    detects any illegal write below the stack pointer.

    Added

    • verify: CallChecked / Kernel.CallFuncChecked — ABI-checking JIT call
      with sentinel registers and red-zone canary; returns an ABIReport
      (BPClobbered, R14Clobbered, RedZoneHit).
    • verify: the raw leaveJITCheckedRaw trampoline — a TEXT symbol with no
      ABIInternal wrapper (address obtained via GLOBL/DATA), so the JIT
      function's RET lands directly in the check code and sees the registers
      exactly as the function left them.
    • Tests: deliberate BP/R14 clobberers detected; both go-lz4 kernels
      confirmed ABI-clean (BP preserved, R14 preserved, red zone intact).
    Downloads