Bisected on macOS host builds (each step: cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static, then compile + run the gap test and diff against node):
Symptom on test_gap_anon_shape_boxed_capture (final line of the test, the sharedCell() function whose class captures and mutates a boxed local):
node : shared cell : 12,12
perry: shared cell : undefined,10
i.e. c.read() returns undefined (the method's read of the captured count box) and the count++ bumps performed through the class method are lost (count += 10 lands on 0 → 10). Exactly the per-evaluation-capture shape #6470 touched:
function sharedCell() {
let count = 0;
class Counter {
bump() { count++; }
read() { return count; }
}
const c = new Counter();
c.bump(); c.bump();
count += 10;
return c.read() + "," + count;
}
test_gap_5952_mixin_factory_binding fails at the same commit (not bisect-verified line-by-line, but parent passes / be2e23f fails).
Impact: these two tests are untriaged in test-parity/known_failures.json, so conformance-smoke shards 5 and 7 fail on every PR branched from current main (observed twice on an unrelated GC PR, #6494 — both rounds, deterministic). Main's own scheduled run hasn't flagged it (the last three daily runs died earlier on a rustup-download infra error in cargo-test).
Bisected on macOS host builds (each step:
cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static, then compile + run the gap test and diff against node):b4b47ba34(parent, "fix(codegen): make FFI provenance part of the object cache entry"): both tests pass (byte-identical to node).be2e23f86("fix(hir): per-evaluation captures for class declarations in function bodies (class declarations in function bodies share one class across evaluations — effect's makeException masks every error as TimeoutException #6465) (fix(hir): per-evaluation captures for class declarations in function bodies (#6465) #6470)"): both tests fail.77def5305(current main tip): both tests fail identically.Symptom on
test_gap_anon_shape_boxed_capture(final line of the test, thesharedCell()function whose class captures and mutates a boxed local):i.e.
c.read()returnsundefined(the method's read of the capturedcountbox) and thecount++bumps performed through the class method are lost (count += 10lands on 0 → 10). Exactly the per-evaluation-capture shape #6470 touched:test_gap_5952_mixin_factory_bindingfails at the same commit (not bisect-verified line-by-line, but parent passes / be2e23f fails).Impact: these two tests are untriaged in
test-parity/known_failures.json, so conformance-smoke shards 5 and 7 fail on every PR branched from current main (observed twice on an unrelated GC PR, #6494 — both rounds, deterministic). Main's own scheduled run hasn't flagged it (the last three daily runs died earlier on a rustup-download infra error in cargo-test).