You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
promise microtask ordering: bare .then() chain resolves after a later combinator #9377
promise_reaction_slot_overflow::degenerate_then_chain_survives_combinator
fails on an ordering difference — both values are correct, the sequence is
reversed:
So it predates the window and is independent of #9226 (the source of the two
regressions fixed in #9372/#9375).
Why it went unnoticed
cargo-test-perry shards run only in the full tier (tags / dispatch /
release branches), never on main. In the Aug-31 full tier six of eight shards
failed early — shard 7 ran 3 of 35 test binaries — so many tests, including this
one, produced no verdict at all. An absent result reads as health.
Reproduces locally
macOS/aarch64 as well as ubuntu-latest, so no Linux-specific repro is needed:
cargo build -p perry -p perry-runtime-static -p perry-stdlib-static
RUST_TEST_THREADS=1 cargo test -p perry --test promise_reaction_slot_overflow
(build the -static wrappers first — otherwise a stale archive yields a
commit-coherence refusal rather than a test result)
Blocking
full-suite-gate fails on it, so it blocks any release cut until fixed or
triaged.
Closing: fixed in #9570 (landed via merge train #9573 on 2026-09-02). The allocation-free PromiseAllState side table was drained before the ordinary inline reaction slot; registration order is now preserved, the inverse-order case is covered, and the #9385 ignore is removed.
Activity
test: ignore two pre-existing cargo-test-perry failures (#9377, #9378) (
fix(runtime): restore promise and cache release gates (PerryTS#9377, P…
fix(runtime): restore promise and cache release gates (#9377, #9378)
proggeramlug commentedon Sep 2, 2026
Closing: fixed in #9570 (landed via merge train #9573 on 2026-09-02). The allocation-free PromiseAllState side table was drained before the ordinary inline reaction slot; registration order is now preserved, the inverse-order case is covered, and the #9385 ignore is removed.