batch: land #8838, #8839, #8843, #8845 - #8847
Merged
Merged
Conversation
added 10 commits
August 25, 2026 23:26
This was referenced Aug 26, 2026
|
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 (25)
📝 WalkthroughWalkthroughThe change adds guarded ECS packed-loop lowering with exact ChangesGuarded ECS packed-loop fast path
Array slice behavior
Node-API host design
Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant LoopLowerer
participant ECSGuard
participant Uint32Columns
participant ProvenViewAccess
LoopLowerer->>ECSGuard: request guarded column admission
ECSGuard->>Uint32Columns: validate owners, kinds, lengths, and entity prefix
Uint32Columns-->>ECSGuard: return column addresses or generic-path result
ECSGuard-->>LoopLowerer: return guard descriptor
LoopLowerer->>ProvenViewAccess: lower checked Uint32 reads and stores
Suggested reviewers: ✨ 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 was referenced Aug 26, 2026
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.
Batch landing of four reviewed PRs, validated once as a single merged tree (rebased onto
b83a903e3and re-validated aftermainmoved mid-run).Audit notes
#8839 is in the same family as #8833, whose submitted form carried a real soundness bug, so it got the same scrutiny — and its design avoids that trap. Invalidation is driven by a runtime flag (
store i1 1, ptr %proof_dirty) emitted at the call-emission choke point, so it is genuinely path-sensitive at execution rather than a flow-insensitive compile-time map keyed by local id. It also fails closed:dirty_stable_packed_revalidations_before_callskips dirtying only for the narrow allowlistllvm.*/js_shadow_*/js_write_barrier*(all record-only, none can collect), and because the guard isdirect_callee.is_some_and(…), an indirect call passesNone, does not match, and dirties.active_stable_packed_proofs_are_dirtied_only_by_executed_non_intrinsic_callscovers exactly those cases includingcall_indirect, and asserts ordering (fabsbefore the dirty store).Fixes applied while landing (both #8845's)
gc_store_site_inventoryflagged four raw stores inexpr/proven_view_access.rs. The classification the author intended is correct — these are typed-array backing-store writes (I16/I32/F32/DOUBLEinto an element pointer, no GC pointer involved) — and aGC_STORE_AUDIT(POINTER_FREE)marker was already present above thematch, but the scanner's proximity window only reaches the first arm. Added per-arm markers rather than adding an allowlist entry.check_file_size:expr/index_set.rsreached 2003 lines. Extracted the 398-line packed-loop store lowering block (lower_packed_f64_loop_store_value,lower_packed_numeric_loop_store_value,lower_packed_f64_range_loop_index_set,lower_packed_numeric_loop_index_set) intoexpr/index_set_packed_loop.rs, following the existing flatindex_set_*sibling convention. Now 1605.Validation (merged tree)
perry-codegen1266,perry-runtime2698,perry-stdlib120,perry-hir337 — all 0 failedPERRY_GC_FORCE_EVACUATE=1 PERRY_GC_VERIFY_EVACUATION=1): 16 failed on the batch and 16 on cleanmain— same-commit A/B, so none is introduced here; those 16 are tests that assert non-evacuating behaviour and fail under those knobs by designdfchecked before and after every run; no result produced under ENOSPCSummary by CodeRabbit
New Features
Bug Fixes
Array.prototype.slicebehavior for array-like objects with invalid or extremely large lengths.Documentation