Skip to content

[pull] master from ruby:master#924

Merged
pull[bot] merged 11 commits intoturkdevops:masterfrom
ruby:master
Apr 11, 2026
Merged

[pull] master from ruby:master#924
pull[bot] merged 11 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Apr 11, 2026

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

byroot and others added 10 commits April 10, 2026 15:06
When decorating `Warning.warn`, it's much more convenient to get
the whole warning in a single string.
Use version from bundled_gems in tool/rdoc-srcdir

Previously, `tool/rdoc-srcdir` used `Dir.glob(...).first` to find
bundled gems like rdoc and tsort. This picks the first match
alphabetically, which can select a stale older version when multiple
versions coexist in `.bundle/gems/` (e.g. `rdoc-7.1.0` over
`rdoc-7.2.0`).

Fix by reading the declared version from `gems/bundled_gems` and
constructing the exact path, ensuring the correct version is always
loaded regardless of leftover directories.
Update the pinned RDoc revision to pick up the latest changes from
ruby/rdoc master.
#16122 (c272297) worked for maximal SSA but
does not work for "normal" SSA. This is because it used information
propagating across block args/params as a proxy for tracking changes in
dependent blocks. To do this properly we need to move to something like
SCCP.

See example HIR diff from the repro in codegen test:

```diff
diff --git a/before b/after
index da00a9e..b1d2a58 100644
--- a/before
+++ b/after
@@ -64,10 +64,10 @@ bb7(v48:BasicObject):
   StoreField v46, :_shape_id@0x4, v105
   v79:HeapBasicObject = RefineType v46, HeapBasicObject
   Jump bb5(v79, v41)
-bb5(v81:HeapBasicObject, v82:Fixnum[0]):
+bb5(v81:HeapBasicObject, v82:Fixnum):
   PatchPoint NoEPEscape(set_value_loop)
   v89:Fixnum[1] = Const Value(1)
   PatchPoint MethodRedefined(Integer@ADDR, +@0x2b, cme:ADDR)
-  v114:Fixnum[1] = Const Value(1)
+  v114:Fixnum = FixnumAdd v82, v89
   Jump bb6(v81, v114)
```

(the `Fixnum[0]` is from type inference and the `Fixnum[1]`
is from constant folding having folded the `FixnumAdd`)

In the meantime, go back to looping over RPO repeatedly.

Fix Shopify#974
Most of the time, we want to assert that we compile and the compiled
code runs without exiting. A small number of tests trigger side exits,
and those are changed to use assert_compiles_allowing_exits().

```console
$ rg -F 'assert_compiles(' -o | wc
     289     289   11862
$ rg -F 'assert_compiles_allowing_exits(' -o | wc
      38      38    2196
```
The default `{:?}` still always prints the pointer address and never
dereferences it, but now in hex.

The "alternate" flag lets you do `println!("{my_ruby_object:#?}")` and
get a rich printout like `VALUE(0x000000010232fd00 T_CLASS/Object)`.
This helps us see how much time it takes in compiler tracing.
@pull pull bot locked and limited conversation to collaborators Apr 11, 2026
@pull pull bot added the ⤵️ pull label Apr 11, 2026
[Bug #21952]

Shallow copying the table result in the same memory being shared
between multiple box, causing double free when one of the box
is garbage collected.
@pull pull bot merged commit c0d86a0 into turkdevops:master Apr 11, 2026
3 of 4 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.

7 participants