Repository navigation
fix(ts): log only the waker identities Rust specifies in the task fixture - #413
Merged
Merged
Conversation
…ture Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quest-Claim: 7c11b10bb080cbb0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
marked this pull request as ready for review
November 2, 2026 02:48
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 48 minutes. View limit details
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The ts
taskdifferential failed on nixos2 and in the land gate's fixer container ("35417 cases, 3059 panics, 628 differences") and passed in the gate's own container. It made every agent's localjust cired, and it caused the fixer to hand back #387, #393, #394, and #397.The cause is cargo's incremental setting, not Node or the host. On my host the test passes with
incremental = false(set in~/.cargo/config.toml) and reproduces the exact counts withCARGO_INCREMENTAL=1. nixos2 leaves incremental on by default. Copying this host's wasm and translation to nixos2 gives 0 differences under the same Node 24.21.0, so the runtime is not involved.All 628 differences are in the
wakerschecksnoop.will_wake(&noop.clone())andWaker::noop().clone().will_wake(noop).will_wakecompares vtable addresses. A clone's vtable is a promotedconstin another function (core's|_| RawWaker::NOOPclosure; alloc'sclone_wakerversusraw_waker). Rust doesn't keep a const's address unique, so the two copies are equal only when the build puts them in one codegen unit. A non-incremental dev build (16 CGUs) does that here. An incremental build (256 CGUs) doesn't.Approach
The fixture now logs only identities that Rust fixes:
a.will_wake(&a.clone()). The third passes today only because both of alloc's functions land in one CGU, so it has the same hazard.cloneandlentchecks. Those go through the executor'sstaticvtable, which has one address.The doc comment on
wakerssays why these checks are absent. Thetasktest passes withCARGO_INCREMENTALset to 0 and to 1.Impact
Alternatives
CARGO_INCREMENTAL=0orcodegen-units=1indifferential. This keeps the checks, but it pins an arbitrary rustc layout that may change with rustc or opt-level (see the cheaper-differential quest). It would also hide the next unspecified result instead of removing it.Follow-ups
None.
Review
ba726a332af7ba7b0b3f9f93328c00449e09b62c: no findings.Checks
just cipassed locally. Since that run the branch only merged main's quest-only commits and removed this quest.tasktest passes withCARGO_INCREMENTAL=0andCARGO_INCREMENTAL=1. Before the fix,CARGO_INCREMENTAL=1reproduced the 628 differences.🤖 Generated with Claude Code