Skip to content

[pull] master from ruby:master - #1281

Merged
pull[bot] merged 5 commits into
turkdevops:masterfrom
ruby:master
Aug 5, 2026
Merged

[pull] master from ruby:master#1281
pull[bot] merged 5 commits into
turkdevops:masterfrom
ruby:master

Conversation

@pull

@pull pull Bot commented Aug 5, 2026

Copy link
Copy Markdown

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 : )

hsbt and others added 5 commits August 5, 2026 01:24
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.
@pull pull Bot locked and limited conversation to collaborators Aug 5, 2026
@pull pull Bot added the ⤵️ pull label Aug 5, 2026
@pull
pull Bot merged commit 91cfd2c into turkdevops:master Aug 5, 2026
0 of 2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants