Skip to content

docs: record plan status after statepoints landed, and what blocks adoption - #7318

Merged
proggeramlug merged 1 commit into
mainfrom
docs/7314-plan-status
Aug 3, 2026
Merged

docs: record plan status after statepoints landed, and what blocks adoption#7318
proggeramlug merged 1 commit into
mainfrom
docs/7314-plan-status

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Records where the plan stands after layers 0 and 2 landed, and — more usefully — what does not follow from them.

What #7314 establishes: every root path fails closed (the plain-stackmap fallback deleted, not kept, after it was found surviving in three places that all failed open); metadata re-encoded 4,214,384 → 224,832 B (18.7×), the dominant lever being that 77% of records share the previous record's live set; and 23,301/23,301 safepoints emitted as statepoints with zero fallbacks.

What it does not: binary size is a wash, not a win, and the author is explicit that closing that axis needs fewer roots, not tighter encoding. And statepoints describe emitted frames only — hand-written runtime Rust (layer 3) is untouched, which matters because that is exactly where #7280's fault has already moved (js_native_call_method + 580).

Three things block adoption, none of them code:

  1. Four of five new knobs have no CI arm. PERRY_STATEPOINTS is exercised by gc-native-roots.yml; PERRY_RS4GC, PERRY_GC_SAFEPOINT_ONLY, PERRY_STACKMAP_WALKER and PERRY_STATEPOINT_REPORT appear in no workflow at all. The PR author flagged this themselves.
  2. gc-native-roots is not a required context — reports without blocking.
  3. Native-frame GC roots via LLVM statepoints, opt-in (#7173, #7174) #7314 pushed two files over the size capfunction.rs 847 → 2036, linker.rs 1936 → 2082 — so lint now fails two gates. Both are visible only because ci(lint): let every gate report instead of stopping at the first failure #7306 made gates report independently; before that, one red gate concealed the rest.

Docs only.

Summary by CodeRabbit

  • Documentation
    • Updated the engine plan to reflect the completed LLVM and statepoint layers.
    • Added adoption status, supporting evidence, known limitations, CI requirements, and remaining blockers.
    • Documented the latest matrix multiplication benchmark result.
    • Added a changelog entry summarizing current status and next steps.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 63ac0b17-f6f0-4814-addd-0fce595eb608

📥 Commits

Reviewing files that changed from the base of the PR and between 61a789f and a11533e.

📒 Files selected for processing (2)
  • changelog.d/7317-plan-status-after-statepoints.md
  • docs/engine-plan.md

📝 Walkthrough

Walkthrough

The PR updates GC architecture documentation and the changelog with landed statepoint status, adoption blockers, validation results, limitations, and the shipped matrix_multiply benchmark result.

Changes

GC statepoint adoption status

Layer / File(s) Summary
Status and adoption documentation
docs/engine-plan.md, changelog.d/7317-plan-status-after-statepoints.md
The plan marks LLVM and statepoints as landed, documents adoption status and blockers, and records the shipped benchmark result. The changelog summarizes the same implementation results and remaining blockers.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • PerryTS/perry#7292: Updates related GC correctness and statepoint planning documentation.
  • PerryTS/perry#7314: Introduces the LLVM statepoint and native-frame GC-root implementation documented here.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/7314-plan-status

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant