[pull] master from ruby:master - #1281
Merged
Merged
Conversation
The RFC2396 5.2 6a step used Array#index/slice! in a loop, making URI.join / URI#merge O(n^2) in the number of base-path segments, so a 640KB base of repeated "a/../" took several seconds. Rewrite it as a single left-to-right pass while preserving the exact previous output, including the leading-".." case where the whole base path is dropped. ruby/uri@07f5883bfc Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action). Updates `taiki-e/install-action` from 2.85.6 to 2.85.7 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@1beb33e...67729d5) --- updated-dependencies: - dependency-name: taiki-e/install-action dependency-version: 2.85.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
The array counterpart of f4e50b9. A frozen array is handed out as a shared root as it is, without the shared root flag (ary_make_shared), so a subseq or a dup of an embedded one reads the elements straight out of its slot: ary = Array.new(40) { |i| i + 1 } ary.instance_variable_set(:@Iv, []) # unshareable, so it is moved ary.freeze sharer = ary[1, 38] # reads ary's elements in place r.send(ary, move: true) sharer #=> [false, false, ...] Two things go wrong once the root is hollowed out. The wipe added by 556296c zeroes the slot the sharer is reading, which is the visible breakage above; skip it for an embedded shared root, as the string side already does. The other one predates the wipe. Arrays let a shared root move and re-point the sharer in gc_ref_update_array(), which needs to know that the payload lives in the root's slot -- and a Ractor::MovedObject no longer says so, so the sharer was left pointing into the old slot. Pin such a root instead, the way strings have handled embedded roots since 80ea7fb. Reachable since arrays moved to variable width allocation (a51f30c): before that an embedded array was at most 3 elements, and ary_make_partial copies rather than shares at that size, so an embedded array was never a shared root. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This allows `st_table + RHash` to fit in a `64B` slot. It is achieved by turning `entries_start` from pointer size down to a single byte. This means it can now overflow, if you delete the first element 255 times, but in such case we can rebuild the table entirely, which is an acceptable tradeoff. The same change is applied to `set_table`, but mostly for consistency, as another 8B would need to be reclaimed for `Set` to fit in 64B slots.
pinned_list_store and pinned_list_fetch validated only the upper bound (offset >= ptr->size) on a signed long index, so a malformed or truncated IBF blob with a negative object index caused an out-of-bounds write/read through ptr->buffer[negative] instead of failing cleanly. Add the missing lower-bound check, raising the same IndexError already used for the upper bound.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )