ReviewOS

zig-utils/zig-gc

Perf: allow whole-run nursery backing reclamation

#42
Closed chris opened this 9 days ago ·
9 days ago

Downstream: zig-utils/zig-js#427 Follows: #17, #20, #32, #33

Disposition: rejected and reverted

The generic prototype grouped consecutive dead same-size cells only for authoritative owned iterators, withdrew classification for the complete run before finalizers, and released storage afterward. Generic bindings retained the per-cell path. It passed the full normal and suppression-free TSan suites as 64d2660.

The required downstream order-balanced exact-parent A/B then rejected the design: eight-lane sweep improved only 0.7%, wall time regressed 0.9%, the candidate won 2/7 pairs, and one lane regressed 1.1%. The hook was unused after zig-js reverted its activation, so zig-gc removed the speculative API in 88ea254, restoring the exact tested parent source.

Completed experiment

  • Define and test the quiescent owned dead-run contract and generic fallback.
  • Preserve finalization, weak processing, payload indexing, stable IDs, accounting, full/minor collection, and teardown ordering.
  • Pass full normal and suppression-free TSan dependency suites.
  • Run the required downstream 1/2/4/8 exact-parent A/B with exact checksums.
  • Revert completely when the material-improvement gate failed.
  • Publish the downstream raw evidence and verdict.
9 days ago

Downstream implementation and exact A/B are now tracked by zig-utils/zig-js#427.

9 days ago

Closed as a measured dead end. The generic contract was correct, but the downstream performance gate failed, so 88ea254 removes the unused API and restores the tested parent tree.

Sign in to comment on this issue.