Goal
Move Perry from tuned generational mark-sweep toward cheap, precise minor GC.
Target invariant:
minor GC cost = live young objects + dirty old cards/pages + mutable roots
not arena size + malloc table + block persistence + sweep walk
Why
Perry already has many of the right pieces: NaN-boxed values, a shadow stack, generation metadata, write-barrier infrastructure, remembered tracking, optional evacuation, and arena reset/deallocation. The next dramatic improvement is to make minor GC structurally cheap instead of continuing to tune the current sweep/block-persistence path.
Child Work
This umbrella tracks the staged work for:
- GC telemetry and heap-shape counters
- Defaultable cheap write barriers and dirty page/card tracking
- Mutable runtime root visitors
- Policy-driven evacuation
- Copying nursery prototype
- Layout descriptors and pointer masks
Child issues will be linked once created.
Verification Bar
Ship the roadmap only when the benchmark matrix proves:
bench_json_roundtrip RSS down materially
bench_gc_pressure pause time down
object_create / binary_trees no regression
perf-comprehensive no mid-round GC outliers
conservatively_pinned_bytes low and trending down
minor pause flat as dead nursery allocation grows
Goal
Move Perry from tuned generational mark-sweep toward cheap, precise minor GC.
Target invariant:
Why
Perry already has many of the right pieces: NaN-boxed values, a shadow stack, generation metadata, write-barrier infrastructure, remembered tracking, optional evacuation, and arena reset/deallocation. The next dramatic improvement is to make minor GC structurally cheap instead of continuing to tune the current sweep/block-persistence path.
Child Work
This umbrella tracks the staged work for:
Child issues will be linked once created.
Verification Bar
Ship the roadmap only when the benchmark matrix proves: