ext-link is failing on every PR based on current main, and the failure is main-side rather than any one PR's.
Symptom — cargo test --release --no-run for perry-ext-fetch fails to link:
perry_runtime...global_this_file_thunk+0x80: undefined reference to `js_file_new'
perry_runtime...global_this_headers_thunk+0x78: undefined reference to `js_headers_init_from_value'
perry_runtime...global_this_request_thunk+0x255: undefined reference to `js_headers_init_from_value'
perry_runtime...global_this_response_thunk+0x13c: undefined reference to `js_headers_init_from_value'
collect2: error: ld returned 1 exit status
error: could not compile `perry-ext-fetch` (lib test) due to 1 previous error
Some runs also show js_blob_new and js_fetch_notify_signal_aborted.
Evidence that it is not a single PR's fault: the identical failure appears on unrelated branches — e.g. perf/issue-8079-guarded-param-specialization (#8079's branch) and fix/moving-gc-rooting-sweep (#8131), whose diffs share no files. Of the open PRs sampled, four fail ext-link and one older one (based on an earlier main) passes.
Why it matters: ext-link exists precisely because cargo-test's scope keeps perry-ext-* out of the fan-out (#7656, after #7650). A gate that is red for every PR is one that no PR can be blocked by in practice — the same shape as #8092.
perry-runtime's global_this fetch thunks reference symbols that live outside it, so the fix is presumably to make perry-ext-fetch's link surface provide them (or to gate the thunks on the same feature that provides the definitions).
ext-linkis failing on every PR based on currentmain, and the failure is main-side rather than any one PR's.Symptom —
cargo test --release --no-runforperry-ext-fetchfails to link:Some runs also show
js_blob_newandjs_fetch_notify_signal_aborted.Evidence that it is not a single PR's fault: the identical failure appears on unrelated branches — e.g.
perf/issue-8079-guarded-param-specialization(#8079's branch) andfix/moving-gc-rooting-sweep(#8131), whose diffs share no files. Of the open PRs sampled, four failext-linkand one older one (based on an earliermain) passes.Why it matters:
ext-linkexists precisely becausecargo-test's scope keepsperry-ext-*out of the fan-out (#7656, after #7650). A gate that is red for every PR is one that no PR can be blocked by in practice — the same shape as #8092.perry-runtime'sglobal_thisfetch thunks reference symbols that live outside it, so the fix is presumably to makeperry-ext-fetch's link surface provide them (or to gate the thunks on the same feature that provides the definitions).