Project

General

Profile

Activity

From 05/17/2025 to 05/23/2025

05/23/2025

11:42 PM Misc #21369 (Closed): Propose Max Bernstein (@tekknolagi) as a core committer
## Proposal
I'd like to propose Max Bernstein (@tekknolagi) as a committer. He has a strong background in compilers, having previously worked on CPython/Cinder at Meta, and has demonstrated leadership in designing and optimizing ZJIT.
...
k0kubun (Takashi Kokubun)
11:31 PM Revision 87d340f0 (git): ZJIT: Parse branchnil into HIR
tekknolagi (Maxwell Bernstein)
11:31 PM Revision fa474a41 (git): ZJIT: Parse opt_aref into HIR
tekknolagi (Maxwell Bernstein)
11:31 PM Revision 5905f71a (git): ZJIT: Add fast-paths for Array#length and Array#size
tekknolagi (Maxwell Bernstein)
11:02 PM Revision 2b5a6744 (git): ractor_wakeup was broken when compiled with USE_RUBY_DEBUG_LOG
The `ractor_wakeup` function takes an optional `th` argument, so it can be NULL.
There is a macro call to RUBY_DEBUG_LOG that dereferences `th` without checking
if it's NULL first. To fix this, we never dereference `th` in this macro call.
Luke Gruber
09:09 PM Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines
@alanwu I'd like to request 3.2 backport as other GCC 15 fixes have been back ported e.g. https://bugs.ruby-lang.org/issues/21286 ntkme (Natsuki Natsume)
09:03 PM Bug #21329: `date_core.so` is broken with the recent MSYS2 update
For rubyinstaller2 the issue is fixed with 3.4.4 release, and the fix will be backported to 3.3.9 and 3.2.9 whenever they get released.
For ruby/setup-ruby on windows, workaround has been applied for all older ruby versions that all ver...
ntkme (Natsuki Natsume)
08:32 PM Revision 75b92c5c (git): ZJIT: Implement find for Defined
tekknolagi (Maxwell Bernstein)
08:32 PM Revision 15618b77 (git): ZJIT: Mark SideExit as terminator
tekknolagi (Maxwell Bernstein)
08:32 PM Revision d23fe287 (git): ZJIT: Side-exit into the interpreter on unknown call types
tekknolagi (Maxwell Bernstein)
08:32 PM Revision a0df4cf6 (git): ZJIT: Side-exit into the interpreter on unknown opt_newarray_send
tekknolagi (Maxwell Bernstein)
08:32 PM Revision 0c29ff8e (git): ZJIT: Side-exit into the interpreter on unknown opcodes
No need to bail out of compilation completely; we can compile all the
code up until that point.
tekknolagi (Maxwell Bernstein)
07:57 PM Bug #21368 (Assigned): Moving objects with finalizer between Ractors crashes
When an object is moved to a different Ractor, the finalizers are not copied to the new object, so it will have the `FL_FINALIZE` flag set but no entry in the finalizer table.
The following script crashes:
```ruby
r = Ractor.new d...
peterzhu2118 (Peter Zhu)
07:45 PM Misc #21367: Remove link to ruby-doc.org from www.ruby-lang.org/en/documentation/
Agree. On a different note (and I'm not sure this is the right place to ask it), *could* we buy this domain and redirect to the official docs? matheusrich (Matheus Richard)
06:48 PM Misc #21367 (Closed): Remove link to ruby-doc.org from www.ruby-lang.org/en/documentation/
The ruby-doc.org domain no longer seems resolvable.
```
$ curl -I http://ruby-doc.org
curl: (6) Could not resolve host: ruby-doc.org
```
The owner of the domain mentioned he wanted to sell it:
https://ruby.social/@jamesbritt@mas...
p8 (Petrik de Heus)
07:43 PM Feature #21365: Add `Namespace#eval`
@ufuk fair point. Although it is a private method, so we're never doing `"foo".eval(bar)`. matheusrich (Matheus Richard)
05:02 PM Feature #21365: Add `Namespace#eval`
matheusrich (Matheus Richard) wrote in #note-3:
> @Eregon I feel like that's more consistent with the rest of the language. I can't remember if any object as a `eval` method. But evaluating some code in a particular instance context mak...
ufuk (Ufuk Kayserilioglu)
04:52 PM Feature #21365: Add `Namespace#eval`
@Eregon I feel like that's more consistent with the rest of the language. I can't remember if any object as a `eval` method. But evaluating some code in a particular instance context makes me think of `instance_eval`. matheusrich (Matheus Richard)
01:58 PM Feature #21365: Add `Namespace#eval`
Yep, agreed it'd be far more convenient for testing Namespace.
matheusrich (Matheus Richard) wrote in #note-1:
> I'm curious why `eval` and not `instance_eval`?
Why `instance_eval`? The distinction between eval/class_eval/instance...
Eregon (Benoit Daloze)
12:30 PM Feature #21365: Add `Namespace#eval`
I'm curious why `eval` and not `instance_eval`? matheusrich (Matheus Richard)
07:28 PM Revision 2a951f62 (git): Change test to avoid stack overflow with MN threads
When using MN threads (such as running the test in a ractor), this test
failed because it was raising a SystemStackError: stack level too deep.
This is because the machine stack is smaller under MN threads than on
the native main thread.
etienne (Étienne Barrié)
07:13 PM Revision f64c89f1 (git): Fix 'require' from a ractor when the required file raises an error
If you catch an error that was raised from a file you required in
a ractor, that error did not have its belonging reset from the main
ractor to the current ractor, so you hit assertion errors in debug
mode.
Luke Gruber
06:43 PM Bug #21363: `Namespace.current` should always return the Namespace in which it was defined
To be more specific, given this program:
```ruby
File.binwrite("ns.rb", <<-RUBY)
# namespace 3
module M
def self.test
p test: Namespace.current
end
TEST = -> {
p lambda: Namespace.current
}
end
RUBY
n...
tenderlovemaking (Aaron Patterson)
06:43 PM Revision b7e75118 (git): ZJIT: Parse splatarray, concattoarray, pushtoarray into HIR (#13429)
Max Bernstein
06:35 PM Revision e00c4601 (git): Drop unnecessary compiler guards for memory_sanitizer
We unpoison slots allocated out of the GC, so we don't need to disable
the assertions that read from the memory.
peterzhu2118 (Peter Zhu)
06:35 PM Revision 9130023c (git): Remove dependency on bits.h in default.c when BUILDING_MODULAR_GC
We can assume that the compiler will have __builtin_clzll so we can implement
nlz_int64 using that.
peterzhu2118 (Peter Zhu)
06:09 PM Bug #20905: Ruby VM hangs while using ractors
I had trouble reproducing this, but found that it does reproduce when limiting the number of CPUs. ex.
```
taskset -c 1-3 ruby test.rb
```
jhawthorn (John Hawthorn)
05:33 PM Revision 4f9f2243 (git): Stricter assert for RCLASS_ALLOCATOR
I'd like to make this only valid to T_CLASS also, but currently it is
called in some places for T_ICLASS and expected to return 0.
jhawthorn (John Hawthorn)
05:33 PM Revision 05cdcfce (git): Only call RCLASS_SET_ALLOCATOR on T_CLASS objects
It's invalid to set an allocator on a T_ICLASS or T_MODULE, as those use
the other fields from the union.
jhawthorn (John Hawthorn)
05:22 PM Revision e01e89f5 (git): Avoid calling RCLASS_SUPER in rb_class_superclass
jhawthorn (John Hawthorn)
05:22 PM Revision 11ad7f5f (git): Don't use namespaced classext for superclasses
Superclasses can't be modified by user code, so do not need namespace
indirection. For example Object.superclass is always BasicObject, no
matter what modules are included onto it.
jhawthorn (John Hawthorn)
03:48 PM Bug #21366 (Feedback): Error with Ruby 3.1
Which version of the compiler?
Anyway, 3.1 has reached the EOL already and no backport anymore.
nobu (Nobuyoshi Nakada)
03:09 PM Bug #21366 (Feedback): Error with Ruby 3.1
```
/usr/include/ruby-3.1.0/ruby/internal/anyargs.h:255:1: note: in expansion of macro ‘RBIMPL_ANYARGS_ATTRSET’
255 | RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); \
| ^~~~~~~~~~...
vv3 (Mariusz A)
03:33 PM Revision 1435ea7f (git): Add missing lock for `Module#remove_instance_variable`
We must take a lock to ensure another ractor isn't reading the ivars
while we're moving them.
byroot (Jean Boussier)
03:33 PM Revision 52da5f8b (git): Refactor `rb_shape_transition_remove_ivar`
Move the fields management logic in `rb_ivar_delete`, and keep
shape managment logic in `rb_shape_transition_remove_ivar`.
byroot (Jean Boussier)
03:06 PM Revision 746d7fef (git): Fix moving old objects between Ractors
The FL_PROMOTED flag was not copied when moving objects, causing assertions
to fail when an old object is moved:
gc/default/default.c:834: Assertion Failed: RVALUE_AGE_SET:age <= RVALUE_OLD_AGE
Co-Authored-By: Luke Gruber <luke.gru...
peterzhu2118 (Peter Zhu)
02:51 PM Revision 54bed7e2 (git): [DOC] ZJIT: `Function::find`: Give advice instead of talking about safety
Co-Authored-By: Max Bernstein <[email protected]> alanwu (Alan Wu)
02:22 PM Revision 224a02f9 (git): [ruby/prism] Monomorphise visitor methods
The current implementation of the visitor pattern in Prism uses
a single method (`visit_child_nodes`) to handle all node types. This can lead to performance issues since the `node` argument will end up being polymorphic, and will prevent...
Ufuk Kayserilioglu
02:08 PM Feature #21359: Introduce `Exception#cause=` for Post-Initialization Assignment
`msgpack` doesn't seem to handle recursive data structures:
```
irb(main):003> a=[]
=> []
irb(main):004> a<<a
=> [[...]]
irb(main):005> a
=> [[...]]
irb(main):006> a.to_msgpack
msgpack-1.8.0/lib/msgpack.rb:41:in `write': stack l...
Eregon (Benoit Daloze)
11:49 AM Revision 70f8f7c4 (git): Fix warning on cygwin
fd0 (Daisuke Fujimura)
09:20 AM Revision 966fcb77 (git): lock vm around `rb_free_generic_ivar`
Currently, this can be reproduced by:
r = Ractor.new do
a = [1, 2, 3]
a.object_id
a.dup # this frees the generic ivar for `object_id` on the copied object
:done
end
r.take
In debug builds, this hits an assertion failure...
Luke Gruber
07:44 AM Bug #18455 (Closed): `IO#close` has poor performance and difficult to understand semantics.
After merging https://github.com/ruby/ruby/pull/12839, we see nice performance improvements and the semantics are well documented.
```
> make benchmark BENCH_RUBY=/Users/samuel/.rubies/ruby-head/bin/ruby COMPARE_RUBY=/Users/samuel/.r...
ioquatix (Samuel Williams)
07:31 AM Bug #21316: Namespaces leak with permanent names
@ko1 yeah, in Ruby you can have two classes with the same permanent name today. You know that, but let me show an example for the archives:
```ruby
c = Class.new
C = c
Object.send(:remove_const, :C)
d = Class.new
C = d
p c.name == d....
fxn (Xavier Noria)
07:15 AM Bug #21316: Namespaces leak with permanent names
FYI: Java's case
"OBJ09-J. Compare classes and not class names"
https://wiki.sei.cmu.edu/confluence/display/java/OBJ09-J.+Compare+classes+and+not+class+names
ko1 (Koichi Sasada)
07:20 AM Revision 627a5ac5 (git): Bump fiber scheduler version and add missing documentation. (#13424)
Samuel Williams
06:07 AM Bug #21166 (Closed): Fiber Scheduler is unable to be interrupted by `IO#close`.
Merged in 73c9d6ccaa2045a011ed991dc29633bd0443971a ioquatix (Samuel Williams)
06:03 AM Revision 64c520fc (git): skip the test now we couldn't fix
The following error is reported repeatedly on my riscv64-linux machine, so just skipt it.
I hope someone investigate it.
```
1) Error:
TestStruct::SubStruct#test_named_structs_are_not_rooted:
Test::Unit::ProxyError: execution of Test:...
ko1 (Koichi Sasada)
05:55 AM Revision 73c9d6cc (git): Allow `IO#close` to interrupt IO operations on fibers using `fiber_interrupt` hook. (#12839)
Samuel Williams
05:12 AM Revision e3205473 (git): Remove assertion on field in `class_duplicate_iclass_classext`
`ext` is newly allocated so it shouldn't need an assertion. The class
ext (which is always from the module) that we're passing to
`class_duplicate_iclass_classext` could legitimately have instance
variables on it. We just want to avoid ...
tenderlovemaking (Aaron Patterson)
04:45 AM Bug #21167: Visual Studio 2022 17.13.x couldn't build ruby.exe
vs2022 17.14.0 has been released and resolved this. hsbt (Hiroshi SHIBATA)
03:56 AM Revision 439428c8 (git): Skip failing example on Ubuntu runner of ruby/ruby
https://github.com/ruby/ruby/actions/runs/14585602800/job/40910453142 hsbt (Hiroshi SHIBATA)
03:56 AM Revision 2de5cb2f (git): Skip RBS tests for RDocPluginParserTest caused by interface change of RDoc 6.14.0
https://github.com/ruby/ruby/actions/runs/15199473008/job/42750815986?pr=13421
```
Error: ArgumentError: wrong number of arguments (given 0, expected 1)
/Users/runner/work/ruby/ruby/src/lib/rdoc/store.rb:123:in 'initialize'
/Users/...
hsbt (Hiroshi SHIBATA)
03:56 AM Revision df487932 (git): test/lib/helper.rb is only for ruby/rdoc repo
hsbt (Hiroshi SHIBATA)
03:56 AM Revision 7dcfdf1d (git): Revert https://github.com/rubygems/rubygems/commit/d74fa0fdda481043112f9de179be572b74a711ed
hsbt (Hiroshi SHIBATA)

05/22/2025

11:44 PM Feature #21359: Introduce `Exception#cause=` for Post-Initialization Assignment
> Serializing exceptions properly without Marshal is probably quite hard yes, not only about the cause but also the internal backtrace representation, the backtrace_locations objects, other internal state for core exceptions that can't a... ioquatix (Samuel Williams)
08:00 PM Feature #21359: Introduce `Exception#cause=` for Post-Initialization Assignment
ioquatix (Samuel Williams) wrote in #note-2:
> Yes, in Async, I want to set the cause of an exception before raising it later on a fiber.
#21360 would be enough for that, although you'd need to wrap the exception + cause-to-be in som...
Eregon (Benoit Daloze)
12:12 PM Feature #21359: Introduce `Exception#cause=` for Post-Initialization Assignment
Yes, in Async, I want to set the cause of an exception before raising it later on a fiber.
Additionally, serialisation and deserialisation of exceptions is almost impossible without being able to set the cause, e.g. any kind of Ruby RPC.
ioquatix (Samuel Williams)
10:15 AM Feature #21359: Introduce `Exception#cause=` for Post-Initialization Assignment
Do you have real-world examples where you would use this, e.g. in gems? Eregon (Benoit Daloze)
08:39 AM Feature #21359 (Assigned): Introduce `Exception#cause=` for Post-Initialization Assignment
Ruby currently allows an exception’s `cause` to be explicitly set **only at the time of raising** using `raise ..., cause: ...`. However, there are valid use cases where it would be convenient to set the cause when creating an exception.... ioquatix (Samuel Williams)
11:28 PM Feature #21365 (Closed): Add `Namespace#eval`
I would like a way to eval code on to a `Namespace` object. Could we add an eval method that _doesn't_ take a binding object? Writing a new file every time I want to test Namespaces is too cumbersome.
Thanks!
tenderlovemaking (Aaron Patterson)
11:23 PM Bug #21364 (Open): Constant lookup in namespaces should be consistent
This might be related to #21363, but I'm not sure.
I expect that a top level `Bar` constant should have the same value as `Object::Bar`. For example:
```ruby
File.binwrite("ns.rb", <<-RUBY)
# namespace 3
Bar = 123
module M
...
tenderlovemaking (Aaron Patterson)
11:17 PM Bug #21363 (Open): `Namespace.current` should always return the Namespace in which it was defined
I think `Namespace.current` should always return the namespace in which it was defined. Here is an example to demonstrate what I mean:
```ruby
File.binwrite("ns.rb", <<-RUBY)
# namespace 3
module M
def self.test
p Namesp...
tenderlovemaking (Aaron Patterson)
10:39 PM Revision 161aede1 (git): Disabled TRAP cache of CodeQL
hsbt (Hiroshi SHIBATA)
10:04 PM Revision bc2e95ee (git): Apply new RDoc config options
Stan Lo
10:04 PM Revision 03eb777c (git): Sync RDoc 6.14.0
Stan Lo
09:05 PM Revision 9583b7af (git): ZJIT: Parse newhash into HIR
Max Bernstein
09:05 PM Revision f1fe3d80 (git): ZJIT: Parse duphash into HIR
Max Bernstein
08:53 PM Bug #21362: Namespace: Inline method caches poisoned with builtins
Yeah such builtin/core Ruby files clearly need to be loaded and executed in the root namespace from a performance POV, otherwise it means no inline caches (my initial worry in https://bugs.ruby-lang.org/issues/21311#note-15).
It's quite...
Eregon (Benoit Daloze)
08:34 PM Bug #21362 (Assigned): Namespace: Inline method caches poisoned with builtins
``` ruby
File.write("/tmp/ntest.rb", <<~'RUBY')
class Integer
def succ = self + 2
end
module Test
def self.run = 10.times.to_a
end
RUBY
module Test
def self.run = 10.times.to_a
end
ns = Namespace.new
ns.require("...
jhawthorn (John Hawthorn)
07:53 PM Feature #21361: Set execution file and line
I'm not sure we want to encourage generating Ruby code (generated code in many cases is pretty bad IMO, e.g. huge methods), and this feature would encourage it implicitly.
Ruby is often expressive and flexible enough that there is no ne...
Eregon (Benoit Daloze)
04:46 PM Feature #21361 (Open): Set execution file and line
I'd like to be able to set the execution file and execution line for the purpose of generated Ruby code. My specific use case is the Ruby files that are templated in Prism, but I also believe it would be beneficial for ERB. The functiona... kddnewton (Kevin Newton)
06:51 PM Revision 5a3f3f09 (git): ZJIT: Parse getinstancevariable, setinstancevariable into HIR (#13413)
Max Bernstein
04:21 PM Revision ca1ea957 (git): Include stdbool.h without checking with autoconf
As reported in <https://bugs.ruby-lang.org/issues/21340>, older autoconf
have an AC_HEADER_STDBOOL that's incompatible with C23. Autoconf 2.72
fixed the macro, but also mentions that it's obsolescent since all
current compilers have this...
alanwu (Alan Wu)
04:20 PM Revision 616771e3 (git): Merge RubyGems-3.6.9 and Bundler-2.6.9
hsbt (Hiroshi SHIBATA)
04:20 PM Revision d766eceb (git): Merge RubyGems-3.6.8 and Bundler-2.6.8
hsbt (Hiroshi SHIBATA)
04:19 PM Revision 81258275 (git): windows-2025 runner removed D drive from their environment
hsbt (Hiroshi SHIBATA)
04:19 PM Revision c104fc41 (git): Disabled TRAP cache of CodeQL
hsbt (Hiroshi SHIBATA)
04:18 PM Revision d96e9bd0 (git): [DOC] Set canonical root for online docs (#13410)
Stan Lo
03:19 PM Bug #21340 (Closed): Bump autoconf version to properly handle C23 bool/stdbool defines
Thanks!
commit:2297afda7ff3926c51fea700dfbf0f0eb4fea1e5 should also work for the 3.3 branch since it also requires VC 2015. #19982
alanwu (Alan Wu)
02:17 PM Revision b080aabb (git): Update string.rb
Co-authored-by: Peter Zhu <[email protected]> burdettelamar (Burdette Lamar)
02:17 PM Revision 3403055d (git): [DOC] Tweaks for String#byteindex
burdettelamar (Burdette Lamar)
12:10 PM Revision d15fdb5c (git): Win32: Initialize the systemtime function before converting FILETIME
nobu (Nobuyoshi Nakada)
10:16 AM Feature #21311: Namespace on read (revised)
First, I would like to thank mame for the explanation in regards to the namespace discussion, or rather the pre-discussion in regards to design decision(s). Probably not everyone knew about the prior discussion(s), so it seems useful to ... rubyFeedback (robert heiler)
10:10 AM Revision f18883b2 (git): Namespaces: Don't initialize fields for T_ICLASS
ICLASS don't have instance variables or anything like that.
`gc_mark_classext_iclass` didn't mark it, and `classext_iclass_free`
wasn't freeing it.
byroot (Jean Boussier)
10:00 AM Feature #21358: Advanced filtering support for #dig
You might be able to achieve similar behavior using pattern matching.
```ruby
item => batters: {batter: [*, {type: "Chocolate", id:}, *]}
id #=> "1002"
```
nobu (Nobuyoshi Nakada)
09:39 AM Feature #21360 (Closed): Inconsistent Support for `Exception#cause` in `Fiber#raise` and `Thread#raise`
The `raise` method supports setting the cause of an exception using the `cause:` keyword, but this behavior does not work as expected when calling `Fiber#raise` or `Thread#raise`, resulting in a `TypeError`. This breaks consistency with ... ioquatix (Samuel Williams)
09:32 AM Revision 5862be0e (git): Skip failing tests with mingw platform
https://github.com/ruby/ruby/actions/runs/15159221855/job/42621232822?pr=13397
```
1)
File.atime returns the last access time for the named file with microseconds FAILED
Expected 0 == 123456
to be truthy but was false
D:/a/rub...
hsbt (Hiroshi SHIBATA)
09:32 AM Revision b7aca78c (git): [ruby/io-console] Use gperf 3.1 to generate ANSI-C code
https://github.com/ruby/io-console/commit/3798aae42d nobu (Nobuyoshi Nakada)
09:32 AM Revision c239069d (git): Fix redefinition of `clock_gettime` and `clock_getres`
winpthreads-git 12.0.0.r720 provides `clock_gettime` and
`clock_getres` as inline functions.
nobu (Nobuyoshi Nakada)
09:32 AM Revision 395e5de8 (git): Update the latest version of ruby/setup-ruby
hsbt (Hiroshi SHIBATA)
07:00 AM Bug #21333: heap-use-after-free caused by rehash during update
If this gets backported, please also consider https://bugs.ruby-lang.org/issues/21357. This fix caused a different problem, the patch for that can be found in that issue. Earlopain (Earlopain _)
06:57 AM Bug #21357: Crash in Hash#merge! with ruby-dev in rubocop-rspec test suite
Thanks! Works nicely. Earlopain (Earlopain _)
03:26 AM Bug #21357 (Closed): Crash in Hash#merge! with ruby-dev in rubocop-rspec test suite
Applied in changeset commit:git|056497319658cbefe22351c6ec5c9fa6e4df72bd.
----------
[Bug #21357] Fix crash in Hash#merge with block
Prior to https://github.com/ruby/ruby/commit/49b306ecb9e2e9e06e0b1590bacc5f4b38169c3c
the `optional_ar...
dodecadaniel (Daniel Colson)
02:33 AM Bug #21357: Crash in Hash#merge! with ruby-dev in rubocop-rspec test suite
Possible fix https://github.com/ruby/ruby/pull/13404 (if tests pass 🤞🏻) dodecadaniel (Daniel Colson)
06:54 AM Revision ff1d6157 (git): Don't need to store download cache of vcpkg
vcpkg can detect their cache from `vcpkg/installed`. hsbt (Hiroshi SHIBATA)
04:08 AM Revision ec41b1e8 (git): Fix for old mingw without `clock_gettime` and `clock_getres`
nobu (Nobuyoshi Nakada)
03:39 AM Bug #21337: Using `not` on the RHS of a logical operator becomes valid syntax with Prism
I prefer the behavior of Prism here. Intuitively, `true && not true` seems like it should be valid just like `true and not true` Dan0042 (Daniel DeLorme)
03:25 AM Revision 05649731 (git): [Bug #21357] Fix crash in Hash#merge with block
Prior to https://github.com/ruby/ruby/commit/49b306ecb9e2e9e06e0b1590bacc5f4b38169c3c
the `optional_arg` passed from `rb_hash_update_block_i` to `tbl_update`
was a hash value (i.e. a VALUE). After that commit it changed to an
`update_cal...
dodecadaniel (Daniel Colson)
03:20 AM Feature #21353: Add shape_id to RBasic under 32 bit
jhawthorn (John Hawthorn) wrote in #note-2:
> it is hard for us to follow that path when shapes are so different under 32-bit
So we're in agreement here, and in fact I think shapes should be **exactly the same** under both 32bit and 64b...
Dan0042 (Daniel DeLorme)
01:55 AM Revision 7154b420 (git): Fix a -Wmaybe-uninitialized
lev in rb_gc_vm_lock() is uninitialized in single ractor mode. nobu (Nobuyoshi Nakada)
12:23 AM Revision 6a16c3e2 (git): Remove too_complex GC assertion
Classes from the default namespace are not writable, however they do not
transition to too_complex until they have been written to inside a user
namespace. So this assertion is invalid (as is the previous location it
was) but it doesn't ...
jhawthorn (John Hawthorn)
12:03 AM Bug #21348: Should Tracepoint track retry as another "call" event?
Thanks for confirming that the behavior needs to be fixed @eregon. karthikc (Karthik Chandrasekariah)

05/21/2025

11:01 PM Feature #21358 (Feedback): Advanced filtering support for #dig
Currently, `#dig` can be used to access nested data structures using "simple" keys, such as array indices or hash keys.
Real-world applications sometimes require non-trivial data access, for example, finding an item in an array based ...
lovro-bikic (Lovro Bikić)
07:23 PM Revision 7b106609 (git): Use rb_inspect for Ractor error
Previously the object was used directly, which calls `to_s` if defined.
We should use rb_inspect to get a value suitable for display to the
programmer.
jhawthorn (John Hawthorn)
07:02 PM Bug #21357: Crash in Hash#merge! with ruby-dev in rubocop-rspec test suite
I reduced it down significantly:
```rb
require "yaml"
YML = <<~YML
foo:
- bar: abc
baz: def
bat: ghi
YML
x = 1500 # lower numbers don't consistently crash
(0..x).each_with_object({}) do |_i, hash|
has...
Earlopain (Earlopain _)
12:51 PM Bug #21357 (Closed): Crash in Hash#merge! with ruby-dev in rubocop-rspec test suite
I've encountered crahses on ruby-head in recent days, related to hash methods like `merge` and `merge!`. I can now reproduce it locally while running the rubocop-rspec test suite:
* Clone https://github.com/rubocop/rubocop-rspec
* Ru...
Earlopain (Earlopain _)
05:27 PM Revision ef935705 (git): Use shape_id for determining "too complex"
Using `rb_shape_obj_too_complex_p` looks up the shape, but we already
have the shape id. This avoids looking up the shape twice.
tenderlovemaking (Aaron Patterson)
04:51 PM Revision 6df6aaa0 (git): Update class.c
Co-authored-by: Satoshi Tagomori <[email protected]> Aaron Patterson
04:51 PM Revision 6ea893f3 (git): Add assertion for RCLASS_SET_PRIME_CLASSEXT_WRITABLE
When classes are booted, they should all be writeable unless namespaces
are enabled. This commit adds an assertion to ensure that classes are
writable.
tenderlovemaking (Aaron Patterson)
03:53 PM Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines
alanwu (Alan Wu) wrote in #note-5:
> @ntkme @christo if you have time, please try building with the latest master branch and see if the build issues are resolved. We can get this backported if so.
I can confirm this fixes the issue I...
christo (Chris Alberti)
08:55 AM Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines
I've pushed commit:2297afda7ff3926c51fea700dfbf0f0eb4fea1e5 which I think should resolve build issues without touching the autoconf version.
@ntkme @christo if you have time, please try building with the latest master branch and see i...
alanwu (Alan Wu)
03:27 PM Revision 511b6bcb (git): Reenable MMTk tests
peterzhu2118 (Peter Zhu)
03:27 PM Revision ac23fa09 (git): Use rb_id_table_foreach_values for mark_cc_tbl
We don't need the key, so we can improve performance by only iterating
on the value.
This will also fix the MMTk build because looking up the key in
rb_id_table_foreach requires locking the VM, which is not supported in
the MMTk worker ...
peterzhu2118 (Peter Zhu)
03:23 PM Revision b4c900de (git): ZJIT: More type level docs in zjit::hir [DOC]
Given `InsnId` is at the top of the file and everywhere, hopefully this
will help first time readers.
alanwu (Alan Wu)
02:35 PM Revision 3487117e (git): [ruby/mmtk] Fix object ID in rb_gc_impl_define_finalizer
The 0th element of the finalizer table array should be the object ID.
https://github.com/ruby/mmtk/commit/75e4a82652
peterzhu2118 (Peter Zhu)
01:48 PM Revision 8f50bb7c (git): JITs: Add back MACOSX_DEPLOYMENT_TARGET=11.0 setting to avoid warning
See: 41251fdd309d4ff8f699268e33c32a114257211e alanwu (Alan Wu)
01:12 PM Revision 9a41d76b (git): Fix one-by-one error of numbered parameter ID
richardboehme (Richard Böhme)
09:28 AM Bug #21356: Error when accessing local variable named "default" with Binding#local_variable_get
Good catch, you are correct. Thank you! https://github.com/ruby/ruby/pull/13396 mame (Yusuke Endoh)
08:31 AM Bug #21356 (Closed): Error when accessing local variable named "default" with Binding#local_variable_get
On Ruby master when using `Binding#local_variable_get` with the name `:default` it raises the following error:
```
'Binding#local_variable_get': numbered parameter 'default' is not a local variable (NameError)
```
I saw that this...
richardboehme (Richard Böhme)
08:11 AM Revision 081a44f5 (git): Disabled TRAP cache of CodeQL again
hsbt (Hiroshi SHIBATA)
08:02 AM Bug #21355 (Closed): `csv/test/csv/interface/test_read.rb` at test-bundled-gems is flaky recent days
I faced test failure of `make test-bundled-gems` in GitHub Actions. It caused by `csv` testing with `Ractor`.
https://github.com/ruby/ruby/actions/runs/15156308046/job/42611877817?pr=13391#step:9:697
```
/home/runner/work/ruby/ru...
hsbt (Hiroshi SHIBATA)
07:29 AM Revision 0964593e (git): Shrink `sym_proc_cache` by half
There is no need to store the symbol and the proc given the
proc has a reference to the symbol.
This makes the cache half as small, now fitting in an object
slot, but also make it easier to allow that cache to be
used by ractors, assumi...
byroot (Jean Boussier)
07:08 AM Revision c980cab1 (git): [DOC] Add bundled gem doc links
- rake
- reline
- logger
- csv
- rexml
- racc
Stan Lo
07:03 AM Revision df66d2be (git): Update bundled gems list as of 2025-05-21
git[bot]
06:12 AM Bug #21354 (Closed): Symbol#to_proc is not ractor safe
Applied in changeset commit:git|f6cbf499bc98b851034fffb49fcbb59d495f6f7b.
----------
Fix Symbol#to_proc (rb_sym_to_proc) to be ractor safe
In non-main ractors, don't use `sym_proc_cache`. It is not thread-safe
to add to this array with...
Anonymous
06:12 AM Revision f6cbf499 (git): Fix Symbol#to_proc (rb_sym_to_proc) to be ractor safe
In non-main ractors, don't use `sym_proc_cache`. It is not thread-safe
to add to this array without a lock and also it leaks procs from one
ractor to another. Instead, we create a new proc each time. If this
results in poor performance w...
Luke Gruber
02:33 AM Revision 97e774b9 (git): [rubygems/rubygems] Bump up to rack-3.1.15 that is removed dependency of CGI::Cookie
https://github.com/rubygems/rubygems/commit/cecc280f61 hsbt (Hiroshi SHIBATA)
02:33 AM Revision 3ac239f7 (git): [rubygems/rubygems] Copy prerelease attribute to dependency resolver sets
https://github.com/rubygems/rubygems/commit/5956e7f8e5 ntl (Nathan Ladd)
02:30 AM Revision 27b06383 (git): [ruby/mmtk] Fix object ID for finalizers
We should get the object ID for finalizers in rb_gc_impl_define_finalizer
instead of when we create the finalizer job in make_final_job because
when we are in multi-Ractor mode, object ID needs to walk the references
which allocates an i...
peterzhu2118 (Peter Zhu)
01:04 AM Revision 1c661242 (git): Make Addrinfo objects Ractor shareable
Allow Addrinfo objects to be shared among Ractors. Addrinfo objects are
already immutable, so I think it's safe for us to tag them as
RUBY_TYPED_FROZEN_SHAREABLE shareable too.
tenderlovemaking (Aaron Patterson)

05/20/2025

10:49 PM Feature #21353: Add shape_id to RBasic under 32 bit
@Dan0042 We've been finding a lot of cases where flags actually make sense as part of the shape rather than flags, like FL_FROZEN and FL_EXIVAR per the description, but also possibly object_id and likely more (ex. capacity, FL_EMBEDDED) ... jhawthorn (John Hawthorn)
08:11 PM Feature #21353: Add shape_id to RBasic under 32 bit
In general this sounds like a good idea, but I think it would be better to have a struct that works the same way for both 32bit and 64bit systems, and also avoids reserving an entire 32 bits, which is overkill for shape ids.
What abou...
Dan0042 (Daniel DeLorme)
08:18 AM Feature #21353 (Closed): Add shape_id to RBasic under 32 bit
Currently on 64bit systems, for every types, the `shape_id` is stored inside the `RBasic.flags` field, and is 32bit
long.
However, on 32bit systems like i686 and WASM, it is much more complicated.
For `T_OBJECT`, `T_CLASS` and `T_MO...
byroot (Jean Boussier)
10:41 PM Revision b08e20d3 (git): ZJIT: Allow DCE to remove some CCalls (#13363)
Allow DCE to remove some CCalls
Add `elidable` field that signals that there would be no discernible
effect if the call to the method were removed. The default is false.
Max Bernstein
04:57 PM Revision b043abc0 (git): Only define RVALUE_OVERHEAD if undefined
This allows RVALUE_OVERHEAD to be defined elsewhere. peterzhu2118 (Peter Zhu)
04:56 PM Revision 84bfcaa8 (git): Add two more TSan suppressions
jhawthorn (John Hawthorn)
04:56 PM Revision e7f97eb2 (git): Use atomic load for signal buff size
jhawthorn (John Hawthorn)
04:56 PM Revision 05e0e722 (git): Use atomic load to read interrupt mask
jhawthorn (John Hawthorn)
04:22 PM Revision cd15cc25 (git): ZJIT: Run `make zjit-test` under combo build with YJIT
alanwu (Alan Wu)
04:22 PM Revision 1fed568e (git): ZJIT: Add --allow-multiple-definition for make zjit-test
alanwu (Alan Wu)
03:58 PM Revision 2297afda (git): Include stdbool.h without checking with autoconf
As reported in <https://bugs.ruby-lang.org/issues/21340>, older autoconf
have an AC_HEADER_STDBOOL that's incompatible with C23. Autoconf 2.72
fixed the macro, but also mentions that it's obsolescent since all
current compilers have this...
alanwu (Alan Wu)
03:35 PM Revision ce5eb280 (git): YJIT: ZJIT: CI: Smoke test for --[y,z]jit-dump-disasm
alanwu (Alan Wu)
03:35 PM Revision dfc0fe36 (git): Add jit.rs as dependency in Makefile
alanwu (Alan Wu)
01:46 PM Bug #21354: Symbol#to_proc is not ractor safe
PR here: https://github.com/ruby/ruby/pull/13380
We are looking at how to make the cache ractor safe but it will be done in a separate PR.
luke-gru (Luke Gruber)
01:37 PM Bug #21354 (Closed): Symbol#to_proc is not ractor safe
There is caching in `Symbol#to_proc` (`rb_sym_to_proc`) that makes the assumption that we're always in the main ractor. With multiple ractors, this caching logic is not ractor-safe in that cached procs created in one ractor can leak into... luke-gru (Luke Gruber)
01:27 PM Revision bf082a37 (git): CI: Check if runnable first, before set up directories
nobu (Nobuyoshi Nakada)
01:16 PM Misc #21350: Bundled gems lack online documentation
I also don't think the documentation for bundled gems necessarily has to be included in the Ruby core documentation, as long it is easily accessible from it.
If possible, how about creating a link-to-documentation-only entry for class...
osyoyu (Daisuke Aritomo)
01:15 PM Bug #21341: `Namespace is not a module (TypeError)` without enabling the namespace
I want to let Matz determine how to handle this problem :D tagomoris (Satoshi Tagomori)
01:07 PM Bug #21341: `Namespace is not a module (TypeError)` without enabling the namespace
I guess I found a widely used real-world app that defines a toplevel `Namespace` class, and it seems very difficult for them to resolve this conflict...
https://github.com/gitlabhq/gitlabhq/blob/master/app/models/namespace.rb
Perhaps we...
matsuda (Akira Matsuda)
08:21 AM Bug #21341: `Namespace is not a module (TypeError)` without enabling the namespace
> But the incompatibility may not have been considered since toplevel Ruby used to warn in 3.4 for Ruby::VERSION and others.
Yes, we likely need to emit a deprecation warning when a top-level `Namespace` constant is defined.
byroot (Jean Boussier)
06:41 AM Bug #21341: `Namespace is not a module (TypeError)` without enabling the namespace
It looks intentional to me:
> Namespace.new
(irb):1:in 'Namespace#initialize': Namespace is disabled. Set RUBY_NAMESPACE=1 environment variable to use Namespace. (RuntimeError)
But the incompatibility may not have been considered s...
Earlopain (Earlopain _)
01:12 PM Revision d0a8f6ba (git): [DOC] Fix call-seq of Dir.glob
`patterns` may be an array but not the rest argument. nobu (Nobuyoshi Nakada)
11:43 AM Revision 8dbff6e4 (git): Silence error messages of `cd` to non-existent opt directories
nobu (Nobuyoshi Nakada)
09:22 AM Revision a82e7132 (git): Fix uplevel for `cgi` under bundler
Since there is `bundled_gems.rb` it is not always one. Fixes the following:
```sh
$ ruby -w -rbundler/inline -e "gemfile {}; require 'cgi'"
/home/earlopain/.rbenv/versions/ruby-dev/lib/ruby/3.5.0+0/bundled_gems.rb:59: warning: CGI librar...
Earlopain (Earlopain _)
07:03 AM Revision bfe89c7a (git): Update bundled gems list as of 2025-05-19
git[bot]
06:51 AM Revision edff5234 (git): [DOC] Describe new return value of source_location
Proc#source_location, Method#source_location and
UnboundMethod#source_location carry more information since
073c4e1cc712064e626914fa4a5a8061f903a637.
https://bugs.ruby-lang.org/issues/6012
https://github.com/ruby/ruby/pull/12539
Daisuke Aritomo
04:34 AM Feature #21287 (Closed): Remove SortedSet autoload and set/sorted_set
Applied in changeset commit:git|c52f4eea564058a8a9865ccc8b2aa6de0c04d156.
----------
Remove SortedSet autoload and set/sorted_set
Implements [Feature #21287]
jeremyevans (Jeremy Evans)
04:34 AM Revision c52f4eea (git): Remove SortedSet autoload and set/sorted_set
Implements [Feature #21287] jeremyevans (Jeremy Evans)

05/19/2025

09:04 PM Misc #21350: Bundled gems lack online documentation
There actually are quite a few bundled gems having their own docs now, including [CSV](https://ruby.github.io/csv/).
I've opened a PR to add them: https://github.com/ruby/ruby/pull/13374
I think we're already heading towards this d...
st0012 (Stan Lo)
08:22 PM Misc #21350: Bundled gems lack online documentation
In the meanwhile https://www.rubydoc.info/ is a good workaround to get online docs of all gems, e.g. https://www.rubydoc.info/gems/csv
Though it doesn't handle RDoc includes yet it seems.
Eregon (Benoit Daloze)
08:15 PM Misc #21350: Bundled gems lack online documentation
I agree each bundled gem hosting its own docs is the best.
In some cases it might be valuable to host multiple versions of the docs, although that quickly adds complexity.
In fact the same applies for normal gems as well.
For exampl...
Eregon (Benoit Daloze)
04:07 PM Misc #21350: Bundled gems lack online documentation
https://github.com/ruby/ruby/pull/13371
nobu (Nobuyoshi Nakada)
08:25 PM Bug #21348: Should Tracepoint track retry as another "call" event?
I agree with the OP that `:call` shouldn't trigger a second time here, since there is only one call to `foo`.
`retry` is similar to a loop, and of course we don't add extra `:call` TracePoint events for loops.
Eregon (Benoit Daloze)
08:18 PM Bug #21351: Ruby master segfaults when initializing `Zlib::GzipReader`
Closed because this doesn't happen in `ruby 3.5.0dev (2025-05-19T17:34:29Z master a7ef9a44a6) +PRISM [arm64-darwin24]` anymore. st0012 (Stan Lo)
08:15 PM Bug #21351 (Closed): Ruby master segfaults when initializing `Zlib::GzipReader`
st0012 (Stan Lo)
11:02 AM Bug #21351 (Closed): Ruby master segfaults when initializing `Zlib::GzipReader`
### Ruby Version
```
ruby 3.5.0dev (2025-05-13T14:16:58Z master bb180b87b4) +PRISM [arm64-darwin24]
last_commit=[Bug #21331] Prohibit modification during stlike loop
```
### Steps to reproduce
```
$ ruby -e "require 'zlib'; ...
st0012 (Stan Lo)
05:34 PM Revision a7ef9a44 (git): ZJIT: Propagate disasm feature to ZJIT and YJIT (#13372)
Co-authored-by: Alan Wu <[email protected]> k0kubun (Takashi Kokubun)
03:33 PM Feature #21309: Can Thread::Mutex be Ractor shareable?
@nevans See https://github.com/ruby/net-http/blob/b652fa506b3fc8420172683e62b13bcdf58dbf3d/lib/net/http.rb#L1657
And https://github.com/ruby/net-http/issues/6#issuecomment-2877372273 by @osyoyu.
Also #21347 seems related to all that.
Eregon (Benoit Daloze)
03:14 PM Feature #21309: Can Thread::Mutex be Ractor shareable?
Eregon (Benoit Daloze) wrote in #note-6:
> osyoyu (Daisuke Aritomo) wrote in #note-5:
> ...
Does `Net::HTTP` use `Timeout` to implement its timeouts? `Timeout::Error` is used as a superclass for the `net-protocol` timeout errors, but ...
nevans (Nicholas Evans)
01:49 PM Revision 93ce95d4 (git): [DOC] Fix indentation
RDoc markdown parser requires exact 4 spaces or tab as indentation. nobu (Nobuyoshi Nakada)
01:47 PM Revision 22c1201b (git): [DOC] Fold long lines
nobu (Nobuyoshi Nakada)
01:41 PM Revision d84f2031 (git): [DOC] Escape dot in regexp
nobu (Nobuyoshi Nakada)
01:06 PM Bug #21352 (Closed): Invalid read in shape lookup code
Applied in changeset commit:git|83d636f2d01f6bc1fd044a6f6c3071303b68dd82.
----------
Free shapes last
[Bug #21352]
`rb_objspace_free_objects` may need to check objects shapes
to know how to free them.
byroot (Jean Boussier)
12:20 PM Bug #21352: Invalid read in shape lookup code
I suspect it's caused by either a T_NONE or a T_IMEMO. I have a feature branch that ran into that issue I think and I haven't merged yet, but I could just cherry-pick that fix. byroot (Jean Boussier)
12:16 PM Bug #21352 (Closed): Invalid read in shape lookup code
Prism runs tests with valgrind and it recently started to report an invalid read in `rb_shape_lookup`. Example workflow: https://github.com/ruby/prism/actions/runs/15111527208/job/42471945845?pr=3564
```
Invalid read of size 8
rb_...
Earlopain (Earlopain _)
01:06 PM Revision 83d636f2 (git): Free shapes last
[Bug #21352]
`rb_objspace_free_objects` may need to check objects shapes
to know how to free them.
byroot (Jean Boussier)
09:16 AM Bug #21345: crash on evaluating 'a=>a,*,'
Potential fix https://github.com/ruby/prism/pull/3564 Earlopain (Earlopain _)
08:58 AM Bug #20112 (Closed): Ractors not working properly in ruby 3.3.0
byroot (Jean Boussier)
08:57 AM Bug #20112: Ractors not working properly in ruby 3.3.0
I can't repro on my mac so it seems Linux only.
It has been corrected on master since both 3.5.0-preview1 and master are now faster with ractors than with threads.
```
ruby 3.5.0dev (2025-05-19T04:27:50Z master 40c957ba21) +PRISM ...
etienne (Étienne Barrié)
05:37 AM Bug #21338: TracePoint Not Triggered for Kernel#block_given?
Hi @k0kubun - ok great - that sounds like an intentional change in Ruby 3.4 then.
I don't understand your recommendation though "to define every method you call in the profiled code yourself". The ruby-prof test code has remained fairly...
cfis (Charlie Savage)
04:27 AM Revision 40c957ba (git): Fix a typo and capitalize a character
znz (Kazuhiro NISHIYAMA)
02:55 AM Bug #21333 (Closed): heap-use-after-free caused by rehash during update
nobu (Nobuyoshi Nakada)
02:19 AM Revision 47595509 (git): [ruby/json] Remove some unnecessary top level constant lookups
https://github.com/ruby/json/commit/7c03ffc3e0 byroot (Jean Boussier)
02:19 AM Revision e4a44b1f (git): [ruby/json] remove redundant `self.`
https://github.com/ruby/json/commit/c060943d04 GrantBirki
02:19 AM Revision 9b25023f (git): [ruby/json] use `.` over `::` for consistency
https://github.com/ruby/json/commit/f5c1b8c45d GrantBirki
02:19 AM Revision dc69bebd (git): [ruby/json] Update json_encoding_test.rb
https://github.com/ruby/json/commit/0ac54a8161 Grant Birkinbine
02:19 AM Revision 3468811e (git): [ruby/json] fix for pretty_generate throwing wrong number of arguments error
https://github.com/ruby/json/commit/8433571dcf Cody Horton
02:19 AM Revision 57e41766 (git): [rubygems/rubygems] Fix test warnings introduced by recent CGI changes
They read like this:
```
/home/runner/work/rubygems/rubygems/bundler/tmp/gems/base/ruby/3.4.0/gems/cgi-0.5.0.beta2/lib/cgi/util.rb:13: warning: method redefined; discarding old rfc1123_date
/opt/hostedtoolcache/Ruby/3.4.3/x64/lib/ruby/3...
deivid (David Rodríguez)
02:19 AM Revision 0f867d97 (git): Rename a couple of spec files
Generally are "realworld" specs are the ones using VCR cassettes of real
requests. These files don't use that, so I moved them to a different
place.
deivid (David Rodríguez)
02:15 AM Revision 6e8be3a6 (git): [rubygems/rubygems] Test JRuby 10
Necessary changes to get tests passing are:
* Rewrite one "out of memory" error spec to not define a subclass inside
a RSpec context block. Due to some [JRuby issue], that's failing in
JRuby 10, so I rewrote the test so that the Bun...
deivid (David Rodríguez)
02:15 AM Revision bfab76ab (git): [rubygems/rubygems] Normalize platforms in warbler lockfile
https://github.com/rubygems/rubygems/commit/c7c50343bb deivid (David Rodríguez)
02:15 AM Revision 0dfe427c (git): [rubygems/rubygems] Fix typo "shippped" => "shipped"
https://github.com/rubygems/rubygems/commit/1762d18d7b Vít Ondruch
02:15 AM Revision aea60361 (git): [rubygems/rubygems] Missing tweak
https://github.com/rubygems/rubygems/commit/407c1cbcfe deivid (David Rodríguez)
02:15 AM Revision 4be199e4 (git): [rubygems/rubygems] Simplify Gem::Platform#initialize
Based on PR feedback
Signed-off-by: Samuel Giddins <[email protected]>
https://github.com/rubygems/rubygems/commit/562d7aa087
segiddins (Samuel Giddins)
02:15 AM Revision 8f61e175 (git): [rubygems/rubygems] RuboCop
Signed-off-by: Samuel Giddins <[email protected]>
https://github.com/rubygems/rubygems/commit/768784910b
segiddins (Samuel Giddins)
02:15 AM Revision eb48418b (git): [rubygems/rubygems] Ensure that Gem::Platform parses strings to a fix point
The issue was that the property that
```ruby
platform = Gem::Platform.new $string
platform == Gem::Platform.new(platform.to_s)
```
was not always true.
This property (of acchieving a fix point) is important,
since `Gem::Platform` gets...
segiddins (Samuel Giddins)
12:46 AM Revision 72387ebd (git): Fix typos: misspell -w -error -source=text namespace.c
hsbt (Hiroshi SHIBATA)
12:21 AM Bug #21349 (Rejected): default gems should have version >= 1
> Versions starting with 0 often imply a prereleased or beta status.
No, we don't use that versioning policy.
hsbt (Hiroshi SHIBATA)

05/18/2025

05:55 PM Feature #21346: Introduce `String#ensure_suffix`
@nobu added! Thanks for the review. matheusrich (Matheus Richard)
03:33 AM Feature #21346: Introduce `String#ensure_suffix`
matheusrich (Matheus Richard) wrote in #note-3:
> > You say "queries that might find this pattern". That seems to say that you haven't found it yet.
> ...
Maybe like this?
```ruby
"Hell".sub(/(?<!o!)\z/, "o!") #=> "Hello!"
"Hell...
nobu (Nobuyoshi Nakada)
11:58 AM Misc #21350: Bundled gems lack online documentation
Yeah it's a problem that we should resolve it before Ruby 3.5's release.
However, if the gem's source is no longer synced to `ruby/ruby`, then with the current RDoc features it's very hard to generate its documentation as part of Ruby's...
st0012 (Stan Lo)
09:40 AM Misc #21350 (Closed): Bundled gems lack online documentation
Libraries which have been converted into bundled gems seem to have no online documentation.
For example, `csv` had its documentation inside docs.ruby-lang.org up to Ruby 3.3:
https://docs.ruby-lang.org/en/3.3/CSV.html
but after it...
osyoyu (Daisuke Aritomo)
07:25 AM Bug #21257: YJIT can generate infinite loop when OOM
ruby_3_3 commit:f57dd4470b9ba1e2e0007e814f94e8bb4fd2ab6f merged revision(s) commit:80a1a1bb8ae8435b916ae4f66a483e91ad31356a. nagachika (Tomoyuki Chikanaga)
07:25 AM Revision f57dd447 (git): merge revision(s) 80a1a1bb8ae8435b916ae4f66a483e91ad31356a: [Backport #21257]
YJIT: Fix potential infinite loop when OOM (GH-13186)
Avoid generating an infinite loop in the case where:
1. Block `first` is adjacent to block `second`, and the branch from `first` to
`second` is a fallthrou...
nagachika (Tomoyuki Chikanaga)
04:40 AM Bug #21344: Segment Fault Caused by no Backported Patches
ruby_3_3 commit:1f226f1efeeae3a5091c60e2f51e027d0598f394 merged revision(s) commit:b959263b58e26ef630c085f9f7ddc04373a998c7. nagachika (Tomoyuki Chikanaga)
04:32 AM Revision 1f226f1e (git): merge revision(s) b959263b58e26ef630c085f9f7ddc04373a998c7: [Backport #21344]
Fix Exception#detailed_message for GC compaction
Before this commit, the test fails with RGENGC_CHECK_MODE enabled:
TestException#test_detailed_message_under_gc_compact_stress [test/ruby/test_exception.rb:1466]:
...
nagachika (Tomoyuki Chikanaga)
04:31 AM Bug #21297: Update net-imap for ruby 3.2, 3.3, 3.4
ruby_3_3: merged at commit:74f46982ebfbec4d21b6fc8aff47f2e290307d36. nagachika (Tomoyuki Chikanaga)
04:30 AM Revision 74f46982 (git): Bump net-imap to v0.4.21 for Ruby 3.3 (CVE-2025-43857)
v0.4.20 addresses CVE-2025-43857 (GHSA-j3g3-5qv5-52mj).
v0.4.21 fixes bugs in `Net::IMAP::SequenceSet`.
nick evans
04:06 AM Misc #21325: make ruby more middle-aged man friendly
pynix (Pynix wang) wrote in #note-3:
> nobu (Nobuyoshi Nakada) wrote in #note-2:
> ...
I don't say that overriding `format` is not ok.
Just renaming `Kernel#format` is not acceptable.
> to_s will be good, like Integer, `255.to_s(16...
nobu (Nobuyoshi Nakada)
03:39 AM Bug #21329: `date_core.so` is broken with the recent MSYS2 update
Hello, nice to meet you.
I'm a Windows user.
As for this problem,
in the following folder of msys2 installed by scoop
C:\Users\username\scoop\apps\msys2\current\ucrt64\bin
> libwinpthread-1.dll
> ...
Overwrite the same file above,
...
valture (Takayuki Kamiyama)
03:00 AM Revision 551c444f (git): merge revision(s) b48b841378f80e16378ceb83f3b78e52df9ae023, 2fe8b9cd3d308d754f3d33a948dfb1dd782a10dc: [Backport #21327]
digest.so needs ruby/digest.h which is installed by build-ext
Copy to path with the base name
nagachika (Tomoyuki Chikanaga)
02:28 AM Bug #21327: Windows builds seem broken after clock_gettime changes?
ruby_3_3 a3adc05a4e1f5c5d1cd95eee92da9693b23360bf merge revision(s) 3e47e7a499acd256be549935fcb559d3c82e556c, 46e4c8673747de96838d2c5dec37446d23d99d88 nagachika (Tomoyuki Chikanaga)
01:33 AM Bug #21349 (Rejected): default gems should have version >= 1
Many of the default gems have version numbers less than 1, including venerable offerings such as net-http and yaml. Versions starting with 0 often imply a prereleased or beta status. Surely if a gem has been released as part of the bas... masterleep2 (Bill Lipa)
01:24 AM Revision 8a1d738b (git): merge revision(s) 3113bc8d445c4c24ed3827adfc50bb88c99b6364:
stat command is not provided on Windows nagachika (Tomoyuki Chikanaga)

05/17/2025

11:10 PM Bug #21348 (Open): Should Tracepoint track retry as another "call" event?
When `retry` is executed in a method, Tracepoint records it as a new "call" event.
``` ruby
# tracepoint-retry.rb
# method that retries once
def foo
attempts ||= 1
raise "Fail" if attempts == 1
rescue
attempts += 1
r...
karthikc (Karthik Chandrasekariah)
04:30 PM Feature #21346: Introduce `String#ensure_suffix`
> You say "queries that might find this pattern". That seems to say that you haven't found it yet.
I'm not sure what you mean. I just meant that the regex can find this pattern, but I can't guarantee it will _only_ find that.
> ...
As...
matheusrich (Matheus Richard)
08:24 AM Feature #21346: Introduce `String#ensure_suffix`
You say "queries that might find this pattern". That seems to say that you haven't found it yet.
What's the result for
"Hello".ensure_suffix("o!")
Is it "Helloo!", or is it "Hello!"?
duerst (Martin Dürst)
02:21 PM Feature #21347: Add `open_timeout` as an overall timeout option for `Socket.tcp`
@osyoyu
> Just out of curiosity: Is the example given in https://bugs.ruby-lang.org/issues/21347#note-1 a case when connect_timeout is 1000 ms (not 100 ms) ?
It's just a typo. `connect_timeout: 1000ms` is right, sorry.
shioimm (Misaki Shioi)
11:18 AM Feature #21347: Add `open_timeout` as an overall timeout option for `Socket.tcp`
I am +1 to this feature. As a `Socket.tcp` / `TCPSocket` user, I am usually concerned about the time required to open the connection as a whole, rather than name resolution and connect(2) as separate parts. I also like that the mental mo... osyoyu (Daisuke Aritomo)
07:37 AM Feature #21347: Add `open_timeout` as an overall timeout option for `Socket.tcp`
Sorry, the example in the sentence "Currently, a connect_timeout is raised only after the last connection attempt exceeds the timeout." is incorrect. The correct version is as follows:
Example:
When `connect_timeout: 100ms` is set an...
shioimm (Misaki Shioi)
07:27 AM Feature #21347 (Closed): Add `open_timeout` as an overall timeout option for `Socket.tcp`
I propose to add an overall timeout option to `Socket.tcp` (and `TCPSocket.new`)
### Background
Currently, `TCPSocket.new` and `Socket.tcp` accept two kind of timeout options:
- `resolv_timeout`, which controls the timeout for DNS...
shioimm (Misaki Shioi)
01:43 PM Feature #21311: Namespace on read (revised)
As of today, I also lean on the side of not feeling comfortable with this particular aspect of namespaces.
Isolation is easy to explain and understand. While new, I believe it is intuitive 👍.
However, this so open cross-namespace r...
fxn (Xavier Noria)
01:14 PM Feature #21311: Namespace on read (revised)
fxn (Xavier Noria) wrote in #note-101:
>
> ...
Well, you posted the code, not that it needed demonstrating as it was already admitted. Two references to **the same object** showing divergent instance state (ivars). This is not just a ...
bughit (bug hit)
06:07 AM Feature #21311: Namespace on read (revised)
For everyone following, we are talking about stuff like:
```ruby
# main.rb
module Kernel
@a = 1
end
p Kernel.object_id
p Kernel.instance_variable_defined?(:@a)
ns = Namespace.new
ns.require_relative('foo')
ns::Foo.m(Kernel)
# foo.r...
fxn (Xavier Noria)
05:53 AM Feature #21311: Namespace on read (revised)
bughit (bug hit) wrote in #note-99:
> Object id in this conversation is a proxy for identity, so the correct question is: Can today a single program have an object that is value unequal to itself. The current answer is no, and allowin...
fxn (Xavier Noria)
09:47 AM Bug #20009: Marshal.load raises exception when load dumped class include non-ASCII
Eregon (Benoit Daloze) wrote in #note-7:
> So my suggestion would be:
> ...
I'm not against to interpret the default encoding as UTF-8, but don't think transcoding is intuitive as different encoding symbols are different even if they a...
nobu (Nobuyoshi Nakada)
09:43 AM Bug #20009: Marshal.load raises exception when load dumped class include non-ASCII
Eregon (Benoit Daloze) wrote in #note-8:
> @nobu What happens when using your patch to Marshal.dump a class and then trying to load it on an older Ruby? Will it create an instance variable `E` or error?
Just an error.
> ...
If the...
nobu (Nobuyoshi Nakada)
07:44 AM Bug #21331: heap-use-after-free caused by rehash during transform_values!
ruby_3_3 commit:cb49400d680894d69534b0b4cd10b085de325e2a merged revision(s) commit:7793b59c8d2a13c124fe276e11723db23facce04. nagachika (Tomoyuki Chikanaga)
06:57 AM Revision cb49400d (git): merge revision(s) 7793b59c8d2a13c124fe276e11723db23facce04: [Backport #21331]
[Bug #21331] Prohibit hash modification during stlike loop nagachika (Tomoyuki Chikanaga)
06:56 AM Revision b25bfd33 (git): merge revision(s) 7f5b4fb26ea8c0a736a37101327905eebebee8bf:
Remove unused retval assignments nagachika (Tomoyuki Chikanaga)
06:41 AM Revision a3adc05a (git): merge revision(s) 3e47e7a499acd256be549935fcb559d3c82e556c, 46e4c8673747de96838d2c5dec37446d23d99d88:
Fix redefinition of `clock_gettime` and `clock_getres`
winpthreads-git 12.0.0.r720 provides `clock_gettime` and
`clock_getres` as inline functions.
Detect `clock_gettime` and `clock_getres` for winpthreads
nagachika (Tomoyuki Chikanaga)
06:27 AM Bug #21220: Memory corruption in update_line_coverage() [write at index -1]
ruby_3_3 commit:b1b6752fbeb2d23dbea639bd4b331c9e8b56f49c merged revision(s) commit:0d6263bd416338a339651fb97fe4d62701704c4b. nagachika (Tomoyuki Chikanaga)
06:21 AM Revision b1b6752f (git): merge revision(s) 0d6263bd416338a339651fb97fe4d62701704c4b: [Backport #21220]
Fix coverage measurement for negative line numbers
Fixes [Bug #21220]
Co-Authored-By: Mike Bourgeous <[email protected]>
Co-Authored-By: Jean Boussier <[email protected]>
nagachika (Tomoyuki Chikanaga)
12:42 AM Revision aa0f689b (git): [ruby/net-http] Freeze some constants to improve Ractor compatibility
Freeze `Net::HTTP::SSL_IVNAMES`, `Net::HTTPResponse::CODE_CLASS_TO_OBJ`
and `Net::HTTPResponse::CODE_TO_OBJ` to improve Ractor compatibility.
This change allows the following code to work:
Ractor.new {
uri = URI.parse('http:/...
Daisuke Aritomo
 

Also available in: Atom