Parent: #433\nBlocks: #429\n\nReplace whole-script invalidation waits with generation-scoped executable retirement. Invalidation must close native entry and jettison tiers before resume, while prior execution leases keep only their own generation alive. Later executions must not delay reclamation of older mappings.\n\n## Acceptance\n\n- [x] Separate compilation publication leases from native execution epochs.\n- [x] Rotate the current execution epoch when invalidation begins and retire code/metadata into the old epoch.\n- [x] Reclaim an epoch immediately after its final reader exits, without waiting for later-generation readers.\n- [x] Account live, retired, and reclaimed executable bytes and artifact counts.\n- [x] Prove stale compilers cannot publish across the rotation.\n- [x] Add reader/reset and bounded memory-steady-state normal + TSan evidence.\n
JIT: retire invalidated artifacts by execution epoch
#454Complete in fdb2794 with documentation/evidence in 472920f. Invalidation now separates compilation claims from execution epochs, rotates and jettisons before reopening entry, reclaims each retired generation after its own last reader, and maintains live/retired/reclaimed artifact and executable-byte accounting. A stale compiler cannot publish across rotation; a 32-generation churn witness returns live and retired bytes to zero. Focused normal/TSan gates pass 7/7, and the complete JIT gate passes 171/171 in both modes.
Sign in to comment on this issue.