Skip to content

fix(ext): ext-crate tests root values through RuntimeHandleScope - #12113

Draft
steinybot wants to merge 3 commits into
PerryTS:mainfrom
steinybot:steiny/ci2-ext-test-roots
Draft

steinybot wants to merge 3 commits into
PerryTS:mainfrom
steinybot:steiny/ci2-ext-test-roots

Conversation

@steinybot

@steinybot steinybot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Merge in this order:

  1. fix(docs): the my-bindings fixture reads buffers inside a no-GC scope #12112
  2. fix(ext): ext-crate tests root values through RuntimeHandleScope #12113 (this PR)
  3. fix(runtime): audit the new raw stores and classify addresses with addr_class #12114
  4. ci: register the dark GC witnesses and isolate the new test counters #12115
  5. refactor: split five files back under the 2000-line cap #12116
  6. fix(runtime): root raw handles across calls and correct the handle ratchets #12117
  7. fix(runtime): instanceof never mints a class object for a builtin id #12118
  8. fix(gc_effects): exempt aHash's random-source init from the indirect-call taint #12119
  9. docs: regenerate the API reference #12120
  10. fix(runtime): clear the gates that #12109 left red #12121
  11. fix(runtime): match node on the gap-suite regressions #12149

Problem

CI on main is red again after #12025. Commits since then broke check, warnings, cargo-test, gc-call-effects, self-test-checkers, gap-suite and fourteen lint steps, so no PR can show a green build. Each later failure in a job was hidden behind an earlier one.

Solution

Fix each breakage in its own PR. Each PR targets main and holds every fix above it in the order list, so the last PR is the one that can run fully green. Merge in order: each diff then shrinks to its own fix.

In this PR

Fixes the rest of warnings. Since 9af2d89 the runtime exports no shadow-stack entry points on native stack-map targets (64-bit apple, linux, windows). The http, net, streams and ws test modules still called them.

Changes

  1. Drop the guards' shadow frames (diff). On these targets the frame rooted nothing. The same change applies to the http, net and streams guards.

  2. Root the values that must survive a collection (diff). The net and http tests hold them in a RuntimeHandleScope. The guards call gc_init(), which registers the runtime-handle scanner that program startup would register.

    struct GcTestGuard {

🤖 Generated with Claude Code

https://claude.ai/code/session_01V5MSmMLJm6sMdSS5r64ds7

steinybot and others added 2 commits October 7, 2026 10:39
read_buffer_bytes takes a NoGc scope since PerryTS#12103, so the fixture no
longer compiled, and the warnings and check jobs stopped there. The
fixture's tests also call runtime-backed perry-ffi functions, so they
take perry-ffi with runtime-link as a dev-dependency, like the ext
crates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V5MSmMLJm6sMdSS5r64ds7
The runtime does not export the shadow-stack entry points on native
stack-map targets. The http, net, streams and ws test modules called
them, so they no longer compiled and the warnings job failed.

On those targets the guards' shadow frames rooted nothing. The net and
http tests now hold the values that must survive a collection in a
RuntimeHandleScope. The guards call gc_init(), which registers the
runtime-handle scanner that program startup would register.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V5MSmMLJm6sMdSS5r64ds7
@coderabbitai

coderabbitai Bot commented Oct 6, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V5MSmMLJm6sMdSS5r64ds7

This branch has not been deployed

No deployments
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