ReviewOS

zig-utils/zig-js

GC generations: benchmark policy and publish terminal evidence

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

Parent: #145 Depends on: #363, #364 Related: #44, #49, #97, #147

Choose and publish the production generational policy from reproducible evidence rather than a single diagnostic profile.

Acceptance

  • Run an alternating-order age-one/age-three matrix across ephemeral, mixed-survival, high-survival, automatic 4/8 MiB thresholds, and shared no-GIL 256/512 KiB tranches.
  • Commit 112 raw samples plus a generated report with pause, throughput, backing, reclamation, survival, promotion, rendezvous, and timeout telemetry.
  • Enforce warmup, 50 ms timing floor, seven samples, <=15% dispersion, exact checksum/byte conservation, zero full-GC contamination, and zero hidden failures/timeouts.
  • Keep the selected age-three policy within the accepted regression bounds against age one.
  • Pass nursery strong/weak/finalization, heap-limit fault, long parallel-allocation, Debug, ReleaseSafe, leak, and suppression-free focused TSan gates.
  • Update the concise README only with the generated accepted headline.
  • Close #145 and advance its #134/#147 release gate.

Completion evidence

  • Hidden-failure and repeated-global-lexical benchmark fixes: c34b8474
  • Raw/report/README publication: f9993dd6
  • Release matrix GC gates: 871c2245
  • Single-mutator age-three throughput: 0.96–1.01x age-one control
  • Max elapsed RSD: 1.21%
  • Shared no-GIL pause max: 0.391 ms
  • Cooperative parks: 2,781; timeouts: 0
  • Debug + ReleaseSafe nursery: 12/12 each, zero leaks
  • ReleaseSafe heap-limit/fault paths: 19/19, zero leaks
  • ReleaseSafe long parallel-GC soak: 3/3, zero leaks/UAF
  • Focused multi-age TSan: 3/3, zero races/leaks
9 days ago

Benchmark foundation is now on main through f4134b56: zig-gc #38 adds cumulative multi-cycle byte telemetry; zig-js records automatic single-mutator nursery pauses; the new alternating age-one/age-three harness covers ephemeral, two-cycle mixed, eight-cycle high-survival, automatic 4/8 MiB thresholds, and shared no-GIL 256/512 KiB tranches. It enforces exact checksums, byte conservation, no measured full-GC contamination, 50 ms timing floor, dispersion/regression bounds, and zero rendezvous timeouts, with generated TSV/report/README output. Quick matrix and 7 Python validation tests pass. The first downstream run exposed two concurrent-old-marker tests whose bounded pressure is now correctly handled by the age-three nursery; f4134b56 isolates those old-space witnesses by disabling the nursery, and their 7-test Debug/ReleaseSafe filter passes locally.

9 days ago

Completed in c34b8474, f9993dd6, and 871c2245. The exact 112-row publication, concise README score, bounded-pause/zero-timeout evidence, and Debug/ReleaseSafe/fault/soak/TSan gates are green.

Sign in to comment on this issue.