cargo test -p perry --test gc_property_key_operand_rooting_6935 fails 2 of 3 on main, under the forced-evacuation env the suite exists to exercise (PERRY_GC_FORCE_EVACUATE=1, PERRY_GC_VERIFY_EVACUATION=1):
proxy_target_set_survives_forced_evacuation ......... FAILED
property_key_stored_values_survive_forced_evacuation FAILED
property_key_receivers_survive_forced_evacuation .... ok
The compiled binaries exit 1 with values that came back missing across a collection:
FAIL proxy-forward-set.tag got=undefined want=30
TypeError: Cannot convert undefined or null to object
FAIL dyn-index-set payload missing
FAIL dyn-index-set-toprimitive payload missing
FAIL class-static-computed.tag got=undefined want=6
That is the unrooted-value-across-collection signature this suite was written for (#6935).
Bisected to f14a9e262 — "perf(compile): reduce generated bundle bloat" (#8418).
git bisect run over 526e0b502..74e806502 with a build-and-run script, 4 steps, converged cleanly on that commit. Reproduces locally on macOS (no Linux needed).
Reproduce:
cargo build --profile perry-dev -p perry -p perry-runtime-static -p perry-stdlib-static
PERRY_RUNTIME_DIR=$PWD/target/perry-dev \
cargo test --profile perry-dev -p perry --test gc_property_key_operand_rooting_6935
Ruled out:
The likeliest remaining suspects inside #8418 are the ~304-line run_pipeline.rs restructuring and the collect_modules / json_module split, rather than the opt-in PERRY_LL_PREOPT_OPTNONE_INSTRS path (default 0 = disabled).
Why this is release-gating and why it appeared only now: cargo-test stops at its first failing suite, and the long-standing bun_ffi_stage1 abort (#8479, fixed in #8488) was ahead of it — so this has been masked. With that abort fixed, this is now the visible cargo-test failure, and cargo-test is required by full-suite-gate.
cargo test -p perry --test gc_property_key_operand_rooting_6935fails 2 of 3 onmain, under the forced-evacuation env the suite exists to exercise (PERRY_GC_FORCE_EVACUATE=1,PERRY_GC_VERIFY_EVACUATION=1):The compiled binaries exit 1 with values that came back missing across a collection:
That is the unrooted-value-across-collection signature this suite was written for (#6935).
Bisected to
f14a9e262— "perf(compile): reduce generated bundle bloat" (#8418).git bisect runover526e0b502..74e806502with a build-and-run script, 4 steps, converged cleanly on that commit. Reproduces locally on macOS (no Linux needed).Reproduce:
Ruled out:
-Osdefault. Re-running withPERRY_LL_SIZE_OPT=0(restoring-O3) fails identically. Caveat: that run finished in 4s versus 202s, which looks like object-cache reuse rather than a real recompile — worth re-confirming with a clearednode_modules/.cache/perrybefore treating the-Osarm as fully excluded.extern "C-unwind"work. It fails at74e806502, which predates fix(runtime): remove the C-unwind abort guards from the JS throw path (#8479) #8488, and fix(runtime): extend #8416's C-unwind to the whole closure dispatch family (#8463) #8464 was already reverted by then.PERRY_LL_SIZE_OPT/PERRY_LL_PREOPT_OPTNONE_INSTRSto the hash.The likeliest remaining suspects inside #8418 are the ~304-line
run_pipeline.rsrestructuring and thecollect_modules/json_modulesplit, rather than the opt-inPERRY_LL_PREOPT_OPTNONE_INSTRSpath (default 0 = disabled).Why this is release-gating and why it appeared only now:
cargo-teststops at its first failing suite, and the long-standingbun_ffi_stage1abort (#8479, fixed in #8488) was ahead of it — so this has been masked. With that abort fixed, this is now the visiblecargo-testfailure, andcargo-testis required byfull-suite-gate.