Skip to content

docs(plan): fold in the 2026-08-04 findings - #7397

Merged
proggeramlug merged 2 commits into
mainfrom
docs/plan-update-2026-08-04
Aug 4, 2026
Merged

docs(plan): fold in the 2026-08-04 findings#7397
proggeramlug merged 2 commits into
mainfrom
docs/plan-update-2026-08-04

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Two things this plan treated as measured were not.

Statepoints could not compile on aarch64-ELF at all

A hard failure on a default-on path (aarch64-Linux is inside the target-aware allowed set), from two stacked bugs behind two toolchain ones:

#7390 compact stack-map parser didn't model GNU-as sym = expr — emitted only at -O3, only on ELF
#7390 assembler wasn't told the -mcpu the code generator was told → Graviton SVE rejected
#7388 setup-llvm22 installed llvm-22-dev without clang-22
#7384 workflow re-discovered a toolchain by hand and could land on distro LLVM 18

The transferable part is the repro: the parser is a pure function over assembly text, so what was needed was ELF text, not an ELF machine.

Three of four RS4GC arms had never executed

Not once, in any run. No concurrency group, so a four-arm matrix multiplied on every push and only aarch64 ever reached a runner — which is why it was the only arm ever seen red or green (#7393).

This invalidates conclusions, not just tidiness. Every "the ELF arm is the only one red" statement rested on arms that never ran. Recorded as a fifth way a gate cannot fail: a matrix arm that never reaches a runner presents as platform coverage while reporting nothing.

Layer 1 framing corrected

expr/temp_root.rs::lower_exprs_rooted already implements what the RFC proposes for codegen operands — left-to-right lowering, each finished value rooted across those that follow, gated on any_later_ref_may_trigger_gc. All four arms of lower_call/func_ref.rs use it.

So the codegen half is substantially built, and #7378's scoring says where the gap is: of four bugs found after the RFC, it would catch one — the other three were Layer 3, where RuntimeHandleScope existed but was optional. #7389 is the first structural answer there.

Also folded in

#7392 and #7394 are noted as in-flight elsewhere rather than closed.

Summary by CodeRabbit

  • Documentation
    • Updated the engine plan with the latest status of aarch64-ELF compilation and garbage-collection testing.
    • Documented CI coverage gaps, rooting and type-safety fixes, and remaining Layer 3 work.
    • Added revised findings on memory usage, performance benchmarking, and array-operation bottlenecks.
    • Clarified project sequencing, implementation progress, and validation requirements.

Ralph Küpper added 2 commits August 4, 2026 22:24
Two things this plan treated as measured were not.

Statepoints could not compile on aarch64-ELF at all -- a hard failure on
a default-on path, from two stacked bugs (#7390: the compact stack-map
parser did not model GNU-as `sym = expr`, emitted only at -O3 and only on
ELF; and the assembler was not told the -mcpu the code generator was
told, so Graviton-emitted SVE was rejected) behind two toolchain ones
(#7384, #7388).

And three of the four RS4GC matrix arms had NEVER executed, in any run,
for want of a concurrency group (#7393). Every "the ELF arm is the only
one red" conclusion rested on arms that never reached a runner. That is a
fifth way a gate cannot fail, and it is now written down.

Also folded in: nine Layer 3 rooting fixes and the rule they share
(ordering, not missing roots; a fault that MOVES is a real fix, one that
does not move by a byte was already dead before you rooted it); #7380's
type confusion and the `gc_type == GC_TYPE_OBJECT` generalisation; RSS
-69% (#7377); and the first honest performance measurement -- two
benchmarks that measure nothing (#7395) and the array-store guard's
siting cost (#7396).

The Layer 1 framing is corrected: lower_exprs_rooted already implements
the RFC's proposal for codegen operands, gated on
any_later_ref_may_trigger_gc, and all four arms of func_ref.rs use it. So
the gap is Layer 3, where #7389 supplies the first structural answer.
@coderabbitai

coderabbitai Bot commented Aug 4, 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: fce83fd8-046f-4c1c-8b1a-94603d353f5a

📥 Commits

Reviewing files that changed from the base of the PR and between d5c0c65 and 31e45b1.

📒 Files selected for processing (2)
  • changelog.d/7397-plan-update.md
  • docs/engine-plan.md

📝 Walkthrough

Walkthrough

The engine plan records aarch64-ELF and RS4GC validation gaps, Layer 3 GC correctness findings, RSS and benchmark measurements, methodology requirements, and revised implementation sequencing.

Changes

Engine plan status

Layer / File(s) Summary
Platform and CI validation
docs/engine-plan.md
Documents aarch64-ELF statepoint compilation failures, toolchain corrections, and RS4GC matrix arms that did not execute.
GC correctness status
docs/engine-plan.md
Records nine Layer 3 root-ordering fixes, chained stale sites, a RegExp/ObjectHeader type-confusion path, and updated Layer 1 and Layer 3 status.
Measurement and plan sequencing
docs/engine-plan.md, changelog.d/7397-plan-update.md
Adds RSS results, benchmark validity findings, measurement requirements, and revised sequencing. The changelog summarizes these updates.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description gives detailed findings but omits the required Summary, Changes, Related issue, Test plan, Screenshots, and Checklist sections. Reformat the description with the repository template and add the related issue, verification commands, checkbox status, and applicable screenshots or output.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the documentation plan update and its date-specific findings.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/plan-update-2026-08-04

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.

@proggeramlug
proggeramlug merged commit 530df40 into main Aug 4, 2026
0 of 11 checks passed
@proggeramlug
proggeramlug deleted the docs/plan-update-2026-08-04 branch August 4, 2026 20:26

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/engine-plan.md`:
- Around line 480-501: Update the incident summary to remove `#7380` from the
“Every one was an ordering bug” group, state that the other eight fixes followed
the root-before-allocation and re-read-after rule, and list `#7380` separately as
the type-confusion case described in the following paragraph.
- Around line 630-639: Correct the sequencing in the numbered plan around the
entries beginning “Performance now has a measured starting point” and “CI
hygiene is a correctness input.” Ensure the steps progress consecutively after
step 5, with the existing step 6 positioned or renumbered before these entries
as appropriate, and preserve the content of each item.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c2b6d76f-9434-43f4-bb53-94e9ff3254f1

📥 Commits

Reviewing files that changed from the base of the PR and between d5c0c65 and 31e45b1.

📒 Files selected for processing (2)
  • changelog.d/7397-plan-update.md
  • docs/engine-plan.md

Comment thread docs/engine-plan.md
Comment thread docs/engine-plan.md
Comment on lines +630 to +639
7. **Performance now has a measured starting point, and two traps in front of
it.** `bench_fibonacci`/`bench_bitwise` measure nothing (#7395) — fix or
retire them before any performance claim cites them. `bench_array_ops` is
4.5× behind Node with the array-store guard and growth path dominating
(#7396). **Measure on a quiet host**: a first fix attempt was reverted because
host load hit 55 and its disassembly check matched an absent symbol.

8. **CI hygiene is a correctness input, not housekeeping.** Three of four RS4GC
arms had never executed (#7393). Before citing any matrix as platform
coverage, confirm its arms actually reach a runner.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix the sequencing numbers.

The sequence goes from step 5 to step 7, then step 8, and then step 6 at Line 640. This makes the plan order ambiguous. Renumber the inserted entries or move step 6 before them.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/engine-plan.md` around lines 630 - 639, Correct the sequencing in the
numbered plan around the entries beginning “Performance now has a measured
starting point” and “CI hygiene is a correctness input.” Ensure the steps
progress consecutively after step 5, with the existing step 6 positioned or
renumbered before these entries as appropriate, and preserve the content of each
item.

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