land #8761: honor exotic indices in Array shift - #8824
Merged
Conversation
added 3 commits
August 25, 2026 14:04
The `lint` job requires a `changelog.d/<PR>-<slug>.md` fragment for any PR that touches `crates/`; #8761 had none, which was the only lint failure on that PR.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthrough
ChangesArray shift behavior
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant ShiftCall
participant js_array_shift_f64
participant shift_array_spec_path
participant IndexedProperties
ShiftCall->>js_array_shift_f64: invoke shift
js_array_shift_f64->>shift_array_spec_path: select exotic path
shift_array_spec_path->>IndexedProperties: HasProperty, Get, Set, Delete
IndexedProperties-->>shift_array_spec_path: property results and side effects
shift_array_spec_path-->>ShiftCall: shifted value or TypeError
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
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.
Lands #8761 (fix(runtime): honor exotic indices in Array shift), original author's commit preserved.
I held this PR on regressions it did not cause
I blocked #8761 on four gap-suite parity regressions and asked the author not to re-baseline. That was the right instinct about baselines, but the wrong attribution — the PR caused none of them.
#8761's CI ran 2026-08-24 17:03–17:25 UTC against
maintip20a388974, and actually reported eight regressions across five shards, not the four I quoted. Two unrelated sibling PRs on the samemainwindow — #8771 and #8776 — report the identical failure set. The cluster is class-instance prototype-chain breakage thatmaincarried at that moment, and it was fixed within hours by #8766 (17:41), #8778 (18:26) and #8780/#8781 (19:27) — #8781's own body namesString(new C()), i.e.test_gap_string_coercion_tostring, one of the eight.So the "shared helper" I suspected was
main, not this PR. CLAUDE.md's own guidance is to attribute a red via a sibling PR on the same base; I did not do that, and the PR sat blocked as a result.Evidence
Full 580-test gap sweep on both arms — clean
main@e043aa294vsmain+ PR — identical toolchain, identical-pset, same target dir, sequential, byte-compared against Node 26.5.1 (matching.node-version):Divergences across all 580 tests: zero. All four originally-named tests pass on both arms, as do the four additional ones from the other shards. Arm A was verified genuinely PR-free (
nmfinds 0shift_array_spec_pathsymbols in itslibperry_runtime.a); arm B's.amtimes were confirmed to move after each edit, so neither arm was measuring a stale archive.The actual blocker
A
lintfailure: "This PR changes crates/ but adds no changelog.d/ fragment." This branch addschangelog.d/8761-array-shift-exotic-indices.md. No baseline was touched, no test deleted, no#[ignore], no version bump.Validation
perry-runtime2690,perry-codegen1252,perry-stdlib120 — all 0 failedKnown coverage gap
15 ext-routed gap tests (http/http2/net/ws/zlib/events) were not compared against Node in either arm — they need
perry-ext-*wrappers built in the same cargo invocation. This matters for this PR specifically, becausejs_array_shift_f64is called fromnode_stream*andevents_on.rs. Their status is identical in both arms (compile_fail, same missing-wrapper reason), so nothing is attributable to the PR, but CI is the authority for those paths.Summary by CodeRabbit
Bug Fixes
Array.prototype.shiftbehavior for sparse arrays, inherited indexed properties, accessors, custom descriptors, and holes.undefinedwhen shifting.Tests
Documentation
Array.prototype.shiftbehavior.