Skip to content

GC: make the multi-age nursery moving #447

Description

@chrisbbreuer

Parent: #134
Extends: #145
Depends on: #144
Related: #446
Blocks: #147, #246

The production age-three nursery currently reclaims and promotes without relocating surviving young cells. The README removal gate requires a moving nursery whose copying/promotion path reuses the exact relocation contract and remains safe during mid-script no-GIL minor collection.

Acceptance

  • Copy surviving young cells between age spaces and promote terminal-age survivors with stable IDs and failure-atomic forwarding metadata.
  • Rewrite precise roots, old-to-young remembered edges, young-to-young edges, weak/finalization state, handles, interpreter/baseline/optimizer stack maps, and embedding roots during every moving minor cycle.
  • Preserve persistent-card correctness and eliminate stale from-space pointers before mutators resume; verify the full relocation inventory after each stress cycle.
  • Coordinate bounded parallel mid-script minor rendezvous across shared-realm mutators without a context GIL, including allocation failure and collector abort recovery.
  • Keep conservative stacks and opaque native frames explicitly pinned or fail closed; never infer interior/base pointers from untyped words.
  • Add age-by-age promotion, weak/ephemeron/finalizer, JIT deopt/OSR, native handle, fault-injection, leak, no-GIL, TSan, and long-running mutation tests.
  • Publish exact-parent pause, throughput, bytes-copied, promotion, retained-backing, and timeout evidence; update the release matrix and README only from committed artifacts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions