Skip to content

GC roadmap: make minor GC structurally cheap #1090

Description

@andrewtdiz

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions