Project

General

Profile

Activity

From 06/12/2025 to 06/18/2025

06/18/2025

10:58 PM Revision 3290d3d7 (git): ZJIT: Support invokebuiltin opcodes (#13632)
* `invokebuiltin`
* `invokebuiltin_delegate`
* `invokebuiltin_delegate_leave`
These instructions all call out to a C function, passing EC, self, and
some number of arguments. `invokebuiltin` gets the arguments from the
stack, whereas th...
dodecadaniel (Daniel Colson)
06:09 PM Revision c57efbfb (git): Fix `heap-use-after-free` in `free_fast_fallback_getaddrinfo_entry` (#13231)
This change addresses the following ASAN error:
```
==36597==ERROR: AddressSanitizer: heap-use-after-free on address 0x512000396ba8 at pc 0x7fcad5cbad9f bp 0x7fff19739af0 sp 0x7fff19739ae8
WRITE of size 8 at 0x512000396ba8 thread T0
...
Misaki Shioi
06:09 PM Revision 584365af (git): Ensure that memory is not freed before calling `free_fast_fallback_getaddrinfo_*` (#12661)
Ensure that `getaddrinfo_entry` and `getaddrinfo_shared` exist before free them in the main thread. Misaki Shioi
05:47 PM Revision 45ddafb9 (git): Fix use-after-free when resizing exivars (#13637)
Fix generic_ivar_set_shape_ivptr for table rebuild
[Bug #21438]
Previously GC could trigger a table rebuild of the generic ivar
st_table in the middle of calling the st_update callback. This could
cause entries to be reallocated or rea...
byroot (Jean Boussier)
05:18 PM Revision 521b2fcb (git): Add missing write barrier for hash on iseq
Found by wbcheck jhawthorn (John Hawthorn)
05:18 PM Revision 1bfd6493 (git): Add write barrier to rb_cArray_empty_frozen
Found by wbcheck jhawthorn (John Hawthorn)
05:18 PM Revision d5adf851 (git): Add write barrier to rb_cHash_empty_frozen
Found by wbcheck jhawthorn (John Hawthorn)
05:18 PM Revision 121f967b (git): More write barriers to local_iseq and parent_iseq
Found by wbcheck jhawthorn (John Hawthorn)
05:18 PM Revision 99de3890 (git): Use write barriers when loading catch table
Found by wbcheck jhawthorn (John Hawthorn)
05:18 PM Revision 61230f53 (git): Add missing write barriers to ibf_load
Found by wbcheck jhawthorn (John Hawthorn)
05:18 PM Revision db572489 (git): Fix a missing write barrier to mandatory_only_iseq
Found by wbcheck jhawthorn (John Hawthorn)
05:17 PM Revision 6b3fa235 (git): Add write barrier on tm_from_time->timew
We want to always use time_set_timew, as timew is 64-bit even on 32-bit
platforms so we need to be careful to both write that size, but still
trigger write barriers if we end up with a heap object.
jhawthorn (John Hawthorn)
05:17 PM Revision 0e2067df (git): Add missing write barrier to time_init_copy
jhawthorn (John Hawthorn)
05:17 PM Revision 7439f353 (git): Write barrier for zone on time
jhawthorn (John Hawthorn)
05:08 PM Revision bb0d6296 (git): Add write barrier for hash in obj_traverse_i
We are inserting directly into the st_table, so we need to issue a write
barrier from the hash.
jhawthorn (John Hawthorn)
05:08 PM Revision f951ce37 (git): Add missing writebarrier on move_leave
This object was newly allocated on move_enter, so some GC may happen and
it may have been marked by move_leave, so we need to issue an
rb_gc_writebarrier_remember so that any new references are seen afer the
memcpy from the old object.
jhawthorn (John Hawthorn)
05:08 PM Revision 89b3e471 (git): Add write barriers from Ractor::Port to Ractor
Ractor::Port will mark the ractor, so we must issue a write barrier.
This was detected by wbcheck, but we've also seen it in CI:
verify_internal_consistency_reachable_i: WB miss (O->Y) 0x000071507d8bff80 ractor/port/Ractor::Port ra...
jhawthorn (John Hawthorn)
02:06 PM Bug #21443 (Closed): Backport: Fix heap-use-after-free in free_fast_fallback_getaddrinfo_entry
https://github.com/ruby/ruby/pull/13652 alanwu (Alan Wu)
12:40 PM Bug #21443 (Closed): Backport: Fix heap-use-after-free in free_fast_fallback_getaddrinfo_entry
Please backport the following AddressSanitizer error into Ruby 3.4
https://github.com/ruby/ruby/pull/13231
I did not find a ticket related to the original fix.
Thank you!
rochlefebvre (Roch Lefebvre)
12:53 PM Bug #21444 (Closed): Crash in GC after accessing `object_id` (`obj_free` called for broken object)
```rb
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rubocop'
end
require 'objspace'
require 'tmpdir'
3.times { GC.start }
GC.disable
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
File.open...
Earlopain (Earlopain _)
11:26 AM Revision aaa956e8 (git): Now irb is a bundled gem and needs rubygems
nobu (Nobuyoshi Nakada)
10:08 AM Feature #21442: Make tsort to bundled gems
https://github.com/ruby/ruby/pull/13649 hsbt (Hiroshi SHIBATA)
10:07 AM Feature #21442 (Assigned): Make tsort to bundled gems
In last year, I gave up to make `tsort` to bundled gems because `set` depends `tsort`.
https://github.com/ruby/set/blob/29a253d2259e8d6d9b313dec8418ec5ed0caab08/lib/set.rb#L786
Fortunately, `set` is now core class. So, there is no ...
hsbt (Hiroshi SHIBATA)
08:44 AM Misc #20968: `Array#fetch_values` unexpected method name in stack trace
I have updated the behavior to (mostly) suppress the display of `<internal:...>` frames in a backtrace. The algorithm works as follows:
* When internal frames appear in a sequence, it retains only one frame -- the one directly called ...
mame (Yusuke Endoh)
05:52 AM Misc #20968 (Closed): `Array#fetch_values` unexpected method name in stack trace
Applied in changeset commit:git|10767283dd0277a1d780790ce6bde67cf2c832a2.
----------
Exclude internal frames from backtrace
This changeset suppresses backtrace locations like
`<internal:array>:211` as much as possible.
Before the patc...
mame (Yusuke Endoh)
08:15 AM Revision 4eaa245f (git): Restore ignored test target for mswin
hsbt (Hiroshi SHIBATA)
07:13 AM Revision 332f83d1 (git): Enabled the released versions of bundled gems that are working fine with Ruby HEAD
hsbt (Hiroshi SHIBATA)
07:06 AM Revision 13a2b9fa (git): Update bundled gems list as of 2025-06-18
git[bot]
06:39 AM Bug #21210: IO::Buffer gets invalidated on GC compaction
I think @alanwu means the mutable buffer path (IO::Buffer.for w/ block) uses rb_str_locktmp to pin the String's malloc'ed content memory (not RString), while the immutable buffer path (IO::Buffer.for w/o block) utilizes CoW to obtain a f... hanazuki (Kasumi Hanazuki)
05:51 AM Revision 2606a36a (git): Update bundled version of debug and use the dev version of irb
mame (Yusuke Endoh)
05:51 AM Revision b7cb29b6 (git): Add a test for the previous commit
mame (Yusuke Endoh)
05:51 AM Revision 10767283 (git): Exclude internal frames from backtrace
This changeset suppresses backtrace locations like
`<internal:array>:211` as much as possible.
Before the patch:
```
$ ruby -e '[1].fetch_values(42)'
<internal:array>:211:in 'Array#fetch': index 42 outside of array bounds: -1...1 (Index...
mame (Yusuke Endoh)
05:51 AM Revision ca10c521 (git): refactor: rename bt_update_cfunc_loc to bt_backpatch_loc
In preparation for using it to update not only cfunc frames but also
internal frames, the function (and related variable names) are chagned.
I felt that the word "backpatch" is more appropriate than the more
general verb "update" here.
mame (Yusuke Endoh)
04:46 AM Bug #21312 (Closed): ruby 3.5-dev installs a gemspec for rdoc that misses dependencies
Applied in changeset commit:git|ecf1746fa4b899692514e68719227f04f9d6c1cc.
----------
Use the original gemspec from release package of RDoc
[Bug #21312]
https://bugs.ruby-lang.org/issues/21312
https://github.com/ruby/rdoc/pull/1379
hsbt (Hiroshi SHIBATA)
04:45 AM Revision f0d32ee8 (git): net-imap and irb are not working with dev version of RDoc
Because they are required markdown.rb provided by release package. hsbt (Hiroshi SHIBATA)
04:45 AM Revision ecf1746f (git): Use the original gemspec from release package of RDoc
[Bug #21312]
https://bugs.ruby-lang.org/issues/21312
https://github.com/ruby/rdoc/pull/1379
hsbt (Hiroshi SHIBATA)

06/17/2025

10:51 PM Revision 3cfd71e7 (git): Fix minor typos in comments, specs, and docs
Just a bit of minor cleanup
Signed-off-by: Tim Smith <tsmith84@gmail.com>
tas50 (Tim Smith)
10:33 PM Revision c6a66454 (git): Fix early write barrier rb_marshal_define_compat
This write barrier occurred before the entry was added to the table, so
if GC occurred when inserting into the table, the write could be missed.
jhawthorn (John Hawthorn)
10:32 PM Revision a7dc515c (git): Fix too early writebarrier in tally_up
After returning from the callback in st_update is the point that the
hash table may be resized, which could trigger a GC and mark the table
being used for the tally.
RUBY_GC_LIBRARY=wbcheck WBCHECK_VERIFY_AFTER_WB=1 ./miniruby -e '(...
jhawthorn (John Hawthorn)
10:03 PM Bug #21441 (Closed): SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
Applied in changeset commit:git|e3ec101cc21613550ef87b7bd8432a69c7e639de.
----------
thread_cleanup: set CFP to NULL before clearing ec's stack
We clear the CFP first so that if a sampling profiler interrupts the current thread during ...
Anonymous
08:58 PM Bug #21441: SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
I opened a PR [here](https://github.com/ruby/ruby/pull/13643).
This may need to be backported.
luke-gru (Luke Gruber)
08:45 PM Bug #21441 (Closed): SEGV during thread cleanup if profiler calls thread_profiles_frames at wrong time
During thread cleanup, if a ruby sampling profiler calls `thread_profile_frames` at just the wrong time, the ec's stack is cleared but the CFP still exists on the EC, so `thread_profile_frames` assumes it can walk the stack and crashes.
...
luke-gru (Luke Gruber)
10:03 PM Revision e3ec101c (git): thread_cleanup: set CFP to NULL before clearing ec's stack
We clear the CFP first so that if a sampling profiler interrupts the current thread during `rb_ec_set_vm_stack`,
`thread_profile_frames` returns early instead of trying to walk the stack that's no longer set on the ec.
The early return ...
Luke Gruber
04:46 PM Revision b0662602 (git): Follow up testunit
* Update method names.
* Sort shuffled tests by names.
nobu (Nobuyoshi Nakada)
04:46 PM Revision 1a527929 (git): Revert "Temporary pend unknown behavior of parallel tests"
This reverts commit 980f61935f6e8331e0908dc963e60fb727ab4d8c, which
seems no longer needed.
nobu (Nobuyoshi Nakada)
02:41 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
______________________________________________ Anonymous
07:16 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
@hanazuki Thanks for the link, I wish I found that earlier. It confirms that it was already broken which is the same conclusion I came to.
hanazuki (Kasumi Hanazuki) wrote in #note-20:
> FYI: IO::Buffer is now broken (by a recent change...
Eregon (Benoit Daloze)
02:06 PM Revision c99cb62d (git): Fix up tool/auto-style.rb
Do not clear the commit-wide flags per file. nobu (Nobuyoshi Nakada)
01:28 PM Revision 8faa3232 (git): Add missing write barriers in `rb_imemo_fields_clone`.
byroot (Jean Boussier)
01:28 PM Revision cd9f447b (git): Refactor generic fields to use `T_IMEMO/fields` objects.
Followup: https://github.com/ruby/ruby/pull/13589
This simplify a lot of things, as we no longer need to manually
manage the memory, we can use the Read-Copy-Update pattern and
avoid numerous race conditions.
Co-Authored-By: Étienne Ba...
byroot (Jean Boussier)
01:28 PM Revision 164486a9 (git): Refactor `rb_imemo_fields_new` to not assume T_CLASS
byroot (Jean Boussier)
01:28 PM Revision fb68721f (git): Rename `imemo_class_fields` -> `imemo_fields`
byroot (Jean Boussier)
01:28 PM Revision 4cb0205f (git): Handle false positives in tool/auto-style.rb
byroot (Jean Boussier)
11:51 AM Revision 0933400f (git): ZJIT: Add codegen (and FrameState) for GetConstPath
Issue a call to rb_vm_opt_getconstant_path() like the interpreter, but
since that allocates the IC, we need to save the PC before calling. Add
FrameState to GetConstPath to get access to the PC.
alanwu (Alan Wu)
11:35 AM Revision 01ff17fa (git): ZJIT: Parse opt freeze insns to HIR
* `opt_hash_freeze`
* `opt_ary_freeze`
* `opt_str_freeze`
* `opt_str_uminus`
Similar to `opt_neq`, but there are no args for `freeze`
Co-authored-by: ywenc <ywenc@github.com>
Co-authored-by: Max Bernstein <max@bernsteinbear.com>
dodecadaniel (Daniel Colson)
11:18 AM Revision 9e5c74f2 (git): [ruby/prism] [DOC] Fix a typo in comment
ruby/ruby#13636
https://github.com/ruby/prism/commit/e13d4f19db
Co-Authored-By: Tim Smith <tsmith84@gmail.com>
nobu (Nobuyoshi Nakada)
11:00 AM Revision 9e839d3c (git): Optimize `benchmark/vm_ivar_of_class`
```
compare-ruby: ruby 3.5.0dev (2025-06-17T08:45:40Z master e9d35671d2) +PRISM [arm64-darwin24]
last_commit=[ruby/json] Fix a typo
built-ruby: ruby 3.5.0dev (2025-06-17T09:27:05Z opt-getivar-for-cl.. ed1d7cd778) +PRISM [arm64-darwin24]
...
byroot (Jean Boussier)
10:05 AM Bug #20452: Ruby 3.3 on Alpine Linux results in a relatively shallow SystemStackError exception
Halfway on the way to 3.5 now. I want to help out if I am able to, but right now I'm not sure what the holdup is. Earlopain (Earlopain _)
09:41 AM Revision 9647dca1 (git): [ruby/tempfile] [DOC] Fix a typo
ruby/ruby#13636
https://github.com/ruby/tempfile/commit/366d9ccb8f
Co-Authored-By: Tim Smith <tsmith84@gmail.com>
nobu (Nobuyoshi Nakada)
08:45 AM Revision e9d35671 (git): [ruby/json] Fix a typo
ruby/ruby#13636
https://github.com/ruby/json/commit/6fc2c4b6ab
Co-Authored-By: Tim Smith <tsmith84@gmail.com>
nobu (Nobuyoshi Nakada)
07:53 AM Bug #21438 (Closed): use-after-free when resizing exivars
The remaining issue was fixed in 055fef00a1c27fdc8293114dc134ca7910b1dc79.
Backport PRs:
- 3.4: https://github.com/ruby/ruby/pull/13637
- 3.3: https://github.com/ruby/ruby/pull/13638
Note that the bug while possible is quit...
byroot (Jean Boussier)
07:30 AM Revision 89926891 (git): Adjust indent [ci]
nobu (Nobuyoshi Nakada)
07:10 AM Bug #21210: IO::Buffer gets invalidated on GC compaction
alanwu (Alan Wu) wrote in #note-5:
> Looks like the mutable string buffer code paths pin using rb\_str\_locktmp().
Does `rb_str_locktmp()` pin? I couldn't see anything like that from the usage of the flag it sets.
Eregon (Benoit Daloze)
05:57 AM Bug #21210 (Closed): IO::Buffer gets invalidated on GC compaction
Applied in changeset commit:git|8aac19d5987150cf5c45fee73c7a949ca472f488.
----------
io_buffer: Reimplement dcompact for IO::Buffer
The `source` field in IO::Buffer can have a String or an IO::Buffer
object, if not nil.
- When the `so...
hanazuki (Kasumi Hanazuki)
06:09 AM Revision a3f2f7b7 (git): lewagon/wait-on-check-action didn't need bot token
hsbt (Hiroshi SHIBATA)
06:09 AM Revision 4e2db1ff (git): [rubygems/rubygems] Etc exemption on Windows is no longer necessary
https://github.com/rubygems/rubygems/commit/228f59e3ab deivid (David Rodríguez)
06:09 AM Revision 89ce782f (git): [rubygems/rubygems] Reword a couple of specs to further clarify them
https://github.com/rubygems/rubygems/commit/e28b5e306f deivid (David Rodríguez)
06:09 AM Revision 632bf3b5 (git): [rubygems/rubygems] Migrate mirror probe specs to use the compact index API
Could potentially fix some flakies we're using and make the specs more
"modern" and simplifies them because less fallbacks are involved.
https://github.com/rubygems/rubygems/commit/30da9a1a93
deivid (David Rodríguez)
06:09 AM Revision 3319d3d7 (git): [rubygems/rubygems] Consistently use instance variables directly
I don't think the indirection improve things.
https://github.com/rubygems/rubygems/commit/b408b28844
deivid (David Rodríguez)
06:09 AM Revision 0a62e82a (git): [rubygems/rubygems] Fix `gem install` sometimes compiling the wrong source files
If a previous copy of a gem is already installed, RubyGems will not
reinstall the gem but only recompile its extensions. This seems like a
good idea, but only if the gem is being installed from the registry.
If we are installing a local...
deivid (David Rodríguez)
06:09 AM Revision 0c2f0ffa (git): [rubygems/rubygems] Refactor some logic to create extconf files for tests
https://github.com/rubygems/rubygems/commit/9a859078ab deivid (David Rodríguez)
06:09 AM Revision fadcee3b (git): [rubygems/rubygems] Use `Dir.chdir` with a block
I don't see any warnings.
https://github.com/rubygems/rubygems/commit/395df777a2
deivid (David Rodríguez)
06:09 AM Revision 459f265b (git): [rubygems/rubygems] Cleanup dead code, RubyGems 3.3 is no longer supported
https://github.com/rubygems/rubygems/commit/945a29a477 deivid (David Rodríguez)
06:01 AM Revision 055fef00 (git): Free after insert in generic_ivar_set_shape_fields
Previously we were performing a realloc and then inserting the new value
into the table. If the table was flagged as requiring a rebuild, this
could trigger GC work and marking within that GC could access the fields
freed by realloc.
jhawthorn (John Hawthorn)
05:57 AM Revision 8aac19d5 (git): io_buffer: Reimplement dcompact for IO::Buffer
The `source` field in IO::Buffer can have a String or an IO::Buffer
object, if not nil.
- When the `source` is a String object. The `base` field points to the
memory location of the String content, which can be embedded in
RSTRING, ...
hanazuki (Kasumi Hanazuki)
05:57 AM Revision 4cc58c3a (git): Revert "Mark rb_io_buffer_type references declaratively"
This reverts commit 6012145299cfa4ab561360c78710c7f2941a7e9d. hanazuki (Kasumi Hanazuki)
05:52 AM Revision 67366413 (git): [ruby/win32-registry] Minor readme improvements and typo fixes
- Put shell commands in code blocks so they can easily be copied from
the GitHub UI directly
- Fix a few typos
- Fix a dead link to MSDN
Signed-off-by: Tim Smith <tsmith84@gmail.com>
https://github.com/ruby/win32-registry/commit/61a4...
tas50 (Tim Smith)
03:30 AM Revision a60bf9e6 (git): * adjust indent
nobu (Nobuyoshi Nakada)
03:30 AM Revision c09619d9 (git): Auto-style indent
nobu (Nobuyoshi Nakada)
03:20 AM Revision 21c7131d (git): Run git without shell
nobu (Nobuyoshi Nakada)
03:20 AM Revision 9255db4b (git): Run auto-style only when pull-request
nobu (Nobuyoshi Nakada)
01:07 AM Revision 50c6bd47 (git): Update vm->self location and mark it in vm.c for consistency
Satoshi Tagomori

06/16/2025

11:21 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
FYI: IO::Buffer is now broken (by a recent change) because the embedded Strings are not pinned, and I'm proposing a fix at #21210 hanazuki (Kasumi Hanazuki)
09:00 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
ioquatix (Samuel Williams) wrote in #note-16:
> My usage of `rb_str_locktmp` isn't about mutation, it's about making sure the pointer doesn't change. Could compacting GC cause embedded frozen strings to be moved?
rb_str_locktmp() doe...
Eregon (Benoit Daloze)
08:59 PM Bug #20998 (Closed): rb_str_locktmp() changes flags of frozen strings and string literals
Applied in changeset commit:git|83fb07fb2c97b9922450979fa4a56f43324317a9.
----------
[Bug #20998] Check if the string is frozen in rb_str_locktmp() & rb_str_unlocktmp()
Eregon (Benoit Daloze)
11:20 PM Revision b1410c1c (git): ZJIT: Add codegen for StringCopy
Prior to this commit we compiled `putstring` and `putchilledstring` to
`StringCopy`, but then failed to compile past HIR.
This commit adds codegen for `StringCopy` to call `rb_ec_str_ressurrect`
as the VM does for these instructions.
dodecadaniel (Daniel Colson)
08:59 PM Revision 2956573b (git): Add test for `IO::Buffer.for(frozen_string) {}` and omit rb_str_{,un}locktmp in that case
Eregon (Benoit Daloze)
08:59 PM Revision 83fb07fb (git): [Bug #20998] Check if the string is frozen in rb_str_locktmp() & rb_str_unlocktmp()
Eregon (Benoit Daloze)
07:24 PM Revision cce4bfdc (git): ZJIT: Add support for putspecialobject (#13565)
* ZJIT: Add support for putspecialobject
* Address feedback
* Update tests
* Adjust the indentation of a Ruby test
---------
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Stan Lo
10:20 AM Revision 260ac23a (git): Use `success` option to check if the process failed
nobu (Nobuyoshi Nakada)
10:18 AM Revision f0371efb (git): Suppress stderr output in `TestRubyOptions#assert_segv`
It is checked against the given `list`, do not print the same output
twice.
nobu (Nobuyoshi Nakada)
10:16 AM Revision 85e61eac (git): Use the message given to `TestRubyOptions#assert_segv`
nobu (Nobuyoshi Nakada)
07:16 AM Bug #21438 (Open): use-after-free when resizing exivars
Reopening because the fix we merged need some more work:
```
ruby(rb_vm_bugreport) ../src/vm_dump.c:1175
ruby(rb_bug_for_fatal_signal+0xf5) [0x55800a5c2d45] ../src/error.c:1130
ruby(sigsegv+0x46) [0x55800a31d176] ../src/signal.c:93...
byroot (Jean Boussier)
05:33 AM Revision c59f66b6 (git): CI: Fix spec_opts
nobu (Nobuyoshi Nakada)
05:18 AM Revision 311aa0df (git): Launchable: Terminate Launchable CLI process quickly by sending singa… (#13622)
Launchable: Terminate Launchable CLI process quickly by sending singals to a process group
Sometimes, the timeout errors occurred in Compilations workflow, this is because Launchable CLI process was not terminated correctly. To address ...
ono-max (Naoto Ono)
01:03 AM Revision ddb412f6 (git): [rubygems/rubygems] Fix redefinition warnings when using modern RubyGems with old Bundler
https://github.com/rubygems/rubygems/commit/ce7e8e92ca deivid (David Rodríguez)

06/15/2025

04:24 PM Bug #21436 (Closed): Date#ajd returns incorrect positive values due to integer overflow for large negative years
Applied in changeset commit:git|022c18b60d2245980abcdd7b5195eebca73b8809.
----------
[ruby/date] [Bug #21436] check for fixnum lower bound in `m_ajd`
Issue - https://bugs.ruby-lang.org/issues/21436
Apparently, the lower bound check is...
Anonymous
04:12 PM Revision 022c18b6 (git): [ruby/date] [Bug #21436] check for fixnum lower bound in `m_ajd`
Issue - https://bugs.ruby-lang.org/issues/21436
Apparently, the lower bound check is missing, which results in overflow & wrapping later on in RB_INT2FIX
Signed-off-by: Dmitry Dygalo <dmitry.dygalo@workato.com>
https://github.com/ruby...
Dmitry Dygalo
04:11 PM Bug #21437 (Closed): Date#hash may return different values for equal dates with large years
Applied in changeset commit:git|c1877d431e76f4a782d51602fa8487e98d302956.
----------
[ruby/date] [Bug #21437] Date#hash for large years
Addresses https://bugs.ruby-lang.org/issues/21437
Signed-off-by: Dmitry Dygalo <dmitry.dygalo@work...
Anonymous
04:11 PM Revision c1877d43 (git): [ruby/date] [Bug #21437] Date#hash for large years
Addresses https://bugs.ruby-lang.org/issues/21437
Signed-off-by: Dmitry Dygalo <dmitry.dygalo@workato.com>
https://github.com/ruby/date/commit/31f07bc576
Dmitry Dygalo
02:59 PM Revision 9a840fd2 (git): Relax the criteria of flaky weak_references count test
nobu (Nobuyoshi Nakada)
02:59 PM Revision a259ce40 (git): Simplify weak_references count test initialization
Using an enumerator does not resolve the intermittent failures: 100+
failures in 10,000 iterations.
nobu (Nobuyoshi Nakada)
02:59 PM Revision 04925c66 (git): Add `--keep-repeating` option
It directs the program to continue repeating the tests the specified
number of times, even if any tests fail along the way.
nobu (Nobuyoshi Nakada)
01:37 PM Revision d60144a4 (git): Implement COLON3 NODE locations
ydah (Yudai Takada)
01:37 PM Revision c584790b (git): Implement COLON2 NODE locations
ydah (Yudai Takada)
01:35 PM Revision 2d96400c (git): Fix typo in error message for shape_id verification
ydah (Yudai Takada)
01:35 PM Revision 251cfdfe (git): Fix typo in rb_bug message for unreachable code
ydah (Yudai Takada)
01:34 PM Revision ef66aef7 (git): Fix typo in NEWS.md
ydah (Yudai Takada)
11:58 AM Revision b670a04a (git): Fix a missing double quote
nobu (Nobuyoshi Nakada)
11:24 AM Revision 36a04de9 (git): Dump with debugger before killing stuck worker
nobu (Nobuyoshi Nakada)
04:41 AM Revision c88c2319 (git): Skip test_exivar_resize_with_compaction_stress on s390x
jhawthorn (John Hawthorn)
04:18 AM Bug #21380: Use-After-Free in String#split with In-Block String Modification
ruby_3_3 commit:8908cb07829628115f7455508c2d5885ac99c939 merged revision(s) commit:fa85d23ff4a02985ebfe0716b0ff768f5b4fe13d. nagachika (Tomoyuki Chikanaga)
04:16 AM Bug #21356: Error when accessing local variable named "default" with Binding#local_variable_get
The numbered parameter checks in Binding#local_variable_get was introduced at commit:993fd96ce6bb763e08207bb3d53824d5d46d07a4 ([Bug #20965], [Bug #21049]). The changeset was not backported into ruby_3_3. I decide to mark this ticket "DON... nagachika (Tomoyuki Chikanaga)
04:00 AM Bug #20009: Marshal.load raises exception when load dumped class include non-ASCII
In my understanding, with commit:097d742a1ed53afb91e83aef01365d68b763357b Marshal.load could cause error with bytes stream which was dumped from older version ruby. If this is right, I don't want to backport the change to stable branch. nagachika (Tomoyuki Chikanaga)
03:51 AM Revision 8908cb07 (git): merge revision(s) fa85d23ff4a02985ebfe0716b0ff768f5b4fe13d: [Backport #21380]
[Bug #21380] Prohibit modification in String#split block
Reported at https://hackerone.com/reports/3163876
nagachika (Tomoyuki Chikanaga)
03:01 AM Revision f5ada7d1 (git): Skip the optional capi digest specs if fiddle is not installed
Should fix a failure on the OpenBSD RubyCI machine. jeremyevans (Jeremy Evans)
12:53 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
My usage of `rb_str_locktmp` isn't about mutation, it's about making sure the pointer doesn't change. Could compacting GC cause embedded frozen strings to be moved? ioquatix (Samuel Williams)
12:02 AM Feature #21435: Kernel#then_try as a conditional #then
`optional` -> `then_try` Alexander.Senko (Alexander Senko)

06/14/2025

02:39 PM Feature #21435: Kernel#then_try as a conditional #then
@Alexander.Senko I don't think my opinion weights much here, but here it is, nevertheless.
When writing in "chaining" style (which I know is not everybody's favorite), "do this transformation/next step conditionally" is indeed a frequ...
zverok (Victor Shepelev)
11:50 AM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
PR at https://github.com/ruby/ruby/pull/13615 Eregon (Benoit Daloze)
08:44 AM Bug #21255: Can't build Ruby with Windows SDK 10.0.26100
ruby_3_3 commit:a205407e165e4570b8b6d6e4b7a019b51962ecba merged revision(s) commit:72bda0f981c7136f50254c433bbfb97a953f634b. nagachika (Tomoyuki Chikanaga)
08:43 AM Revision a205407e (git): merge revision(s) 72bda0f981c7136f50254c433bbfb97a953f634b: [Backport #21255]
[Bug #21255] Win32: Do not export `__declspec(selectany)` symbols
```
x64-vcruntime140-ruby350.def : error LNK2001: unresolved external symbol Avx2WmemEnabledWeakValue
```
nagachika (Tomoyuki Chikanaga)
08:41 AM Bug #21283: Some tests of TestMkmfConvertible is failing with VS2022 17.14.0 preview 4.0
ruby_3_3 commit:dc88822c3eabbd3f5ac080b1ff1059b1f0066bd2 merged revision(s) commit:e1adb6cb15129a54df0c55a337e98b92b2a55e3f. nagachika (Tomoyuki Chikanaga)
08:41 AM Revision dc88822c (git): merge revision(s) e1adb6cb15129a54df0c55a337e98b92b2a55e3f: [Backport #21283]
Win: Suppress false warnings from Visual C 17.14.1
https://developercommunity.visualstudio.com/t/warning-C5287:-operands-are-different-e/10877942?
It is not able to silence "operands are different enum types"
wa...
nagachika (Tomoyuki Chikanaga)
06:53 AM Revision 32737f8a (git): Adjust indent [ci skip]
nobu (Nobuyoshi Nakada)
06:29 AM Bug #21438 (Closed): use-after-free when resizing exivars
Applied in changeset commit:git|5342d9130beb44f9aa1dddbb7f6276bf01c7404f.
----------
Fix generic_ivar_set_shape_field for table rebuild
[Bug #21438]
Previously GC could trigger a table rebuild of the generic fields
st_table in the mid...
jhawthorn (John Hawthorn)
06:29 AM Revision 39697ffd (git): Remove fields_tbl in gen_fields_lookup_ensure_size
jhawthorn (John Hawthorn)
06:29 AM Revision 5342d913 (git): Fix generic_ivar_set_shape_field for table rebuild
[Bug #21438]
Previously GC could trigger a table rebuild of the generic fields
st_table in the middle of calling the st_update callback. This could
cause entries to be reallocated or rearranged and the update to be for
the wrong entry.
...
jhawthorn (John Hawthorn)
05:55 AM Revision 74cdf872 (git): Remove test_object_id_race_free_with_stress_compact
This test was written for another implementation of `#object_id`
which had complex interations with GC, that's not the case of
the implementation that was actually merged.
byroot (Jean Boussier)
03:32 AM Revision 68625a23 (git): Fix blocking operation cancellation. (#13614)
Expose `rb_thread_resolve_unblock_function` internally. Samuel Williams
03:14 AM Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines
ruby_3_3 commit:5de0c228a34dc919b663b547f933fb276333fdce merged revision(s) commit:2297afda7ff3926c51fea700dfbf0f0eb4fea1e5. nagachika (Tomoyuki Chikanaga)
02:41 AM Revision 5de0c228 (git): merge revision(s) 2297afda7ff3926c51fea700dfbf0f0eb4fea1e5: [Backport #21340]
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...
nagachika (Tomoyuki Chikanaga)
02:39 AM Bug #21354: Symbol#to_proc is not ractor safe
ruby_3_3 commit:d5c8fd2043f4425c3fe2a87558dfbd80ebff9911 merged revision(s) commit:f6cbf499bc98b851034fffb49fcbb59d495f6f7b. nagachika (Tomoyuki Chikanaga)
02:39 AM Revision d5c8fd20 (git): merge revision(s) f6cbf499bc98b851034fffb49fcbb59d495f6f7b: [Backport #21354]
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....
nagachika (Tomoyuki Chikanaga)
02:04 AM Bug #21048: [Prism] rescue in modifier form with condition behaves differently
Backporting c2908613368b2ae404d094a15df61d830fc46dc9 depends on many changesets about prism in ruby_3_3. Please make a backport pull request. nagachika (Tomoyuki Chikanaga)
12:54 AM Revision c45c600e (git): Add `open_timeout` as an overall timeout option for `Socket.tcp` (#13368)
* Add `open_timeout` as an overall timeout option for `Socket.tcp`
[Background]
Currently, `TCPSocket.new` and `Socket.tcp` accept two kind of timeout options:
- `resolv_timeout`, which controls the timeout for DNS resolution
- `connect...
Misaki Shioi

06/13/2025

09:50 PM Revision 15084fbc (git): Get rid of FL_EXIVAR
Now that the shape_id gives us all the same information, it's no
longer needed.
byroot (Jean Boussier)
09:50 PM Revision 6dbe24fe (git): Use the `shape_id` rather than `FL_EXIVAR`
We still keep setting `FL_EXIVAR` so that `rb_shape_verify_consistency`
can detect discrepancies.
byroot (Jean Boussier)
09:50 PM Revision b51078f8 (git): Enforce consistency between shape_id and FL_EXIVAR
The FL_EXIVAR is a bit redundant with the shape_id.
Now that the `shape_id` is embedded in all objects on all archs,
we can cheaply check if an object has any fields with a simple
bitmask.
byroot (Jean Boussier)
08:24 PM Revision f2d7c6af (git): Suppress unused-variable warning
nobu (Nobuyoshi Nakada)
07:45 PM Revision 39569da4 (git): Work around CI failures coming from Launchable
https://github.com/ruby/ruby/actions/runs/15640729145/job/44067161266 k0kubun (Takashi Kokubun)
07:40 PM Revision 69148a87 (git): ZJIT: Partially enable btest on CI (#13613)
k0kubun (Takashi Kokubun)
05:46 PM Revision a99d941c (git): Add SHAPE_ID_HAS_IVAR_MASK for quick ivar check
This allow checking if an object has ivars with just a shape_id
mask.
byroot (Jean Boussier)
05:46 PM Revision fb0dbbc0 (git): [ruby/date] d_lite_marshal_load: copy ivars in the right order
https://github.com/ruby/date/commit/dbf4e957dc byroot (Jean Boussier)
05:40 PM Revision 99a72df1 (git): [ruby/date] Remove references to FL_EXIVAR
This flag isn't really meant to be public, it's an implementation
detail of Ruby.
And checking it before calling `rb_copy_generic_ivar` only save
a function call.
https://github.com/ruby/date/commit/8175252653
byroot (Jean Boussier)
05:29 PM Feature #21346: Introduce `String#ensure_suffix`
I think `with_suffix` would be a bit clearer for the implemented semantics. Eregon (Benoit Daloze)
05:23 PM Misc #21385: Namespace: Suggesting a rename
hsbt (Hiroshi SHIBATA) wrote in #note-19:
> ClassLoader (joke)
I'm not sure how I missed this but indeed this feature seems very much like Java's ClassLoader,
i.e., a way to load files/"features"/modules/classes again in their own i...
Eregon (Benoit Daloze)
04:28 PM Revision 4a2b53ae (git): * remove trailing spaces. [ci skip]
git[bot]
04:27 PM Revision e22fc73c (git): Fix a race condition in object_id for shareable objects
If an object is shareable and has no capacity left, it isn't
safe to store the object ID in fields as it requires an object
resize which can't be done unless all field reads are synchronized.
In this very specific case we create the obj...
byroot (Jean Boussier)
03:54 PM Revision 0674f7df (git): ZJIT: Only write LIR output of HIR instructions with output
tekknolagi (Maxwell Bernstein)
03:54 PM Revision f208e017 (git): ZJIT: Add codegen for SideExit
tekknolagi (Maxwell Bernstein)
03:13 PM Revision 97ea756e (git): test/ruby/test_ractor.rb: avoid outputting anything
byroot (Jean Boussier)
03:13 PM Revision 545e99da (git): mmtk: Get rid of unused reference to FL_EXIVAR
byroot (Jean Boussier)
12:09 PM Revision 1d11e1be (git): Suppress unused-variable warning
nobu (Nobuyoshi Nakada)
10:48 AM Revision a66d823c (git): CI: Fix launchable timeout
`setup_launchable` needs to run the current shell, not in a subshell. nobu (Nobuyoshi Nakada)
10:35 AM Revision 583ce06c (git): Normalize subseconds using `wideint_t` instead of `time_t`
nobu (Nobuyoshi Nakada)
10:35 AM Revision b8de3cfb (git): Conversion is needed between `WIDEVALUE` and `VALUE`
nobu (Nobuyoshi Nakada)
10:35 AM Revision c7f5ae98 (git): The device numbers in `struct statx` may be larger than `dev_t`
`dev_t` is already 64-bit in glibc, but on some platforms like Alpine
Linux and Android NDK, `makedev` is defined as more than 32-bit (
promoting to `unsigned long long` then left-shifting by 32bit), while
`dev_t` is still 32-bit.
nobu (Nobuyoshi Nakada)
10:03 AM Revision 071aa02a (git): shape.c: cleanup unused IDs
id_frozen and id_t_object are no longer used.
id_object_id no longer need to be exposed.
byroot (Jean Boussier)
08:08 AM Revision dd4c5acc (git): vm_callinfo.h: Stick to using user flags
For some unclear reasons VM_CALLCACHE_UNMARKABLE
and VM_CALLCACHE_UNMARKABLE used global flags rather than the
available IMEMO_FL_USER flags.
byroot (Jean Boussier)
06:16 AM Bug #21440 (Closed): Cannot create instances of frozen Data subclasses
Applied in changeset commit:git|2e7e78cd590d20aa9d41422e96302f3edd73f623.
----------
[Bug #21440] Stop caching member list in frozen Data/Struct class
nobu (Nobuyoshi Nakada)
05:25 AM Bug #21440: Cannot create instances of frozen Data subclasses
Also `Class.new(Struct.new(:a)).freeze.new`. nobu (Nobuyoshi Nakada)
03:35 AM Bug #21440 (Closed): Cannot create instances of frozen Data subclasses
This fails since Data was added in Ruby 3.2:
```ruby
Class.new(Data.define(:a)).freeze.new
# can't modify frozen #<Class:#<Class:0x000079cf41253160>>: #<Class:0x000079cf41253160> (FrozenError)
```
Note that the error occurs even...
jeremyevans0 (Jeremy Evans)
05:22 AM Revision 2e7e78cd (git): [Bug #21440] Stop caching member list in frozen Data/Struct class
nobu (Nobuyoshi Nakada)
03:55 AM Revision 64c421db (git): [rubygems/rubygems] Surpressing warning for CGI library of Ruby 3.5+
```
❯ bin/rspec ./spec/bundler/friendly_errors_spec.rb
/Users/hsbt/Documents/github.com/rubygems/rubygems/bundler/spec/bundler/friendly_errors_spec.rb:5: warning: CGI library is removed from Ruby 3.5. Please use cgi/escape instead for CG...
hsbt (Hiroshi SHIBATA)
03:55 AM Revision 22a7f6b6 (git): [rubygems/rubygems] Recognize JRuby loaded from a classloader, not just any JAR
Such is the case if you embed JRuby into an application dynamically (such
as via OSGi). From my test environment:
```
irb(main):006:0> $LOADED_FEATURES.grep(/cli.rb/)
=> ["uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/bundler/cli...
ccutrer (Cody Cutrer)
03:55 AM Revision 73532ecf (git): [rubygems/rubygems] Update bundled tls certs
By running tool/update_bundled_ca_certificates.rb
Signed-off-by: Samuel Giddins <segiddins@segiddins.me>
https://github.com/rubygems/rubygems/commit/54f5278450
segiddins (Samuel Giddins)
02:14 AM Revision 7cfdcde0 (git): Expect aligned pointer for the atomic operations
nobu (Nobuyoshi Nakada)
12:18 AM Revision 7fa3e1a1 (git): ZJIT: Write a callee frame on JIT-to-JIT calls (#13579)
Co-authored-by: Max Bernstein <tekknolagi@gmail.com> k0kubun (Takashi Kokubun)

06/12/2025

09:03 PM Bug #21090 (Closed): SEGV from require in Thread in Ractor
Applied in changeset commit:git|b28f3443122c4e5461877d704618c752e56ca8b0.
----------
Use a T_DATA for cross_ractor_require
[Bug #21090]
The struct was previously allocated on the stack, which could be freed
if the Thread is terminated...
jhawthorn (John Hawthorn)
08:13 PM Revision ef9301a6 (git): Ensure crr->feature is an fstring
jhawthorn (John Hawthorn)
08:13 PM Revision b28f3443 (git): Use a T_DATA for cross_ractor_require
[Bug #21090]
The struct was previously allocated on the stack, which could be freed
if the Thread is terminated. Moving this to a T_DATA on the heap should
mean this is no longer an issue.
1000.times { Ractor.new { th = Thread.new { re...
jhawthorn (John Hawthorn)
08:13 PM Revision a34fcf40 (git): Add a new_thread flag to rb_interrupt_exec
Previously rb_ractor_interrupt_exec would use an intermediate function
to create a new thread with the actual target function, replacing the
data being passed in with a piece of malloc memory holding the "next"
function and the original ...
jhawthorn (John Hawthorn)
08:13 PM Revision 97994c77 (git): Only use regex internal reg_cache when in main ractor
Using this `reg_cache` is racy across ractors, so don't use it when in a
ractor. Also, its use across ractors can cause a regular expression created
in 1 ractor to be used in another ractor (an isolation bug).
Luke Gruber
07:23 PM Revision 6e36841d (git): Free rb_native_thread memory at fork
We never freed any resources of rb_native_thread at fork because it would
cause it to hang. This is because it called rb_native_cond_destroy for
condition variables. We can't call rb_native_cond_destroy here because
according to the spe...
peterzhu2118 (Peter Zhu)
03:33 PM Bug #21439 (Closed): Crash with PM_SPLAT_NODE compiler error (Prism)
Applied in changeset commit:git|5ec9a392cdf7f971221dc073dd466bce877d8acb.
----------
[Bug #21439] Fix `PM_SPLAT_NODE` compilation error in for loops (#13597)
[Bug #21439] Fix PM_SPLAT_NODE compilation error in for loops
This commit fi...
Anonymous
02:32 PM Bug #21439: Crash with PM_SPLAT_NODE compiler error (Prism)
I have a PR for it here: https://github.com/ruby/ruby/pull/13597 ufuk (Ufuk Kayserilioglu)
03:33 PM Revision 5ec9a392 (git): [Bug #21439] Fix `PM_SPLAT_NODE` compilation error in for loops (#13597)
[Bug #21439] Fix PM_SPLAT_NODE compilation error in for loops
This commit fixes a crash that occurred when using splat nodes (*) as
the index variable in for loops. The error "Unexpected node type for
index in for node: PM_SPLAT_NODE" w...
Ufuk Kayserilioglu
03:08 PM Revision 7c22330c (git): Allocate `rb_shape_tree` statically
There is no point allocating it during init, it adds
a useless indirection.
byroot (Jean Boussier)
03:08 PM Revision de4b9103 (git): Get rid of GET_SHAPE_TREE()
It's a useless indirection. byroot (Jean Boussier)
03:08 PM Revision e070d935 (git): Get rid of `rb_shape_lookup`
byroot (Jean Boussier)
03:08 PM Revision 0292b702 (git): shape.h: make RSHAPE static inline
Since the shape_tree_ptr is `extern` it should be possible to
fully inline `RSHAPE`.
byroot (Jean Boussier)
02:02 PM Revision d55c463d (git): Fix memory leak of Ractor basket when sending to closed Ractor
The following script leaks memory:
r = Ractor.new { }
r.value
10.times do
100_000.times do
r.send(123)
rescue Ractor::ClosedError
end
puts `ps -o rss= -p #{$$}`
end
Before:
18508
...
peterzhu2118 (Peter Zhu)
12:55 PM Revision a74c3852 (git): Make setting and accessing class ivars lock-free
Now that class fields have been deletated to a T_IMEMO/class_fields
when we're in multi-ractor mode, we can read and write class instance
variable in an atomic way using Read-Copy-Update (RCU).
Note when in multi-ractor mode, we always ...
byroot (Jean Boussier)
11:43 AM Revision 8b5ac5ab (git): Fix class instance variable inside namespaces
Now that classes fields are delegated to an object with its own
shape_id, we no longer need to mark all classes as TOO_COMPLEX.
byroot (Jean Boussier)
07:30 AM Revision 81209719 (git): Move more NilClass methods to ruby
```
$ make benchmark ITEM=nilclass COMPARE_RUBY="/opt/rubies/ruby-master/bin/ruby"
/opt/rubies/3.4.2/bin/ruby --disable=gems -rrubygems -I../benchmark/lib ../benchmark/benchmark-driver/exe/benchmark-driver \
--executa...
Hartley McGuire
06:44 AM Feature #21435: Kernel#then_try as a conditional #then
@zverok, what do you think about it? May `#then` get a conditional counterpart? Alexander.Senko (Alexander Senko)
05:58 AM Revision 3abdd424 (git): Turn `rb_classext_t.fields` into a T_IMEMO/class_fields
This behave almost exactly as a T_OBJECT, the layout is entirely
compatible.
This aims to solve two problems.
First, it solves the problem of namspaced classes having
a single `shape_id`. Now each namespaced classext
has an object that...
byroot (Jean Boussier)
05:28 AM Revision 166ff187 (git): [rubygems/rubygems] Removed ccache or sccache from args of Rust builder
```
" = note: some arguments are omitted. use `--verbose` to show all linker arguments\n" +
" = note: error: unexpected argument '-W' found\n" +
" \n" +
" tip: to pass '-W' as a value, use '-- -W'\n" +
" ...
hsbt (Hiroshi SHIBATA)
01:34 AM Revision 4585ccd9 (git): [ruby/strscan] Update extconf.rb
(https://github.com/ruby/strscan/pull/158)
- `have_func` includes "ruby.h" by default.
- include "ruby/re.h" where `rb_reg_onig_match` is declared.
https://github.com/ruby/strscan/commit/1ac96f47e9
nobu (Nobuyoshi Nakada)
01:11 AM Revision 7854b71e (git): Supress a few more tsan errors
jhawthorn (John Hawthorn)
01:11 AM Revision f91c8083 (git): gdbinit: fix printing of T_DATA
jhawthorn (John Hawthorn)
 

Also available in: Atom