Project

General

Profile

Activity

From 10/12/2026 to 10/18/2026

Today

08:43 AM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
sferik (Erik Berlin) wrote in #note-9:
> `Rails.cache` stores them with Marshal
Are you able to use `config.cache_store = :memory_store, { serializer: :message_pack }`? Alternatively you could make a wrapper class where `dump`/`load`...
jhawthorn (John Hawthorn)
02:07 AM Ruby Revision af502c75 (git): [DOC] Fix indentation in packed_data.md
peterzhu2118 (Peter Zhu)
01:34 AM Ruby Bug #22445: On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
Merged the backport into `ruby_3_4` at https://github.com/ruby/ruby/commit/50f6624862de6ad173713f10b4dc028c2f3ad014. nagachika (Tomoyuki Chikanaga)
01:19 AM Ruby Revision d7cd0d48 (git): [DOC] Tweaks for MatchData#integer_at
burdettelamar (Burdette Lamar)
01:11 AM Ruby Revision 1f6b0e78 (git): [DOC] Tweaks for '***' globbing
burdettelamar (Burdette Lamar)

10/17/2026

06:56 PM Ruby Revision 5b1c3735 (git): [ruby/prism] Attach block to correct argument inside jump value
https://github.com/ruby/prism/commit/7e8c702c33 kddnewton (Kevin Newton)
04:48 PM Ruby Bug #22450 (Closed): Jump value attaches block in incorrect place under parse.y
Applied in changeset commit:git|31a3aa4e46dd33b5a08708d687ed9f9d3253b55a.
----------
[Bug #22450] Preserve do-block binding in control-flow arguments
Inherited `CMDARG` state made `do` blocks in control-flow arguments
bind to the wrong...
nobu (Nobuyoshi Nakada)
03:33 PM Ruby Revision 31a3aa4e (git): [Bug #22450] Preserve do-block binding in control-flow arguments
Inherited `CMDARG` state made `do` blocks in control-flow arguments
bind to the wrong call.
nobu (Nobuyoshi Nakada)
02:19 PM Ruby Revision a430ab4e (git): Refactor small `Array#sample` handling
nobu (Nobuyoshi Nakada)
01:54 PM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
Both MSWIN and MINGW intentionally use the same ABI. They only have a different toolset. So I don't think we should introduce a ABI difference on the ruby C interface for them.
Likewise there's no good reason to handle MINGW and MSWIN...
larskanis (Lars Kanis)
01:02 PM Ruby Revision 57095a33 (git): [DOC] Update bundled gems list at 1a6f1b3e918850c16fdc30806cc1c6
git[bot]
12:21 PM Ruby Bug #22452: `rb_equal` returns true for `NaN == NaN`
Possibly a duplicate of [Bug #1720] where it was established that `Float::NaN == Float::NaN` is "undefined" therefore OK.
It seems that the motivation was to not prevent optimization of `rb_equal`.
byroot (Jean Boussier)
12:00 PM Ruby Bug #22452 (Open): `rb_equal` returns true for `NaN == NaN`
I noticed this while trying to cleanup and simplify `rb_equal`.
```ruby
>> Float::NAN == Float::NAN
=> false
> ...
=> 0
```
I would expect it to return `nil`.
`Array#index` is just an example, any core method, and even C ext...
byroot (Jean Boussier)
11:37 AM Ruby Revision 50f66248 (git): Reset the fork lock in the child without unlocking it
A thread that is waiting for the fork lock when another thread forks
exists only in the parent, but on macOS the child's copy of the lock
still counts it. After the child unlocks its copy,
pthread_rwlock_destroy() and pthread_rwlock_init...
dugg (Doug E)
11:16 AM Ruby Revision 1a6f1b3e (git): Update irb and suppress warnings about aliases in module
ruby/irb#1256 nobu (Nobuyoshi Nakada)
08:37 AM Ruby Bug #22451: Coderange may be set incorrectly when concatenating a string into itself
Seems to have been present all the way since 1.9. byroot (Jean Boussier)
08:10 AM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
Merged into `ruby_3_4` at https://github.com/ruby/ruby/commit/56c3e7ea7b8530d6ee28904c8148026cc236ba9a. nagachika (Tomoyuki Chikanaga)
07:56 AM Ruby Revision 965a0880 (git): Fix termlen in String#initialize
Without capacity:, rb_enc_raw_set doesn't resize the buffer for a wider
terminator, so the terminator could overflow an embedded string.
rb_enc_associate resizes it.
With capacity: and no encoding:, the buffer was sized for a 1-byte
ter...
William T. Nelson
07:10 AM Ruby Revision bf2eb21a (git): Update maintainers for ipaddr.rb (#19406)
taketo1113 (Taketo Takashima)
05:24 AM Ruby Revision 56c3e7ea (git): Join getaddrinfo and getnameinfo threads before fork
A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread exit takes the resolver configuration lock again
after the thread has released the fork lock. A fork that lands then
leaves the child with t...
dugg (Doug E)
05:16 AM Ruby Bug #22415: Thread.handle_interrupt needs to preserve errinfo
Thank you for creating PRs.
Merged into `ruby_3_4` at https://github.com/ruby/ruby/commit/79214e7c6e55aea027312e839b59942ef6163f5a.
nagachika (Tomoyuki Chikanaga)
05:16 AM Ruby Revision 79214e7c (git): [Backport #22415] Restore ec->errinfo after handling interrupts
Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/raise/throw) is being propagated, and the payload
of that jump lives in ec->errinfo.
Handling an interrupt can run Ruby code: rb_signal_exec() ru...
Randy Stauner
04:22 AM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
Thank you for creating PRs.
Merged into `ruby_3_4`at https://github.com/ruby/ruby/commit/26a4d835f7512f0615f6e0d7ed483c3438373b7e.
nagachika (Tomoyuki Chikanaga)
04:21 AM Ruby Revision 26a4d835 (git): Fix Range#include? of an empty range of single characters
A range of single character Strings told that it includes its end
even when it is empty, since the end was not compared with the begin.
("z".."a").to_a #=> []
("z".."a").include?("a") #=> true
(cherry picked from commi...
sferik (Erik Berlin)
04:16 AM Ruby Revision d14d56f1 (git): merge revision(s) b3598cf2a355497693bb66097edc156af3152e9b:
Win: Strip CRs from `cpp` and `nm` output
The combination of mingw tools and cygin/msys2 ruby leaves CRs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nagachika (Tomoyuki Chikanaga)
04:16 AM Ruby Revision 98ec3589 (git): merge revision(s) b0a4e2399b34701d4fc05f9543142b0c73d1fb9b:
CI: mingw: Use the official actions for msys2
Because ruby/setup-ruby is affected to test result.
Also includes the prerequisite changes from e4b386e090, 90f8199412,
a443cd012a and 4adb6f6969 (Remove Strawberry Perl pkg-config,...
nagachika (Tomoyuki Chikanaga)
02:58 AM Ruby Revision 2ac46ed8 (git): Fix out-of-bound access of empty rest arguments array
nobu (Nobuyoshi Nakada)
02:58 AM Ruby Revision 61261bf5 (git): Add more assertions to `RARRAY_AREF`
nobu (Nobuyoshi Nakada)
02:35 AM Ruby Revision ca96afe2 (git): [ruby/ipaddr] Warn on bracketed IPv6 address with a prefix length
IPAddr.new("[2001:db8::]/32") is currently accepted and treated the
same as IPAddr.new("2001:db8::/32"). However, square brackets are a
delimiter for embedding an address in a larger syntax such as
host:port (RFC 5952 section 6), and no ...
taketo1113 (Taketo Takashima)
02:35 AM Ruby Revision 3617d3ea (git): [ruby/ipaddr] Add IPAddr#to_hex
Returns the hexadecimal representation of the address value, right
adjusted to the address size (8 characters for IPv4, 32 for IPv6).
https://github.com/ruby/ipaddr/commit/e19c9b153b
Tjerk Meesters
12:51 AM Ruby Revision 58c56248 (git): [ruby/prism] Keywords revisit
Introduce a perfect hash for keyword checking so we do not have to
do as many comparisons. This results in about a 1% speed up.
Also, introduce a function called by the C extension and the FFI
backend that can check if something is a ke...
kddnewton (Kevin Newton)

10/16/2026

10:14 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> I'll second Jean, we should absolutely not do this. Im also eager to replace dtoa.c, but if we're changing the algorithm (and especially if that changes the output in any cases) we should do it at most once over the next ~5 years.
T...
sferik (Erik Berlin)
09:12 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
sferik (Erik Berlin) wrote in #note-2:
> Yeah, I hope we don't let perfect win out over good here. Let's ship a better algorithm in 4.1, and an even better one in 4.2, and an even better one if 4.3…
I'll second Jean, we should absolu...
jhawthorn (John Hawthorn)
06:05 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> This one is interesting because a large part of the complexity of the implementation is caused by the semantic of these methods is that the comparison is done as element == searched_item.
> ...
This comment inspired another optimizati...
sferik (Erik Berlin)
05:24 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> We don't backport performance patches, only bugfixes.
That's what I thought, but you said:
> ...
Anyway, I am happy to help cover the maintenance cost in whatever way I can.
> That's why I've added the question to the next dev meeti...
sferik (Erik Berlin)
05:05 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> you like me to do that for PR #19360?
We don't backport performance patches, only bugfixes.
> ...
I already saw it, but's that's not how Ruby works, that's not for me to decide such a big change with user visible (albeit minor) i...
byroot (Jean Boussier)
02:22 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
Thank you for merging [PR #19360](https://github.com/ruby/ruby/pull/19360)!
> It's not that simple though, there's a maintenance cost to all this (e.g. backports), and these algorithm can have subtly different behavior on fringe cases, ...
sferik (Erik Berlin)
08:06 AM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> Let's ship a better algorithm in 4.1, and an even better one in 4.2, and an even better one if 4.3…
It's not that simple though, there's a maintenance cost to all this (e.g. backports), and these algorithm can have subtly different ...
byroot (Jean Boussier)
09:55 PM Ruby Bug #22451 (Open): Coderange may be set incorrectly when concatenating a string into itself
```ruby
s = "\x81\x30".force_encoding("GB18030")
#=> "\x810"
s.valid_encoding? # This is invalid
#=> false
(s + s).valid_encoding? # However it becomes valid when repeated
#=> true
(s << s).valid_encoding? # But concat assumed the...
jhawthorn (John Hawthorn)
09:04 PM Ruby Revision 25fb329e (git): Add missing write barriers to hash_copy's ST to AR path
ar_add_direct_i, added in 60a4894bdb (Dynamic ar_table size), inserts the
entries with ar_insert_direct and no write barrier. Unlike the other
hash_copy paths it can run Ruby code (ar_insert_direct may call #eql?) and
so trigger a GC par...
jhawthorn (John Hawthorn)
07:12 PM Ruby Misc #22417: DevMeeting-2026-11-12
derp. 4.1... need more coffee zenspider (Ryan Davis)
07:10 PM Ruby Misc #22417: DevMeeting-2026-11-12
I'd like #22244 to be considered for 4.2. I won't be able to attend but maybe @tenderlovemaking could represent this for me?
(status: already worked down feedback from @nobu, currently green. Just needs review & merge)
zenspider (Ryan Davis)
06:02 PM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
### Backport PRs
3.3: https://github.com/ruby/ruby/pull/19395
3.4: https://github.com/ruby/ruby/pull/19396
4.0: https://github.com/ruby/ruby/pull/19397
sferik (Erik Berlin)
05:31 PM Ruby Revision f2bc42f6 (git): [ruby/openssl] ssl: raise ArgumentError for a negative length in SSLSocket
Check the length so that #sysread, #read_nonblock and the buffer
variants raise ArgumentError.
https://github.com/ruby/openssl/commit/9443e67e99
Co-authored-by: Kazuki Yamaguchi <k@rhe.jp>
Shaisolaris
05:15 PM Ruby Feature #21308: Replacing the Float#to_s (dtoa.c) implementation with a modern algorithm
I've proposed a patch at https://github.com/ruby/ruby/pull/19309. I have added some benchmarks to demonstrate the gains. sferik (Erik Berlin)
05:06 PM Ruby Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
Hi there @duerst 👋
I found this ticket after running into a normalization problem while working on an implementation of the Unicode Collation Algorithm. It seems there is at least one other case where the identity `toNFD(x) == toNFD(t...
camertron (Cameron Dutro)
04:59 PM Ruby Revision 7a5165e4 (git): [ruby/prism] Use free lists for scopes and contexts
https://github.com/ruby/prism/commit/32fe8100c1 kddnewton (Kevin Newton)
04:33 PM Ruby Revision 4c296834 (git): Use mark context when marking execution_context
Luke Gruber
04:23 PM Ruby Revision ac121993 (git): [Backport #22415] Restore ec->errinfo after handling interrupts
Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/raise/throw) is being propagated, and the payload
of that jump lives in ec->errinfo.
Handling an interrupt can run Ruby code: rb_signal_exec() ru...
Randy Stauner
03:39 PM Ruby Revision 2d4992fc (git): Fix pm_memchr constness.
cast memchr result (or make return const void *) to resolve -Werror incompatible-pointer-types" nagachika (Tomoyuki Chikanaga)
03:35 PM Ruby Revision 89856b96 (git): Bump ruby/setup-ruby to v1.329.0
setup-ruby v1.236.0 raises "Cannot find Git's cert file" on Windows
runners because Git for Windows moved from mingw64 to ucrt64.
This was fixed in ruby/setup-ruby#947 (v1.328.0).
nagachika (Tomoyuki Chikanaga)
01:44 PM Ruby Bug #22450 (Closed): Jump value attaches block in incorrect place under parse.y
Sorry about this one. The following code: `check 1, if true then return foo + bar do end end` under Prism:
```
-e: warning: argument of top-level return is ignored
== disasm: #<ISeq:<main>@-e:1 (1,0)-(1,49)>
0000 putself ...
kddnewton (Kevin Newton)
12:38 PM Ruby Revision e0688566 (git): Remove discard qualifiers warning with C23 strchr
C23 has qualifier-preserving standard library functions, so calling
strchr with a `const char *` will return a `const char *`. We can change
the type of the local variables because we don't mutate the strings.
etienne (Étienne Barrié)
08:56 AM Ruby Revision 67cd6aa5 (git): Dispatch `Array#sample` in array.rb
nobu (Nobuyoshi Nakada)
08:38 AM Ruby Revision f83864c7 (git): CI: Update gem sources using `git` always
nobu (Nobuyoshi Nakada)
08:09 AM Ruby Revision 224726a9 (git): Skip rb_eql() for identical elements in Array#eql?
Array#== walks both element buffers and only calls rb_equal() for a
pair whose VALUEs differ. Array#eql? called rb_ary_elt() twice and
rb_eql() once for every element, even though rb_eql() answers true
for identical VALUEs before doing a...
sferik (Erik Berlin)
07:24 AM Ruby Bug #22449 (Closed): Out-of-bounds in `Array#sample` when array modified
Applied in changeset commit:git|88ffa9a3003c36e5c6001cca33e0bba2fcb37125.
----------
[Bug #22449] Fix out-of-bounds in `Array#sample` when array modified
Get the length after the conversion using `to_int` is complete.
nobu (Nobuyoshi Nakada)
05:36 AM Ruby Bug #22449 (Closed): Out-of-bounds in `Array#sample` when array modified
Backports required: [GH-18879], [GH-19047], and [GH-19384]
[GH-18879]: https://github.com/ruby/ruby/pull/18879
[GH-19047]: https://github.com/ruby/ruby/pull/19047
[GH-19384]: https://github.com/ruby/ruby/pull/19384
nobu (Nobuyoshi Nakada)
07:24 AM Ruby Revision 88ffa9a3 (git): [Bug #22449] Fix out-of-bounds in `Array#sample` when array modified
Get the length after the conversion using `to_int` is complete. nobu (Nobuyoshi Nakada)
07:03 AM Ruby Revision 524cc256 (git): [DOC] Update bundled gems list at 0a1c71148a53007bd6db4658e5f074
git[bot]
06:30 AM Ruby Feature #22244: `ruby -UU` should set both internal and external, `ruby -E` should print encoding list
Hello Ryan,

I suggest you add your issue to [Ruby Misc#22417] DevMeeting-2026-11-12.
This is the best way to get attention and a decision from @matz.

Regards, Martin.

On 2026-10-16 04:00, zenspider (Ryan Davis) via ruby-cor...
Anonymous
02:35 AM Ruby Revision 0a1c7114 (git): Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `ruby/setup-ruby` from 1.328.0 to ...
dependabot[bot]
02:17 AM Ruby Revision 7276c727 (git): Update default gems list at e242384ceda7ae4f922da234c9af25 [ci skip]
git[bot]
02:17 AM Ruby Revision e242384c (git): [ruby/ipaddr] Bump the version to 1.3.0
https://github.com/ruby/ipaddr/commit/a3f7dbe1b7 taketo1113 (Taketo Takashima)
01:15 AM Ruby Bug #22448 (Open): Jump value with a command call with a method call chained
This is a little bit odd, found this while fuzzing Prism.
Right now, parse.y raises a void value expression error for a method call on a parenthesized jump, as in:
```ruby
def m; (return foo 1 do end).bar; end
```
but if you g...
kddnewton (Kevin Newton)
12:29 AM Ruby Revision b660facc (git): [ruby/ipaddr] Respect explicit address families for decorated IPv6 literals
Signed-off-by: AC <ac@fabtek.cn>
https://github.com/ruby/ipaddr/commit/8696d8fdec
AC

10/15/2026

11:48 PM Ruby Revision 8c82ca2c (git): [DOC] Harmonize world_readable? methods
burdettelamar (Burdette Lamar)
11:24 PM Ruby Bug #22240: Protect against SEGV caused by native extensions using rb_funcall between rb_protect and rb_jump_tag
I also found where magnus is explicitly setting errinfo to nil:
https://github.com/matsadler/magnus/pull/188
If a magnus-backed function was called from an exception handler
(prior to #22415) it could also lead to this SEGV.
rwstauner (Randy Stauner)
10:02 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> For this specifically [Feature #21308] has been open for a while. I'd like to see it addressed, but this is a field that's been strangely moving fast with new implementation coming out regularly. But they're all miles ahead of dtoa.c s... sferik (Erik Berlin)
08:34 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
> Conversions between Float and String:
For this specifically [Feature #21308] has been open for a while. I'd like to see it addressed, but this is a field that's been strangely moving fast with new implementation coming out regularly...
byroot (Jean Boussier)
02:54 PM Ruby Feature #22446 (Open): Speed up several core methods in Array, Range, String, Integer, Float and Time
I've opened a set of pull requests that speed up commonly used core methods. This issue collects them in one place for discussion. Each PR stands on its own, adds its benchmark in the first commit, and has its own tests.
All of the nu...
sferik (Erik Berlin)
09:19 PM Ruby Revision f3376672 (git): Socket.tcp_with_fast_fallback: Fix typo in getaddrinfo family
ADDRESS_FAMILIES[:family_name] used the Symbol :family_name as the key
instead of the local variable family_name, so the address family was
always nil. This is a follow-up to b896f80598 [Bug #21512].
Co-Authored-By: Claude Opus 5.5 <nor...
William T. Nelson
09:13 PM Ruby Revision b1d31512 (git): Use mark ctx when marking internal ractor objects
When doing marking work with > 16 Ractors, we can see a difference by
not having to rederive the mark context when marking the Ractor object.
Benchmark: gc_balloon, 20 runs per number of ractors:
| bench | ractors | ctl (ms) ...
Luke Gruber
09:11 PM Ruby Revision ec4b2917 (git): [ruby/prism] token_begins_argument_p cleanup
https://github.com/ruby/prism/commit/990ebbf60b kddnewton (Kevin Newton)
08:47 PM Ruby Misc #22417: DevMeeting-2026-11-12
* [Feature 21308] Replacing dtoa.c implementation with a modern algorithm (byroot)
* Not my ticket, but this has been open for a while.
* While it's not a major hotspot for most applications, it's true that `Float#to_s` and `String...
byroot (Jean Boussier)
08:43 PM Ruby Revision 19c0ec23 (git): [ruby/prism] Fix up handling Foo::Bar {} with a comma
https://github.com/ruby/prism/commit/4893d3b94e kddnewton (Kevin Newton)
08:43 PM Ruby Revision 12c4506f (git): [ruby/prism] Fix up not command inside endless def
https://github.com/ruby/prism/commit/c3bdf7c769 kddnewton (Kevin Newton)
08:24 PM Ruby Revision 8c7656f5 (git): [ruby/prism] Split up command write checks
Previously checking for a command write was the same concept as
checking for a command call, but in reality (and since 4.0) they
are different things.
https://github.com/ruby/prism/commit/e9cdac6b98
kddnewton (Kevin Newton)
08:14 PM Ruby Bug #22447 (Open): parse.y `-> do ... end` COND state
With parse.y, `do`-blocks inside a `-> do ... end` lambda body are rejected when the lambda appears in a `while`/`until`/`for` condition:
```ruby
while -> do foo do end end; end
# => syntax error, unexpected 'do' for condition, expe...
kddnewton (Kevin Newton)
07:37 PM Ruby Revision 6776cc5a (git): Remove discard qualifiers warning with C23 strchr
C23 has qualifier-preserving standard library functions, so calling
strchr with a `const char *` will return a `const char *`. We can change
the type of the local variables because we don't mutate the strings.
(cherry picked from commit...
etienne (Étienne Barrié)
07:37 PM Ruby Revision 16e5778e (git): [ruby/prism] Handle command assignment with endless def
A very subtle issue, but one that came up with fuzzers.
https://github.com/ruby/prism/commit/b57cd1f440
kddnewton (Kevin Newton)
07:37 PM Ruby Revision 27204205 (git): Reset the fork lock in the child without unlocking it
A thread that is waiting for the fork lock when another thread forks
exists only in the parent, but on macOS the child's copy of the lock
still counts it. After the child unlocks its copy,
pthread_rwlock_destroy() and pthread_rwlock_init...
dugg (Doug E)
07:34 PM Ruby Revision 5538d4df (git): wbcheck: update for current GC API and fix startup
- Implement the gc_impl.h functions added since wbcheck was last updated
(single-objspace stubs, as in mmtk)
- Create the object table in objspace_init, since st_init_numtable needs
an objspace to allocate from
- Report during_global...
hawthbot
07:16 PM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
Thanks, that makes sense, and sorry for batching the two fixes. byroot dropped the commit for extensions that call `fork(2)` from https://github.com/ruby/ruby/pull/19364 before merging it, so the PR fixed only #22445. 🙇‍♂️ dug (Doug E)
03:51 PM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
Like @byroot, I don't think Ruby explicitly supports extensions calling fork(2) directly. In practice, since 3.4 an extension cannot fork safely anyway: it cannot take the fork lock before fork(2) or reset it in the child (`rb_thread_acq... mame (Yusuke Endoh)
06:57 AM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
> a child that an extension forks with fork(2) and then passes to rb_thread_atfork(), as the C API asks
I remember this being discussed a while ago and I believe that the conclusion was that forking from C wasn't supported. I'm a bit ...
byroot (Jean Boussier)
04:53 AM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
While preparing the backports I found one kind of child that still inherits the slot of exiting lookup threads: a child that an extension forks with `fork(2)` and then passes to `rb_thread_atfork()`, as the C API asks. `rb_thread_acquire... dug (Doug E)
07:00 PM Ruby Feature #22244: `ruby -UU` should set both internal and external, `ruby -E` should print encoding list
@matz any chance I can get this enhancement into 4.1? I think it helps usability a fair amount:
```
10001 $ ./build/miniruby tool/runruby.rb --extout=build --archdir=build -- -E
Available Encodings:
ASCII-8BIT, Big5, Big5-HK...
zenspider (Ryan Davis)
06:29 PM Ruby Revision 2d234f3c (git): [ruby/prism] Handle some insane syntax
Unparenthesized lambdas with do...end inside a while loop need to
change ever so slightly. No one is using this syntax, but a fuzzer
found it.
https://github.com/ruby/prism/commit/fe09f5ac08
kddnewton (Kevin Newton)
06:23 PM Ruby Bug #22445 (Closed): On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
Applied in changeset commit:git|e06b9da3f20455ba4cff99a7821f013b7bdde5de.
----------
Reset the fork lock in the child without unlocking it
A thread that is waiting for the fork lock when another thread forks
exists only in the parent, ...
dugg (Doug E)
04:45 AM Ruby Bug #22445: On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
Pull request: https://github.com/ruby/ruby/pull/19364 🙇‍♂️ dug (Doug E)
04:25 AM Ruby Bug #22445 (Closed): On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
On macOS, `Kernel#fork` can abort the child with `[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)` when another thread is waiting for the fork lock at the moment of the fork. getaddrinfo helper threads take that lock for reading (Fea... dug (Doug E)
06:23 PM Ruby Revision e06b9da3 (git): Reset the fork lock in the child without unlocking it
A thread that is waiting for the fork lock when another thread forks
exists only in the parent, but on macOS the child's copy of the lock
still counts it. After the child unlocks its copy,
pthread_rwlock_destroy() and pthread_rwlock_init...
dugg (Doug E)
05:57 PM Ruby Revision 7569e3af (git): CI: Create `revision.h`
nobu (Nobuyoshi Nakada)
05:57 PM Ruby Revision 50608f22 (git): Fix `lastrev` invoking in non-git directory
nobu (Nobuyoshi Nakada)
05:40 PM Ruby Revision 3e77f97d (git): YJIT: Unlink failed batch blocks from the graph
When gen_block_series() fails on a block after the first one, for
example because code memory is full, it frees the blocks it already
compiled with free_block(blockref, false). That skips
remove_from_graph(). A batch block can have a bra...
Sam Harrison
04:53 PM Ruby Feature #22437: Speed up creation and basic operations of Struct / Data
It would be easier to discuss the implementation if you opened a pull request (even as draft).
For instance I have several concerns about `hidden_ivar_get`:
- Not using atomics (technically tearing isn't a concern for pointer siz...
byroot (Jean Boussier)
02:47 AM Ruby Feature #22437: Speed up creation and basic operations of Struct / Data
Thank you for working on this.
As I understand it, experiment/struct-data-core speeds up Struct/Data without breaking compatibility. It will need careful review, but I have no objection to the direction.
Personally, I'm much more i...
mame (Yusuke Endoh)
03:46 PM Ruby Bug #22415 (Closed): Thread.handle_interrupt needs to preserve errinfo
Applied in changeset commit:git|21c6e8a54b7a2127a262b195e26b543ece591c67.
----------
[Bug #22415] Restore ec->errinfo after handling interrupts
Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/...
Anonymous
03:45 PM Ruby Revision 21c6e8a5 (git): [Bug #22415] Restore ec->errinfo after handling interrupts
Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/raise/throw) is being propagated, and the payload
of that jump lives in ec->errinfo.
Handling an interrupt can run Ruby code: rb_signal_exec() ru...
Randy Stauner
02:31 PM Ruby Revision da2efcbf (git): [ruby/prism] Bump to v2.0.0.rc1
https://github.com/ruby/prism/commit/e06e08af29 kddnewton (Kevin Newton)
12:26 PM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
## Summary
Exporting the three symbols had no measurable cost on ruby-bench's `lobsters`, with or without ZJIT, on x86-64 or arm64. With default visibility, though, GCC compiles `vm.c` differently, which can move interpreter microbenc...
dalehamel (Dale Hamel)
08:36 AM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
For clarity, it's also fine if these symbols get renamed/changed/etc, exporting them doesn't imply any future compatibility, it's just best-effort.
Without the export it's very difficult and hacky to get to them, which translates to cas...
Eregon (Benoit Daloze)
08:33 AM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
+1, this would make external profilers more reliable (there are several important advantages of external profilers, e.g. reduce a lot the observer effect, no need to change anything in the already-running program).
Datadog is shipping t...
Eregon (Benoit Daloze)
09:16 AM Ruby Revision c498dc69 (git): Document building with GNU make on mswin
A ruby built this way also builds extension libraries with `make` from PATH, so installing gems with C extensions needs GNU make there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:05 AM Ruby Revision 77cb678e (git): win32: Define LASTREV for GNU make
Since 4361d8e48f, `REVISION_H_CMD` in common.mk pipes `$(LASTREV)`, which only win32/Makefile.sub defined. With GNU make, `make update-src` ran the bare pipe, and cmd failed with `| was unexpected at this time.`
Co-Authored-By: Claude O...
hsbt (Hiroshi SHIBATA)
09:05 AM Ruby Revision b2407649 (git): win32: Download bundled gems after pulling with GNU make
`update-gems` and `extract-gems` in common.mk read `gems/bundled_gems` when they run. With `-j`, `make up` downloaded the gems listed before the pull, and `extract-gems` then unpacked the old version of a gem that the pull had bumped.
C...
hsbt (Hiroshi SHIBATA)
09:05 AM Ruby Revision f67cca08 (git): win32: Run after-update in make up with GNU make
With `.WAIT`, `up$(DOT_WAIT)::` in common.mk names another target, so `make up` did not run `after-update`. Run it in the same make, as defs/gmake.mk does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:05 AM Ruby Revision f1d8de44 (git): win32: Run VCSUP in update-src with GNU make too
GNUmakefile.sub defined `VCSUP` but no rule ran it, so `make up` did not pull the source tree. Pull before the rules in common.mk, as template/Makefile.in does, so that revision.h is made from the pulled tree.
Co-Authored-By: Claude Opu...
hsbt (Hiroshi SHIBATA)
08:08 AM Ruby Revision 4361d8e4 (git): Reduce the requirements of `lastrev`
Remove baseruby from the prerequisites so that `lastrev` will work as
long as Git is installed.
nobu (Nobuyoshi Nakada)
07:32 AM Ruby Revision 57fd1485 (git): [ruby/rubygems] Omit an empty DESTDIR on mswin with GNU make too
mkmf on mswin moves the drive letter of prefix into DESTDIR in the Makefile, so passing an empty DESTDIR made C extension installs fail on a GNU make built mswin Ruby whenever the current drive was not the one holding prefix. The check n... hsbt (Hiroshi SHIBATA)
07:30 AM Ruby Revision 84b47a2d (git): [DOC] Register each new worktree with firewall.cmd from a post-checkout hook
Coding agents build in a new worktree for each task, so every worktree meets the dialog. The hook runs without stopping only when User Account Control never notifies, and otherwise it starts a task registered once with the highest privil... hsbt (Hiroshi SHIBATA)
07:30 AM Ruby Revision 30160ec2 (git): win32: Add firewall.cmd to stop the firewall alert in tests
Windows Defender Firewall asks about every new executable path that listens on all interfaces. A block rule for the build directory stops the dialog without exposing the tests to other machines, and connections from the same machine stil... hsbt (Hiroshi SHIBATA)
07:01 AM Ruby Revision 76f0a791 (git): [ruby/json] Drop the leftovers of runtime SSE2 detection
Neither the `__builtin_cpu_supports` probe in conf.rb nor `cpuid.h` has a use now that SSE2 is assumed on x86-64. The probe kept SIMD off on GCC older than 4.8, and the `HAVE_CPUID_H` guard broke builds that have `x86intrin.h` but not `c... hsbt (Hiroshi SHIBATA)
07:01 AM Ruby Revision 1c7e4ce2 (git): Check for INT_MIN before negating sprintf width
Negating INT_MIN overflows, so the compiler may drop the `width < 0` check that follows it. clang-cl does so, and `sprintf("%*s", INT_MIN, "")` does not raise ArgumentError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:01 AM Ruby Revision e63fe71e (git): Check for RB_LEN_MIN before negating beg in rb_str_subpos
Negating RB_LEN_MIN overflows, so the compiler may assume `-beg < 0` never holds and drop the check. clang-cl does so, and `str[LONG_MIN, 1]` returns a substring instead of nil.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
05:03 AM Ruby Bug #22439 (Closed): Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
Thank you for confirming the patches! I think this is resolved, so I'm closing this ticket. mame (Yusuke Endoh)
05:02 AM Ruby Bug #22440 (Closed): Referencing an autoload constant from multiple Ractors dumps core
Applied in changeset commit:git|8a060f90ba36441cfeb509eacb10f609314f5bfe.
----------
Fix SEGV when referencing an autoload constant from multiple Ractors
vm_ic_update used GET_RACTOR() after the constant lookup. The lookup may
block wa...
mame (Yusuke Endoh)
05:01 AM Ruby Revision 8a060f90 (git): Fix SEGV when referencing an autoload constant from multiple Ractors
vm_ic_update used GET_RACTOR() after the constant lookup. The lookup may
block waiting for an autoload, and under the M:N thread scheduler the
thread may then be resumed on a different native thread. Since
vm_ic_update is inlined into rb...
mame (Yusuke Endoh)
04:50 AM Ruby Bug #22442 (Closed): Lazy loading of error_highlight etc. is skipped in threads and Ractors
Applied in changeset commit:git|d193fd3217a87b1015b73a4d31c0f6e116bc3cdd.
----------
Load the error decoration gems by firing their autoloads
The lazy loading of error_highlight, did_you_mean, and syntax_suggest
claimed the load by an ...
mame (Yusuke Endoh)
04:50 AM Ruby Revision d193fd32 (git): Load the error decoration gems by firing their autoloads
The lazy loading of error_highlight, did_you_mean, and syntax_suggest
claimed the load by an atomic exchange before the load started. So a
caller in another Ractor or thread during the load returned the
undecorated message without waitin...
mame (Yusuke Endoh)
04:39 AM Ruby Revision ce3a3062 (git): Document building with clang-cl on mswin
clang-cl 15 is the oldest version the build accepts. The component is not in Visual Studio 2017, which mswin still supports.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 92216410 (git): mswin: Reject clang-cl older than 15
clang-cl ignores `#pragma optimize` before 15, so rb_gc_guarded_ptr, which RB_GC_GUARD uses with _MSC_VER, can be optimized away. Check it at configure time and when make reads the makefile, as for MSVC.
Co-Authored-By: Claude Opus 5.5 ...
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 58551947 (git): mswin: Keep CC from the environment on reconfiguration
nmake reruns configure.bat with configure_args when build files change. CC set only in the environment was not recorded there, so nmake from a shell without it switched to cl in the middle of a build, and a shell still having it got the ... hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 96fd3a3e (git): Cast unsigned 64-bit pointers for the Interlocked functions
They take pointers to the signed LONG64. clang-cl warns about the difference in every file that includes ruby/atomic.h, as MSVC does at -W4 (C4057).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision be4e6d08 (git): Update the bundled prism to the revision ruby/ruby is synced with
The previous revision still used SSSE3 instructions on MSVC x64 without checking the CPU, which clang-cl rejects, so the clang-cl build stopped in the prism extension. ruby/prism@1bab98e441 switched to SSE2.
Co-Authored-By: Claude Opus ...
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 720fe71a (git): mswin: Pass libruby after -link to build the C-API spec extensions
clang-cl counts a library before -link as another input and then rejects -Fo, so test-spec stopped at building array_spec.so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 73722ea8 (git): mswin: Optimize for speed by default with clang-cl
clang-cl takes the default -O2sy- as -Os.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision dc6b65f0 (git): Use direct threaded code with clang-cl
clang-cl supports labels as values and `__extension__`, but does not define __GNUC__, so the VM fell back to the switch dispatch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 7df6851c (git): Define DEPRECATED_TYPE for clang-cl as for clang
clang-cl does not know `#pragma deprecated` and warns about it in every file that includes ruby.h. The warning is an error in mkmf checks with -WX.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 7c5aaac0 (git): mswin: Do not pass -Zc:preprocessor to clang-cl
clang-cl warns that the option is unused. Through CPPFLAGS in RbConfig, the warning becomes an error in mkmf checks with -WX, and convertible_int could not tell the type in TestMkmfConvertible.
clang-cl defines the same _MSC_VER as MSVC...
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 2f88a23a (git): json: Use SSE2 on x86-64 without checking at runtime
__builtin_cpu_supports refers to __cpu_model in compiler-rt, which clang-cl does not link, so generator.so and parser.so failed with an undefined symbol. SSE2 is part of the x86-64 baseline, as NEON is for AArch64, where no check is made... hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision d8358a1e (git): mswin: Do not export clang's weak definitions
clang-cl defines the weak Init_extra_exts as `.weak.Init_extra_exts.default.ruby_prefix_path`, and lib.exe rejects that name in the .def file with LNK1242.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision f0727b31 (git): Win32: Match the thread routine type of _beginthreadex
_beginthreadex takes a routine returning unsigned, not unsigned long. clang rejects the mismatch as an error.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision 152394e6 (git): Use the Interlocked atomics whenever _MSC_VER is defined
clang-cl defines _MSC_VER but is not MSVC for RBIMPL_COMPILER_IS, so rbimpl_atomic_or and rbimpl_atomic_cas fell through to "Unsupported platform".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:39 AM Ruby Revision c08678b7 (git): mswin: Preprocess verconf.mk as C source
clang-cl takes the here-document without an extension as linker input, so verconf.mk came out empty and nmake stopped at "MSC_VER not defined".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:53 AM Ruby Revision c4eadc74 (git): [ruby/rubygems] Rescue the LoadError in the spec for nested bundle exec with monkeypatches
The spec checks that the Kernel.require monkeypatch is still used, by
comparing the whole stdout. However, the script ended with an uncaught
LoadError for the non-existent "foo", and Ruby lazily loads
error_highlight, did_you_mean, and s...
mame (Yusuke Endoh)
03:45 AM Ruby Bug #22436 (Closed): Array#zip with a method_missing-based argument leaks a stale block handler (segfault when the next C-called method yields)
Applied in changeset commit:git|054385feb134d19b2130238a76004c204f96293b.
----------
Fix ifunc block handler leak from method_missing
[Bug #22436]
The check_funcall_exec function incorrectly restored the pending block
handler which ca...
peterzhu2118 (Peter Zhu)
03:44 AM Ruby Revision 054385fe (git): Fix ifunc block handler leak from method_missing
[Bug #22436]
The check_funcall_exec function incorrectly restored the pending block
handler which causes it to leak.
For example, the following code crashes:
o = Object.new
def o.method_missing(*) = nil # Array#zip calls o.e...
peterzhu2118 (Peter Zhu)
02:37 AM Ruby Revision 2681c8d3 (git): Add NEWS.md entry for Ractor receive timeout [Feature #22255]
Ractor::Port#receive, Ractor.receive and Ractor.select gained a
`timeout:` keyword argument in d32793fe8e (#18418), and the rdoc of
each method describes it, but NEWS.md has no entry for it.
Co-Authored-By: Claude Fable 5.1 <noreply@ant...
znz (Kazuhiro NISHIYAMA)
01:59 AM Ruby Revision 767905ce (git): win32: Port update-vcpkg and install-vcpkg to GNU make
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
01:59 AM Ruby Revision b6197cdc (git): win32: Build YJIT with GNU make too
Port the YJIT part of Makefile.sub, so that `--with-gnu-make` no longer rejects `--enable-yjit`. The rustc version stamp is a rule here, since GNU make reads its mtime again after the recipe, unlike nmake.
Co-Authored-By: Claude Opus 5....
hsbt (Hiroshi SHIBATA)
12:20 AM Ruby Revision 2c80a962 (git): [DOC] Harmonize world_readable? methods
burdettelamar (Burdette Lamar)
12:15 AM Ruby Revision b1d30da2 (git): [DOC] Doc for File::Stat#uid
burdettelamar (Burdette Lamar)
12:15 AM Ruby Revision 59db3a3a (git): Join getaddrinfo and getnameinfo threads before fork
A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread exit takes the resolver configuration lock again
after the thread has released the fork lock. A fork that lands then
leaves the child with t...
dugg (Doug E)
12:14 AM Ruby Revision 96812e0a (git): [DOC] Harmonize file size methods
burdettelamar (Burdette Lamar)
12:12 AM Ruby Revision 08968a9d (git): [DOC] Harmonize file size? methods
burdettelamar (Burdette Lamar)
12:10 AM Ruby Revision d0c8be14 (git): [DOC] Harmonize file size methods
burdettelamar (Burdette Lamar)
12:09 AM Ruby Feature #22441: Add Ractor#alive?
Matz approved it. ko1 (Koichi Sasada)
12:08 AM Ruby Revision 24e0fe09 (git): [DOC] Doc for File::Stat#rdev* methods
burdettelamar (Burdette Lamar)

10/14/2026

11:41 PM Ruby Feature #22444 (Open): Ractor.new should use Ractor.shareable_proc semantics for the block
#21557 introduced very well considered rules for `Ractor.shareable_proc`, where locals can be referenced so long as they are shareable and never reassigned. However `Ractor.new { ... }` continues to use a more restrictive rule that no lo... jhawthorn (John Hawthorn)
11:23 PM Ruby Bug #22439: Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
mame (Yusuke Endoh) wrote in #note-3:
> Thank you for the report!
> ...
Thank you for the quick analysis and for splitting the ticket!
Yes, I'm using GCC 16. Both 4.1 builds I reported were compiled locally on Arch Linux:
```
ru...
amalrik (amalrik maia)
07:34 PM Ruby Bug #22439: Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
Thank you for the report!
I could reproduce the SEGV only with GCC 16 (GCC 13 and 15 did not reproduce it). Are you also using GCC 16 to build Ruby?
This ticket contained two different problems, so I have split it into:
* #22440...
mame (Yusuke Endoh)
04:38 PM Ruby Bug #22439 (Closed): Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
Calling `Exception#detailed_message` concurrently from two or more Ractors crashes the VM with
`[BUG] Segmentation fault` on 4.1.0-preview1 and current master. The same script works on 4.0.6
and 4.0.7.
### Reproduction
No gems ar...
amalrik (amalrik maia)
11:04 PM Ruby Feature #22408 (Closed): Use GNU make instead of nmake for mswin builds
hsbt (Hiroshi SHIBATA)
11:02 PM Ruby Feature #22408: Use GNU make instead of nmake for mswin builds
I merged https://github.com/ruby/ruby/pull/19214. Ruby 4.1 keeps nmake, and GNU make is available as an experimental option with `win32\configure.bat --with-gnu-make`. I will consider making GNU make the only option sometime next year. hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision 3d168b1f (git): win32: Replace the DLL links in prepare-vcpkg with GNU make too
Follow win32/Makefile.sub, which removes the existing links first. Each link is now a separate command, so a failure stops make.
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision d5739e29 (git): Add a Windows CI job built with GNU make
It builds GNU make with win32/install-gnumake.cmd, configures with `--with-gnu-make` and runs `make check`. The job does not fail the workflow while the GNU make build is experimental.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic...
hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision 2bd5b04e (git): Read GNUmakefile when the build directory has no Makefile
`configure.bat --with-gnu-make` writes only `GNUmakefile`. The tests under `test/mkmf` failed to load with `Errno::ENOENT`, and `spec/default.mspec` lost `srcdir` and ran specs without `tool/runruby.rb`.
Co-Authored-By: Claude Opus 5.5 ...
hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision bae2f783 (git): win32: Add an experimental GNU make build
`configure.bat --with-gnu-make` writes a GNUmakefile that includes win32/GNUmakefile.sub, the GNU make counterpart of Makefile.sub, so that mswin can be built in parallel with `make -j`. configure.bat itself still runs nmake, and YJIT i... hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision 52a22ca9 (git): win32: Add install-gnumake.cmd
It builds GNU make from the GNU release with cl.exe, so that mswin developers do not need a third party binary. Only curl, tar and certutil bundled with Windows are used to fetch the source and check its SHA256.
Co-Authored-By: Claude ...
hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision 29ffa7a4 (git): mkmf, extmk: Support GNU make on mswin
Run recipes with cmd.exe instead of /bin/sh, rewrite the nmake-style `$(VAR:/=\)` substitutions, which GNU make applies only to suffixes, and write the note on failed extensions in the form cmd.exe runs.
Co-Authored-By: Claude Opus 5.5 ...
hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision 10c4c711 (git): Ignore failures to create timestamp files
On Windows, parallel jobs creating the same timestamp file, such as the extension builds or `make enc` and `make trans`, fail with a sharing violation while the file exists anyway.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
11:00 PM Ruby Revision 2b40a197 (git): win32: Let makedirs.bat tolerate concurrent creation
With parallel make, another job can create the same directory between the existence check and mkdir.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:52 PM Ruby Feature #22443 (Open): Remove multi-line regular expression comments from object inspection
## Why
Hello. 👋 Would it be possible to remove multi-line regular expression comments from object inspection? For example, this is nice for readability via the source code:
``` ruby
class Demo
PATTERN = /
(?: ...
bkuhlmann (Brooke Kuhlmann)
09:51 PM Ruby Revision 3602a8b8 (git): Implement RubyVM::ZJIT.max_compile_time_ns
[Feature #22236]
Allows to give a time budget to ZJIT. When ZJIT goes over the budget
it pauses compilation until the budget is raised.
It is best effort, ZJIT may go over, or have no choice but to compile
in some cases, but the goal i...
byroot (Jean Boussier)
08:33 PM Ruby Revision e055c053 (git): ZJIT: Fix snapshot merge race
alanwu (Alan Wu)
07:31 PM Ruby Bug #22442 (Closed): Lazy loading of error_highlight etc. is skipped in threads and Ractors
#21951 made error_highlight / did_you_mean / syntax_suggest lazily loaded.
When the lazy loading is triggered concurrently from threads or Ractors, the decoration may be skipped.
```ruby
# repro.rb
rs = 2.times.map do
Ractor.new...
mame (Yusuke Endoh)
07:08 PM Ruby Feature #22441 (Open): Add Ractor#alive?
I propose adding `Ractor#alive?` as a non-blocking way to ask whether a Ractor has finished. This matches `Thread#alive?`/`Fiber#alive?`.
```
r = Ractor.new { Ractor.receive }
r.alive? #=> true
r << :done
r.join
r.alive? #=> fals...
jhawthorn (John Hawthorn)
07:05 PM Ruby Bug #22440 (Closed): Referencing an autoload constant from multiple Ractors dumps core
Referencing an autoload constant from multiple Ractors in parallel may cause a SEGV:
```ruby
# foo.rb
module Foo; end
```
```ruby
# repro.rb
autoload :Foo, "./foo"
p 8.times.map { Ractor.new { Foo } }.map(&:value)
```
```...
mame (Yusuke Endoh)
06:36 PM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
Here is a new proposal based on the feedback.
For reading variable length data, conceptually it's very similar to the existing `IO#readline(sep, limit, chomp: false) → string`, except that the `sep` is not a String, but typically a byte...
ntkme (Natsuki Natsume)
04:40 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
I understand the need. Reading length-prefixed messages from a stream is common, and doing it efficiently in Ruby is hard today.
But I don't want to bring the whole `unpack` template to IO. As @mame pointed out, `X`, `@` and `*` assum...
matz (Yukihiro Matsumoto)
06:01 PM Ruby Revision 90a3551c (git): ZJIT: Forward -L search paths for the test binary (GH-19138)
So macOS `configure --with-gmp` builds with Homebrew finds libgmp.
[xrxr]: rewrote message; switched to use `option_env!`
Akito Shitara
06:00 PM Ruby Revision 81c5830a (git): ZJIT: Inline BasicObject#!= through a JIT hook (#19162)
Closes: https://github.com/Shopify/ruby/issues/884
Inline `BasicObject#!=` by using a ZJIT hook. This expands specialization coverage to additional cases beyond the existing String and Integer specializations.
Although this might add s...
Nozomi Hijikata
05:55 PM Ruby Misc #22417: DevMeeting-2026-11-12
* [Feature #21539] Export symbols for external profiling of stripped shared Ruby builds (dalehamel)
* Reduced scope from earlier ask: export `ruby_current_ec`, `rb_vm_exec`, and `ruby_global_symbols` from shared libruby so external pr...
dalehamel (Dale Hamel)
05:50 PM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
Updated the description and subject to reduce the scope of this substantially to just exporting a few symbols dalehamel (Dale Hamel)
02:33 PM Ruby Revision b709bdb3 (git): Update bundled gems for tests
nobu (Nobuyoshi Nakada)
02:20 PM Ruby Revision 091399f6 (git): Move prism_compile.h include out of iseq.h
iseq.h does not reference any of the pm_* types or functions declared in
prism_compile.h, so include the latter from the files that actually use
it instead. Only 6 of the 19 files including iseq.h need the prism
declarations, so this kee...
Eregon (Benoit Daloze)
01:43 PM Ruby Revision e43b7fe4 (git): Bump ossf/scorecard-action
Bumps the github-actions group with 1 update in the / directory: [ossf/scorecard-action](https://github.com/ossf/scorecard-action).
Updates `ossf/scorecard-action` from 2.4.4 to 2.5.0
- [Release notes](https://github.com/ossf/scorecard...
dependabot[bot]
01:12 PM Ruby Bug #22438 (Open): mkmf.rb do not work with /home mounted with noexec
When trying to install a *vagrant* plugin (here *vagrant-libvirt*), it uses the file **mkmf.rb** (here `/opt/vagrant/embedded/lib/ruby/3.3.0/mkmf.rb`) and this fail with the following error message:
> Vagrant failed to install the reque...
mbideau (Michael Bideau)
01:05 PM Ruby Feature #22437 (Open): Speed up creation and basic operations of Struct / Data
## Summary
Struct and Data are slower to create and to operate on than a hand-written class that does the same job.
Struct / Data are usually chosen because people expect them to be lightweight value objects, yet once they sit on a h...
shia (Sangyong Sim)
11:01 AM Ruby Bug #22436: Array#zip with a method_missing-based argument leaks a stale block handler (segfault when the next C-called method yields)
Thank you for the bug report, I have a fix here: https://github.com/ruby/ruby/pull/19337 peterzhu2118 (Peter Zhu)
08:18 AM Ruby Bug #22436 (Closed): Array#zip with a method_missing-based argument leaks a stale block handler (segfault when the next C-called method yields)
The following code:
```rb
o = Object.new
def o.method_missing(*) = nil # Array#zip calls o.each via method_missing
out = Object.new
def out.write(*) = nil
def out.puts(*) = yield # receives a block it was never given
...
0599jiangyc@gmail.com (Yuancheng Jiang)
09:25 AM Ruby Bug #22427 (Closed): `--enable=zjit` does not enable ZJIT
Applied in changeset commit:git|d71692d49f30e60296bd57c932eb8877e83c3b4d.
----------
ZJIT: prepare options whenever the zjit feature is enabled
--enable=zjit sets the zjit feature bit without parsing a --zjit option,
so OPTIONS is neve...
eightbitraptor (Matt V-H)
09:25 AM Ruby Revision d71692d4 (git): ZJIT: prepare options whenever the zjit feature is enabled
--enable=zjit sets the zjit feature bit without parsing a --zjit option,
so OPTIONS is never initialized and rb_zjit_option_enable() returns
false.
ZJIT then stays disabled at boot. The same happens with --enable-zjit
and RUBYOPT=--enab...
eightbitraptor (Matt V-H)
08:46 AM Ruby Bug #22406 (Closed): Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
Applied in changeset commit:git|44f7c6b00d3263c9c81af58e77eeb79eaec7bd0e.
----------
Join getaddrinfo and getnameinfo threads before fork
A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread ...
dugg (Doug E)
08:46 AM Ruby Revision 44f7c6b0 (git): Join getaddrinfo and getnameinfo threads before fork
A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread exit takes the resolver configuration lock again
after the thread has released the fork lock. A fork that lands then
leaves the child with t...
dugg (Doug E)
07:21 AM Ruby Revision d037ba85 (git): [ruby/mmtk] Update mmtk-core and add non_moving_root feature
A recent update in mmtk-core put non-moving roots behind a cargo feature
"non_moving_root". CRuby has been using non-moving roots for
conservative stack scanning. We explicitly enable this feature in
Cargo.toml.
https://github.com/ruby...
wks (Kunshan Wang)
07:03 AM Ruby Revision 86776714 (git): [DOC] Update bundled gems list at daa307aa875fd969dd9a20c82c6fbc
git[bot]
06:24 AM Ruby Bug #18782: Race conditions in autoload when loading the same feature with multiple threads.
The global autoload mutex introduced for this issue causes "deadlock; recursive locking" and [BUG] under a Fiber scheduler. See [Bug #22435].
I think this issue can be fixed without the global mutex by swapping the order of the checks...
mame (Yusuke Endoh)
05:56 AM Ruby Bug #22435 (Assigned): Autoload under a Fiber scheduler causes a deadlock or [BUG]
The following code causes a deadlock. test/fiber/scheduler.rb is the one in the ruby/ruby repository (https://github.com/ruby/ruby/blob/master/test/fiber/scheduler.rb).
```ruby
# fs-autoload-deadlock.rb
require_relative "test/fiber/...
mame (Yusuke Endoh)
05:46 AM Ruby Revision daa307aa (git): [ruby/resolv] Bind the random UDP source port exclusively on Windows
TestResolvDNS#test_query_ipv4_address occasionally fails on Windows CI:
1) Failure:
TestResolvDNS#test_query_ipv4_address [C:/a/ruby/ruby/src/test/resolv/test_dns.rb:236]:
<1> expected but was
<0>.
On Windows, Resolv picks a ra...
mame (Yusuke Endoh)
03:58 AM Ruby Revision 6095c59c (git): [ruby/net-http] Stop loading resolv from net/http
Net::HTTP required the whole DNS resolver, which also reads the system DNS configuration at load time, only to match Resolv::IPv4::Regex and Resolv::IPv6::Regex when deciding whether to send SNI. Use the same inlined regexps as the copy ... hsbt (Hiroshi SHIBATA)
03:53 AM Ruby Revision dc420ed4 (git): fetch-bundled_gems.rb: Retry git clone and fetch
A single failed connection to github.com aborted the whole build. The candidate tags are retried as a group, so a missing `v` prefixed tag still falls back without waiting.
https://github.com/ruby/ruby/actions/runs/37669701848/job/11296...
hsbt (Hiroshi SHIBATA)
03:53 AM Ruby Revision 332fcb9e (git): Increase the timeout of test_ractor_lazy_load_encoding_concurrently
Loading every autoload encoding from 7 Ractors exceeded the default 10 seconds on a loaded Windows runner. The same test in test_transcode.rb already uses 60 seconds.
https://github.com/ruby/ruby/actions/runs/37358791174/job/11192929510...
hsbt (Hiroshi SHIBATA)
02:54 AM Ruby Revision 1bf91309 (git): Fix Range#include? of an empty range of single characters
A range of single character Strings told that it includes its end
even when it is empty, since the end was not compared with the begin.
("z".."a").to_a #=> []
("z".."a").include?("a") #=> true
sferik (Erik Berlin)
02:20 AM Ruby Revision 186aa9af (git): [DOC] Harmonize setuid? methods
burdettelamar (Burdette Lamar)
02:19 AM Ruby Revision ba051302 (git): [DOC] Harmonize setgit? methods
burdettelamar (Burdette Lamar)
02:18 AM Ruby Revision f49adab2 (git): [DOC] Harmonize readable_real? methods
burdettelamar (Burdette Lamar)
02:15 AM Ruby Revision a827b6af (git): [DOC] Harmonize pipe? methods
burdettelamar (Burdette Lamar)
02:14 AM Ruby Revision 8bc1b731 (git): [DOC] Harmonize owned? methods
burdettelamar (Burdette Lamar)
02:10 AM Ruby Revision 5f1806fc (git): [DOC] Doc for File::Stat#nlink
burdettelamar (Burdette Lamar)
02:09 AM Ruby Revision 6e55b106 (git): [DOC] Harmonize mtime methods
burdettelamar (Burdette Lamar)
01:02 AM Ruby Bug #22420 (Closed): `require "strscan"` no longer activates the default gem, so a newer installed strscan is ignored and later loaded twice
Applied in changeset commit:git|2cdfc0d20e5f56b5b45178c172d78d95700666e1.
----------
[Bug #22420] Prefix `lib/` only to collected files of default gems
The files collected for a default gem are relative to its lib
directory, while the ...
ksss (Yuki Kurihara)
01:02 AM Ruby Revision 6b32bb45 (git): Evaluate gemspecs in a binding without local variables
Gemspecs can assign local variables such as `files`, `file` and
`base`, which overwrote the ones of `load_gemspec`. For instance,
ipaddr.gemspec and net-http.gemspec assign `file`, and `loaded_from`
of their specs pointed to their Ruby ...
ksss (Yuki Kurihara)
01:02 AM Ruby Revision 2cdfc0d2 (git): [Bug #22420] Prefix `lib/` only to collected files of default gems
The files collected for a default gem are relative to its lib
directory, while the files listed by the gemspec itself are relative
to the gem root. `load_gemspec` prefixed `lib/` to any `.rb` entry
missing from the current directory, so ...
ksss (Yuki Kurihara)
12:30 AM Ruby Revision 01ac07e5 (git): [ruby/un] Fix mkmf -v being shadowed by the common -v option
The common -v (verbose) was defined after each command's own options and replaced mkmf's `-v ARGS`, so have_var never ran and the argument was passed to create_makefile as the target name. wait_writable's own `v` was dead for the same re... hsbt (Hiroshi SHIBATA)
12:29 AM Ruby Revision 8c823c61 (git): Comment the record of writable JIT ranges on Windows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
12:29 AM Ruby Revision 198b42b7 (git): Re-protect only the JIT code made writable on Windows
The JITs pass the whole mapped region to rb_jit_mark_executable() after every write session, and VirtualProtect(), unlike mprotect(), takes time for every page in it even when the protection does not change. Record the ranges rb_jit_mark... hsbt (Hiroshi SHIBATA)
12:28 AM Ruby Revision 0511c698 (git): [ruby/un] Fix --help of each command on Ruby 3.4 and later
Since Ruby 3.4, Thread::Backtrace::Location#label includes the class name such as "Object#mkdir", so UN.help found no matching command and printed nothing. base_label is the bare method name on every version.
https://bugs.ruby-lang.org/...
hsbt (Hiroshi SHIBATA)
12:26 AM Ruby Revision 2de8f78d (git): [ruby/find] Require Ruby 2.5 or later
Find.find calls Dir.children, which was added in Ruby 2.5, so on 2.4 it raises NoMethodError as soon as it descends into a directory.
https://github.com/ruby/find/commit/3371fd707c
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:02 AM Ruby Revision f6963df7 (git): Remove code checking for uninitialized class
jhawthorn (John Hawthorn)
12:02 AM Ruby Revision 0adee861 (git): Prevent uninitialized classes from being allocated
jhawthorn (John Hawthorn)

10/13/2026

11:13 PM Ruby Revision f4f2dfb3 (git): Defer unloading box-local extension DLLs on Windows
box_entry_free could run before other T_DATA objects are finalized in
rb_objspace_call_finalizer, and FreeLibrary there unmapped the
rb_data_type_t and dfree functions that later finalization still
dereferences, crashing any boxed proces...
Hiroshi SHIBATA
10:39 PM Ruby Revision 540eaae3 (git): Emit NoEPEscape patch point after every non-leaf instruction
`local_inval` was inherited only from the first-visited predecessor, so a
merge point after `eval` in one branch could read a stale local. Patch
right after each non-leaf instruction and drop `local_inval` and its
dataflow.
dak2 (Daichi Kamiyama)
10:39 PM Ruby Revision f568167f (git): ZJIT: Fix stale local read at merge point after eval in one branch
`local_inval` was inherited only from the first-visited predecessor, so a
merge point after `eval` or `binding.local_variable_set` on one branch
could read a stale local. Pre-compute jump targets reachable from an
invalidating instructio...
dak2 (Daichi Kamiyama)
10:24 PM Ruby Revision 523d4fa5 (git): [ruby/prism] Just abort on OOM for lex mode
https://github.com/ruby/prism/commit/7f276e542c kddnewton (Kevin Newton)
10:23 PM Ruby Revision 6d167eb4 (git): [ruby/prism] Guard heredoc terminator checking by length
https://github.com/ruby/prism/commit/9c9474fdcd kddnewton (Kevin Newton)
10:23 PM Ruby Revision 2f4c707a (git): [ruby/prism] Remove underscores from floats in one pass
https://github.com/ruby/prism/commit/6a44a3698d kddnewton (Kevin Newton)
10:17 PM Ruby Revision 56e8d2dd (git): [ruby/prism] Invalid range check in EUC-JP
https://github.com/ruby/prism/commit/b81d200453 kddnewton (Kevin Newton)
09:54 PM Ruby Revision 12217a2f (git): [ruby/un] Refactor mkmf with safe navigation operator and split with block
With safe navigation operator (Ruby 2.3) and split with block (Ruby 2.6) it is possible to avoid the intermediate variable ``opt``and array created by split, resulting in a more compact and clear code for the mkmf method.
https://github...
Maumagnaguagno (Mau Magnaguagno)
09:54 PM Ruby Revision 70061f0e (git): [ruby/un] Bump required Ruby version to 2.6.0
https://github.com/ruby/un/commit/c2b6ffd2dc Maumagnaguagno (Mau Magnaguagno)
09:13 PM Ruby Bug #22434 (Open): "No live threads left. Deadlock?" when running system() or spawn in Ractors
Non-main Ractors don't support `fork()`, but do support `system()` and `spawn()`. They can end up deadlocked inside the prefork method when trying to flush stdio.
```
$stdout = File.open(File::NULL, "w")
writer = Thread.new { loop {...
jhawthorn (John Hawthorn)
08:59 PM Ruby Bug #22426 (Closed): ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
Applied in changeset commit:git|df0d7a87b664c01e303f9a8ded612399ee317299.
----------
[Backport #22426] ZJIT: Snapshot FrameState with reordered args before direct send
You can see the reordered args in the new Snapshot right before the...
rwstauner (Randy Stauner)
05:47 PM Ruby Bug #22426: ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
Backport PR https://github.com/ruby/ruby/pull/19322 rwstauner (Randy Stauner)
11:02 AM Ruby Bug #22426: ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
For reference: the fix (d81a11d4e6) is included in 4.1.0-preview1. Related discussion: https://github.com/ruby/ruby/pull/15827
incubus (Alexander Logvinov)
08:59 PM Ruby Revision df0d7a87 (git): [Backport #22426] ZJIT: Snapshot FrameState with reordered args before direct send
You can see the reordered args in the new Snapshot right before the
DirectSend insn:
v14:Any = Snapshot FrameState { pc: 0x00, stack: [v6, v11, v13], locals: [] }
PatchPoint MethodRedefined(Object@0x00, a@0x00, cme:0x00)
...
rwstauner (Randy Stauner)
08:14 PM Ruby Revision 67abedae (git): [ruby/prism] Use File::path for FFI
https://github.com/ruby/prism/commit/bdf15c7566 kddnewton (Kevin Newton)
07:36 PM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
Hi @mame, could I trouble you for a review of [PR#19242](https://github.com/ruby/ruby/pull/19242) ? @byroot has requested your input. 🙇‍♂️ dug (Doug E)
07:21 PM Ruby Revision fa8df43b (git): test/ruby/test_process.rb: simplify testing spawn with long strings
test_aspawn_too_long_path just wants to verify that passing a very long
string to spawn does not cause a crash. Use an input string that is long
enough for this purpose and does not ends up with spawning too many
processes.
This change ...
rhenium (Kazuki Yamaguchi)
07:17 PM Ruby Revision a4ccceac (git): [ruby/prism] Make code examples explicitly ruby for rdoc
Because of the `^^^` hints, it's not valid ruby and so rdoc
gives it no syntax highlighting.
We can convince it otherwise and syntax-highlight syntax-invalid code.
Although it is syntax-invalid, the results look very good.
https://gith...
Earlopain (Earlopain _)
07:01 PM Ruby Revision 817e940d (git): Change ISEQ_BODY(iseq)->location.pathobj to be a String instead of Array
Any iseq created inside an eval, class_eval or module_eval had its
`location.pathobj` set to an Array of 2 elements where the 2nd element was
`nil`. This is wasteful in terms of memory and also causes longer major GC
times. This was true...
Luke Gruber
06:13 PM Ruby Revision 1b19b75b (git): [ruby/prism] Default to nearest instead of latest
https://github.com/ruby/prism/commit/b2cb61deb0 kddnewton (Kevin Newton)
06:08 PM Ruby Bug #22424: IO#readpartial and IO#sysread should respect IO#timeout= value
I've opened a GitHub PR: https://github.com/ruby/ruby/pull/19292 rhenium (Kazuki Yamaguchi)
06:07 PM Ruby Bug #22433: IO#sysread and IO#pread are inconsistent for length 0 and negative numbers
I've opened a GitHub PR: https://github.com/ruby/ruby/pull/19323 rhenium (Kazuki Yamaguchi)
06:01 PM Ruby Bug #22433 (Open): IO#sysread and IO#pread are inconsistent for length 0 and negative numbers
When the length is 0 and an output buffer is given, the buffer is not cleared correctly. [Bug #18421] fixed the same bug for `IO#readpartial` and `IO#read_nonblock`, but it omitted `IO#sysread` and `IO#pread`:
```ruby
File.open("/d...
rhenium (Kazuki Yamaguchi)
05:48 PM Ruby Revision 7dab2293 (git): [ruby/prism] Put a depth check in parse_pattern
https://github.com/ruby/prism/commit/fb2fea4cb2 kddnewton (Kevin Newton)
05:48 PM Ruby Revision 68e7541c (git): [ruby/prism] Extract out parse_aref
https://github.com/ruby/prism/commit/aa0ebe032a kddnewton (Kevin Newton)
05:48 PM Ruby Revision 6227730b (git): [ruby/prism] Extract parse_call
https://github.com/ruby/prism/commit/de9a651018 kddnewton (Kevin Newton)
05:48 PM Ruby Revision 1c7dba3d (git): [ruby/prism] Extract parse_equal
https://github.com/ruby/prism/commit/cad38e9ce5 kddnewton (Kevin Newton)
05:48 PM Ruby Revision d3d04c19 (git): [ruby/prism] Extract parse_*_equal
https://github.com/ruby/prism/commit/3ea17ccfec kddnewton (Kevin Newton)
05:48 PM Ruby Revision 0ed4ee66 (git): [ruby/prism] Extract out parse_match
https://github.com/ruby/prism/commit/c1964c8a20 kddnewton (Kevin Newton)
05:48 PM Ruby Revision e7f6ab0e (git): [ruby/prism] Extract out parse_constant_path_infix
https://github.com/ruby/prism/commit/a10b3dde7a kddnewton (Kevin Newton)
05:48 PM Ruby Revision 75d34646 (git): [ruby/prism] Extract out parse_ternary
https://github.com/ruby/prism/commit/534b370fff kddnewton (Kevin Newton)
05:48 PM Ruby Revision 559dd240 (git): [ruby/prism] Extract out parse_array_keyword_hash
https://github.com/ruby/prism/commit/28ea3c6505 kddnewton (Kevin Newton)
05:48 PM Ruby Revision f4a1b92a (git): [ruby/prism] Rename for ensure_valid_* functions
https://github.com/ruby/prism/commit/165189f969 kddnewton (Kevin Newton)
05:48 PM Ruby Revision 72bca587 (git): [ruby/prism] Extract out parse_multi_target
https://github.com/ruby/prism/commit/18f579ed31 kddnewton (Kevin Newton)
05:48 PM Ruby Revision bb42b9a7 (git): [ruby/prism] Extract out parse_constant_path
https://github.com/ruby/prism/commit/b3b27e8000 kddnewton (Kevin Newton)
05:48 PM Ruby Revision 1a198d3c (git): [ruby/prism] Extract out parse_unary_star
https://github.com/ruby/prism/commit/3ca14b6f3b kddnewton (Kevin Newton)
05:48 PM Ruby Revision 6a6d7ace (git): [ruby/prism] Extract parse_bang and parse_tilde
https://github.com/ruby/prism/commit/046f9a1df8 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 9a17b30f (git): [ruby/prism] Extract out parse_range
https://github.com/ruby/prism/commit/b24fc8dca3 kddnewton (Kevin Newton)
05:47 PM Ruby Revision d923df2b (git): [ruby/prism] Make parse_symbol own its lex mode extraction
https://github.com/ruby/prism/commit/e86036d1e4 kddnewton (Kevin Newton)
05:47 PM Ruby Revision a8d4b0db (git): [ruby/prism] Extract out parse_unary_minus_number
https://github.com/ruby/prism/commit/212e446966 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 1be355b9 (git): [ruby/prism] Extract out parse_super
https://github.com/ruby/prism/commit/72298a210e kddnewton (Kevin Newton)
05:47 PM Ruby Revision 8eb7292e (git): [ruby/prism] Extract out parse_unary_minus
https://github.com/ruby/prism/commit/3eddf3a81c kddnewton (Kevin Newton)
05:47 PM Ruby Revision 345c6f21 (git): [ruby/prism] Extract out parse_unary_plus
https://github.com/ruby/prism/commit/7b781b1fa3 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 021b6231 (git): [ruby/prism] Extract out parse_constant
https://github.com/ruby/prism/commit/8ca3a19720 kddnewton (Kevin Newton)
05:47 PM Ruby Revision e1414377 (git): [ruby/prism] Extract out parse_char
https://github.com/ruby/prism/commit/03a8d1c601 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 0c61f223 (git): [ruby/prism] Extract out parse_yield
https://github.com/ruby/prism/commit/091a6f54af kddnewton (Kevin Newton)
05:47 PM Ruby Revision 5d52c6f8 (git): [ruby/prism] Extract out parse_undef
https://github.com/ruby/prism/commit/98d7c2200b kddnewton (Kevin Newton)
05:47 PM Ruby Revision 0cae2de0 (git): [ruby/prism] Extract parse_preexe and parse_postexe
https://github.com/ruby/prism/commit/b0441606bc kddnewton (Kevin Newton)
05:47 PM Ruby Revision 1603c441 (git): [ruby/prism] Extract out parse_not
https://github.com/ruby/prism/commit/d64604bfde kddnewton (Kevin Newton)
05:47 PM Ruby Revision f283106e (git): [ruby/prism] Extract out parse_jump
https://github.com/ruby/prism/commit/99429ad268 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 3de3f7e6 (git): [ruby/prism] Extract out parse_uninterpolated_symbol_array
https://github.com/ruby/prism/commit/9d329d8ab3 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 404cefa4 (git): [ruby/prism] Extract out parse_uninterpolated_string_array
https://github.com/ruby/prism/commit/6b0efe46a2 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 41f81420 (git): [ruby/prism] Extract out parse_identifier
https://github.com/ruby/prism/commit/8c22837931 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 6cc44439 (git): [ruby/prism] Extract out parse_xstring
https://github.com/ruby/prism/commit/325c68c925 kddnewton (Kevin Newton)
05:47 PM Ruby Revision d03b0d92 (git): [ruby/prism] Extract parse_while and parse_until
https://github.com/ruby/prism/commit/a511aa0d02 kddnewton (Kevin Newton)
05:47 PM Ruby Revision a7f2aa5e (git): [ruby/prism] Extract out parse_alias
https://github.com/ruby/prism/commit/6e414dbafc kddnewton (Kevin Newton)
05:47 PM Ruby Revision 55fb2890 (git): [ruby/prism] Extract out parse_regexp
https://github.com/ruby/prism/commit/b080d2c0fe kddnewton (Kevin Newton)
05:47 PM Ruby Revision 13a5abf3 (git): [ruby/prism] Extract out parse_lambda
https://github.com/ruby/prism/commit/99f1757da0 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 9bb259e0 (git): [ruby/prism] Extract out parse_for
https://github.com/ruby/prism/commit/e539d7c47c kddnewton (Kevin Newton)
05:47 PM Ruby Revision faa781f7 (git): [ruby/prism] Extract out parse_defined
https://github.com/ruby/prism/commit/9e2058cfc1 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 8e4d6018 (git): [ruby/prism] Extract out parse_begin
https://github.com/ruby/prism/commit/3c0c3700a5 kddnewton (Kevin Newton)
05:47 PM Ruby Revision e8baec45 (git): [ruby/prism] Extract out parse_heredoc
https://github.com/ruby/prism/commit/0654f2180d kddnewton (Kevin Newton)
05:47 PM Ruby Revision 0a2f024c (git): [ruby/prism] Extract out parse_hash
https://github.com/ruby/prism/commit/933e806333 kddnewton (Kevin Newton)
05:47 PM Ruby Revision 104e0ca8 (git): [ruby/prism] Extract out parse_array
https://github.com/ruby/prism/commit/b478f9edd4 kddnewton (Kevin Newton)
05:12 PM Ruby Revision 976b89be (git): [ruby/prism] Do not report regexp errors twice with captures
When named captures were present we would reprocess the regexp and
accidentally report errors twice.
https://github.com/ruby/prism/commit/e2e11ad07f
kddnewton (Kevin Newton)
04:53 PM Ruby Bug #22305 (Closed): Ruby::Box: statically linked prism loads in only one box
Applied in changeset commit:git|dfbcdda93952f7ed18131a14e1010d403e7f5c02.
----------
Set autoloaded constants in the box that registered the autoload
The constants of an autoload were set in the box that triggered it. For
an autoload ...
mame (Yusuke Endoh)
04:53 PM Ruby Revision 1907cd84 (git): Explain why not to require "ruby/prism" explicitly
With Ruby::Box, requiring "ruby/prism" explicitly in a user box loads it
in that box. As its C extension is statically linked and can be
initialized only once in the process, the other boxes then fail to load
it. Fixing this is not eas...
mame (Yusuke Endoh)
04:53 PM Ruby Revision 0cb32950 (git): Assert that a constant entry of Qundef holds an autoload
A constant entry whose value is Qundef always holds the autoload
registration, so check its type only by VM_ASSERT instead of handling
other cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
04:53 PM Ruby Revision cb08906b (git): Explain how other boxes get the autoloaded constant
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> mame (Yusuke Endoh)
04:53 PM Ruby Revision 8b630aad (git): Update variable.c
Co-authored-by: Jeremy Evans <code@jeremyevans.net> mame (Yusuke Endoh)
04:53 PM Ruby Revision bac98d14 (git): Document not to require "ruby/prism" explicitly
Ruby::Prism is autoloaded when it is first referenced.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
04:53 PM Ruby Revision dbd0e017 (git): Rename autoload_data() to autoload_entry()
It returns an autoload_const, not an autoload_data.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
04:53 PM Ruby Revision 6d68304c (git): Keep autoload registrations in the constant entries
An autoload registration has been kept in a per-module table under the
hidden instance variable __autoload__, in addition to the Qundef entry
in the constant table. With Ruby::Box, the constant table of a class is
copied entry by entry ...
mame (Yusuke Endoh)
04:53 PM Ruby Revision dfbcdda9 (git): Set autoloaded constants in the box that registered the autoload
The constants of an autoload were set in the box that triggered it. For
an autoload registered in the master box (e.g., Ruby::Prism), this
defined the constant only in the first box that accessed it, and the
other boxes got NameError.
...
mame (Yusuke Endoh)
04:29 PM Ruby Revision 09d278a9 (git): [ruby/openssl] ssl: run test_pair.rb tests against IO objects
Run assertions in test_pair.rb against a pair of real socket objects
to catch unintended differences between SSLSocket and core IO behavior.
This is skipped for TruffleRuby until I figure out what's wrong.
https://github.com/ruby/opens...
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision 1ec5306d (git): [ruby/openssl] ssl: align #putc with IO
Add the method. OpenSSL::Buffering already supports other
character-oriented methods such as #getc, #ungetc, or #readchar, and
this is the only missing method.
https://github.com/ruby/openssl/commit/df0fde6b4c
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision 15467f68 (git): [ruby/openssl] ssl: align #puts with IO
Handle nested arrays in the arguments, similar to how IO#puts behaves.
https://github.com/ruby/openssl/commit/d87ebfe0a1
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision 497f987c (git): [ruby/openssl] ssl: align #syswrite and #syswrite_nonblock with IO
IO#syswrite converts the argument with #to_s rather than #to_str.
https://github.com/ruby/openssl/commit/25a57af17f
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision ce8da0cf (git): [ruby/openssl] ssl: align #write and #<< with IO
IO#write and IO#<< convert the arguments to String with #to_s. RDoc
comments for OpenSSL::Buffering#write also stated this, but they do not
actually convert. Fix this.
OpenSSL::Buffering#puts and #print already correctly call #to_s.
ht...
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision f4a0d53e (git): [ruby/openssl] ssl: align line-oriented methods with IO
Rewrite OpenSSL::Buffering#gets to handle parameters as closely to core
IO as possible. This includes changes:
- Add support for gets(limit), where the rs parameter is omitted.
- Add support for gets(nil, limit) (slurp mode).
- Ad...
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision 6c87bfb2 (git): [ruby/openssl] ssl: align #each_byte and #each_char with IO
Let OpenSSL::Buffering#each_byte return an Enumerator if called without
a block.
Also add the #each_char variant.
https://github.com/ruby/openssl/commit/0c6e84e8a1
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision 6750e8f0 (git): [ruby/openssl] ssl: align #ungetc and #ungetbyte with IO
Passing a String to #ungetc should use the entire content, not just the
first character.
Also add OpenSSL::Buffering#ungetbyte for symmetry with IO#ungetbyte
which was added in Ruby 1.9.
https://github.com/ruby/openssl/commit/9a6d40138d
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision ee5f5921 (git): [ruby/openssl] ssl: return mutable empty String
OpenSSL::SSLSocket#read, #read_nonblock, and #readpartial should return
a mutable String instead of literal "". This fixes a regression
introduced in v2.2.0 that added the frozen_string_literal magic comment
to this file.
https://github...
rhenium (Kazuki Yamaguchi)
04:29 PM Ruby Revision fc929c89 (git): [ruby/openssl] ssl: avoid subclassing String
Remove the internal Buffer class and instead use refinements to define
String#append_as_bytes when necessary.
This also fixes a few OpenSSL::Buffering methods leaking the internal
Buffer class through String#slice! on Ruby < 3.0.
https...
rhenium (Kazuki Yamaguchi)
03:41 PM Ruby Revision 34cc07df (git): [ruby/openssl] ssl: do not rescue Errno::EAGAIN
SSLSocket#sysread and #syswrite never raise Errno::EAGAIN.
It appears to me that commit https://github.com/ruby/ruby/commit/a9fb0817a154 (should wait for
that the underlying IO become readable or writable if the error was
SSL_ERROR_WANT...
rhenium (Kazuki Yamaguchi)
02:34 PM Ruby Bug #22419: [BUG] "rb_objspace_reachable_objects_from_local: set is owned by another Ractor" when a non-main Ractor reads a class instance variable since f0439cdfa7
Thanks for the report. We're working on fixing this and I've created a [PR](https://github.com/ruby/ruby/pull/19283) for it. We've realized that the way Ractor shareability is checked when the object is not shareable but frozen is curren... luke-gru (Luke Gruber)
02:09 PM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
@eightbitraptor: Thanks. I previously submitted a nearly identical fix for this in https://github.com/ruby/ruby/pull/19313. CI is already green there. sferik (Erik Berlin)
02:01 PM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
Thanks for the report. Addressed in https://github.com/ruby/ruby/pull/19317 eightbitraptor (Matt V-H)
02:09 AM Ruby Bug #22432 (Open): Range#include? returns true for the end of an empty range of single-character Strings
A Range whose ends are both single ASCII characters reports that it includes its end even when the range is empty.
```ruby
r = "z".."a"
r.to_a #=> []
r.include?("a") #=> true
r.member?("a") #=> true
r.cover?("a") #=> ...
sferik (Erik Berlin)
01:44 PM Ruby Revision c31e1506 (git): tool/run-lcov.rb: Exclude bundled gems from coverage aggregation
Since a1efb9ae6b (Promote prism to a bundled gem), the prism extension
is also built with gcov under .bundle/gems/prism-1.9.0/ext/prism. Its
generated node.c carries `#line` directives pointing at
"prism/templates/src/node.c.erb", a path...
znz (Kazuhiro NISHIYAMA)
11:27 AM Ruby Revision 47dddf78 (git): [ruby/mmtk] Directly call functions in C binding
This commit removes RubyUpcalls and instead directly calls functions in
the C binding from Rust. This also allows LTO to inline C calls from Rust.
https://github.com/ruby/mmtk/commit/0f5a049a2d
peterzhu2118 (Peter Zhu)
09:42 AM Ruby Revision 76268ed6 (git): io.c: refactor io_getpartial()
io_getpartial() and io_read_nonblock() are now almost identical. rhenium (Kazuki Yamaguchi)
09:42 AM Ruby Revision 62d2c391 (git): io.c: ignore failure to set O_NONBLOCK in ARGF.read_nonblock
Commit 1bafa4a59b29 (Ignore failure to set nonblock mode. (#6524),
2022-10-11) changed IO#read_nonblock to work with files on Windows, but
did not make the same change to ARGF.read_nonblock. Do so for ARGF as
well.
Also update the outda...
rhenium (Kazuki Yamaguchi)
09:39 AM Ruby Revision b10b8048 (git): io_buffer.c: use rb_off_t consistently
Fix an rb_off_t value being implicitly converted to off_t and then back
to rb_off_t.
rhenium (Kazuki Yamaguchi)
09:29 AM Ruby Revision 9d123b1e (git): Saturate parser columns at INT_MAX
Token columns are int, so a token past column INT_MAX got a negative column, and the excerpt shown for a syntax error there was read from before the line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:29 AM Ruby Revision e5e36b4e (git): Range-check parser columns with rb_len2int
rb_long2int is a plain cast where int and long have the same width, so on 64-bit mswin a column past INT_MAX wrapped instead of raising RangeError as it does on LP64.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:29 AM Ruby Revision c68782a2 (git): Hold heredoc offsets in rb_len_t
Where rb_len_t is wider than long, a heredoc opener past column LONG_MAX made the long offset negative, and the identifier and the restored lexer position were read from before the line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropi...
hsbt (Hiroshi SHIBATA)
09:29 AM Ruby Revision 4f42bb94 (git): Hold parser string lengths in rb_len_t
rb_parser_string_t kept its length in a long, so rb_str_to_parser_string had to reject a String longer than LONG_MAX where rb_len_t is wider than long. Now the parser string holds the whole length and the check is gone.
Co-Authored-By: ...
hsbt (Hiroshi SHIBATA)
08:05 AM Ruby Revision 2722027e (git): Update default gems list at 53e7d061f90ae80236e7a917b924ea [ci skip]
git[bot]
08:04 AM Ruby Revision 53e7d061 (git): [ruby/json] Release 3.1.0
https://github.com/ruby/json/commit/a15b2ba603 byroot (Jean Boussier)
07:32 AM Ruby Revision 72afd0b0 (git): [ruby/json] Refactor `rfc8785_sort_keys_proc`
https://github.com/ruby/json/commit/d09e383d19 byroot (Jean Boussier)
07:09 AM Ruby Revision ee0f83a7 (git): Update bundled gems list as of 2026-10-13
git[bot]
06:29 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
The current `String#unpack` has its signature as:
```
String#unpack(template, offset: 0, &block)
```
The concern for unbounded IO read can be potentially solved by having a `maxlen` option:
```
IO#unpack(template, maxlen = n...
ntkme (Natsuki Natsume)
03:14 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
I understand the motivation and have wanted this myself, but there seem to be many things to consider. `unpack` has specifiers like `X` and `@` that do not fit streams. We would also need to decide how to handle specifiers with unbounded... mame (Yusuke Endoh)
04:14 AM Ruby Revision 83fdd0da (git): [ruby/mmtk] Build with LTO when able
https://github.com/ruby/mmtk/commit/2dbb8005aa peterzhu2118 (Peter Zhu)
12:46 AM Ruby Revision f81c2121 (git): Index the regexp match cache by OnigPosition
The match cache index, the fail count and the threshold to enable the cache grow with the string length times the number of cache points, but were long, which is 32-bit on mswin. There the following raised RegexpError (failed to allocate... hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision c5c692c8 (git): Traverse shareable Arrays by rb_len_t
RARRAY_LENINT raises RangeError for an Array longer than INT_MAX. Ractor.make_shareable failed on one after freezing it, and so did Ractor.shareable? and Ractor.make_shareable(copy: true).
Co-Authored-By: Claude Opus 5.5 <noreply@anthro...
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision cb86c6d7 (git): Count the Array#product positions in rb_len_t
An int counter overflows once an array has more than INT_MAX elements. On LP64, product with a block then yielded the element at index 1 after the one at INT_MAX, instead of the one at 2**31.
Co-Authored-By: Claude Opus 5.5 <noreply@ant...
hsbt (Hiroshi SHIBATA)
12:27 AM Ruby Revision c83f90c6 (git): [ruby/zlib] Return the full input length from Zlib::ZStream#avail_in
The int cast turned a remainder longer than INT_MAX into a wrong or negative number.
https://github.com/ruby/zlib/commit/d23d925f67
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)

10/12/2026

10:43 PM Ruby Feature #22431 (Open): Add `IO#unpack` and `IO#unpack1`
I would like to have ruby add `IO#unpack` and `IO#unpack1` that effectively does both `IO#read(...)` and `String#unpacking(...)` in one call.
This can significantly improve the performance of consuming data in a variable-length encodi...
ntkme (Natsuki Natsume)
08:40 PM Ruby Revision 55e03ec0 (git): [ruby/prism] Fix buffer length append check 0
https://github.com/ruby/prism/commit/812fd04263 kddnewton (Kevin Newton)
05:01 PM Ruby Revision 98fd04f7 (git): [ruby/prism] attach_comments
Revisit how we attach comments, allowing consumers to do it in C.
https://github.com/ruby/prism/commit/eb3528e580
kddnewton (Kevin Newton)
03:11 PM Ruby Revision 31ace4fd (git): [ruby/prism] Use SSE2, not SSSE3
Pre-compilation could potentially enable SSSE3, when the target
the code is being installed on might not actually have it. In
order to use more modern instruction sets, we need runtime
detection. It's simpler just to rely on the baseline...
kddnewton (Kevin Newton)
02:55 PM Ruby Revision ad29ad7a (git): [ruby/json] Handle invalid encoding in JSON path keys
https://github.com/ruby/json/commit/e19f7d75a6 byroot (Jean Boussier)
02:28 PM Ruby Revision 86f192cf (git): [ruby/json] parser.c: only update the stack once fully spilled
https://github.com/ruby/json/commit/78d6a83a3c byroot (Jean Boussier)
02:22 PM Ruby Revision c5597ac4 (git): [ruby/json] Fix parsing of number with out of range negative exponents
https://github.com/ruby/json/commit/6ea62016fb byroot (Jean Boussier)
01:57 PM Ruby Revision 817023b8 (git): [ruby/json] Fix parsing of unescaped NULL bytes in strings
https://github.com/ruby/json/commit/1b67eb3db2 byroot (Jean Boussier)
01:51 PM Ruby Revision 90e7ab3a (git): [ruby/json] ResumableParser: fix handling of incomplete unicode escape
`spe` is the string end, so if the escape is incomplete, it doesn't
mean we reached the end of stream, hence it's a syntax error, not
an EOS error.
https://github.com/ruby/json/commit/c1a4372837
byroot (Jean Boussier)
01:40 PM Ruby Bug #22427: `--enable=zjit` does not enable ZJIT
Thanks, Proposed fix in https://github.com/ruby/ruby/pull/19307 eightbitraptor (Matt V-H)
04:59 AM Ruby Bug #22427 (Closed): `--enable=zjit` does not enable ZJIT
`ruby --help` lists `zjit` under "Features" (`zjit Method-based JIT compiler (default: disabled).`), but `--enable=zjit` alone does not enable ZJIT, while `--enable=yjit` does enable YJIT.
```
$ ruby -v
ruby 4.0.7 (2026-09-15 revis...
znz (Kazuhiro NISHIYAMA)
12:34 PM Ruby Feature #13677 (Closed): Add more details to error "Name or service not known (SocketError)"
Applied in changeset commit:git|36f2a8e807a44dc3761e023498887f92a12e7735.
----------
[Feature #13677] Add host to addrinfo resolution errors
hostname is added as a suffix to getaddrinfo error messages. for
example, a "name or service n...
Anonymous
12:33 PM Ruby Revision 36f2a8e8 (git): [Feature #13677] Add host to addrinfo resolution errors
hostname is added as a suffix to getaddrinfo error messages. for
example, a "name or service not known" error message becomes "name or
service not known for `invalidthost.com`.
Tiago Cardoso
11:39 AM Ruby Revision bb12f054 (git): [ruby/prism] Initialize `filepath` option to the empty string
Same as `current_string`, set it to be empty.
Similarly, when populating user-provided options, we need to check the lengh, same as for `encoding`.
Closes https://github.com/ruby/prism/issues/4249
https://github.com/ruby/prism/commit/c...
Earlopain (Earlopain _)
09:45 AM Ruby Revision 9e8bf735 (git): [ruby/mmtk] Resize objects to optimal size when moving
https://github.com/ruby/mmtk/commit/6d83b67d9a peterzhu2118 (Peter Zhu)
09:35 AM Ruby Bug #22430 (Open): regex counted group with a zero-width iteration misses a match
repro:
```ruby
/\A(?:a|^){2}\z/.match?("a") # true
/\A(?:a|^){2,3}\z/.match?("a") # false
/\A(?:\B|a){3}\z/.match?("aa") # false
/\A(?:^a*){2,3}\z/.match?("a") # false
```
Perl and Python return true for all four. Possib...
robertmorelli (Robert Morelli)
09:33 AM Ruby Bug #22429 (Open): regex empty capture group in a counted loop prevents a match
repro:
```ruby
/\A(?:(){1,2}?a)+\z/.match?("aa") # false
/\A(?:(?:){1,2}?a)+\z/.match?("aa") # true
/\A(?:(){1,2}a)+\z/.match?("aa") # true
```
An empty capture `()` behaves differently from `(?:)`. Perl, Python and Onig...
robertmorelli (Robert Morelli)
09:10 AM Ruby Revision a125858d (git): [ruby/digest] Limit the hexencode and bubblebabble results by RB_LEN_MAX
The result is a String, whose length can exceed LONG_MAX on mswin.
https://github.com/ruby/digest/commit/de4c1f26d7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
08:55 AM Ruby Revision 26e67c38 (git): Use the default timeout in test_super_in_refined_prepended_module_method_in_thread
The 1 second timeout expired on the Windows runners, although the child had finished all its assertions without an error. Use the default like the other tests in this file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
08:22 AM Ruby Revision 8382f95c (git): Prevent double free for too big repetition quantifiers (#13332)
Prevent double free for too big repetition quantifiers
The previous implementation calls `free(node)` twice (on parsing and compiling a
regexp) when it has an error, so it leads to a double-free issue. This
commit enforces `free(node)` ...
make_now_just (Hiroya Fujinami)
08:22 AM Ruby Bug #22428 (Open): Fiber scheduler: rb_nogvl returns as if the function ran when an offloaded operation is cancelled before execution
## Description
When a fiber scheduler cancels an offloaded blocking operation before a worker starts it, `rb_nogvl` returns normally even though the function never ran. It returns the zero-initialized result, so the caller cannot dist...
watson1978 (Shizuo Fujita)
08:21 AM Ruby Revision 2d1859ff (git): Reject a compiled program too big for its offset type
Concatenated large repeats reach a program past INT_MAX from a few hundred
kilobytes of source, and the offsets emitted into it wrap. Cap the size
while the program is emitted, which does not depend on the length pass that
overflows alo...
hsbt (Hiroshi SHIBATA)
08:21 AM Ruby Revision f8005098 (git): Avoid overflow in the quantifier expansion size check
Nested bounded repeats let the int product tlen * qn->lower overflow, so
the check that keeps the compiler from unrolling a large repeat could pass
for an enormous one, hanging the compile or emitting wrapped jump offsets.
Compare agains...
hsbt (Hiroshi SHIBATA)
08:15 AM Ruby Revision 0e01c2a8 (git): [ruby/json] More hardening against adversarial `encode` methods
https://github.com/ruby/json/commit/429c109458 byroot (Jean Boussier)
08:11 AM Ruby Revision 78a31f67 (git): [ruby/json] Index the generated JSON array by rb_len_t
An int index overflows on an Array longer than INT_MAX, which LP64 and now mswin can hold.
https://github.com/ruby/json/commit/8df32ab074
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:31 AM Ruby Revision 3edde2d2 (git): Size the CGI.escapeHTML overflow test by rb_len_t
The test assumed the length is narrower than size_t wherever unsigned long is, which stops holding once rb_len_t widens on mswin. It keeps running on mingw.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <norep...
hsbt (Hiroshi SHIBATA)
07:31 AM Ruby Revision 08a554ec (git): Accept the long long conversion error in the IO::Buffer.string spec
The size is converted to rb_len_t, and the message names long long instead of long once rb_len_t widens on mswin.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:31 AM Ruby Revision 29c5e0bc (git): Check the Array#product size against the rb_len_t range
MUL_OVERFLOW_LONG_P falls back to LONG_MIN and LONG_MAX without the overflow builtin, so once rb_len_t widens on mswin it would reject a product of 2**31 or more that the result array can hold.
https://bugs.ruby-lang.org/issues/22400
C...
hsbt (Hiroshi SHIBATA)
07:31 AM Ruby Revision 3d73c09f (git): Keep the branch target count of the coverage cache as rb_len_t
LONG2FIX and FIX2LONG would narrow it to long once rb_len_t widens on mswin, where Fixnum is also only 31 bits.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:15 AM Ruby Revision dbd87dcc (git): [ruby/json] Sort RFC 8785 keys after as_json conversion
https://github.com/ruby/json/commit/88b358d8b2 ydah (Yudai Takada)
07:05 AM Ruby Revision 7c8178e8 (git): [ruby/rubygems] Listen only on loopback in the WebAuthn listener test
The test clients all connect to localhost, so listening on every interface only brings up the Windows Defender Firewall prompt.
https://github.com/ruby/rubygems/commit/678d42330e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:05 AM Ruby Revision 26d91d5f (git): [ruby/rubygems] Listen only on loopback in the local SSL test server
TCPServer.new(0) binds every interface, so Windows Defender Firewall asks for permission for each ruby.exe that runs these tests. Bind to localhost, which the clients connect to and the test certificate names. 127.0.0.1 would add about t... hsbt (Hiroshi SHIBATA)
07:02 AM Ruby Revision 408989c6 (git): shield frozen tests in test_rubyoptions.rb from externally defined RUBYOPT
Ryan Davis
06:56 AM Ruby Feature #12831: /\X/ (extended grapheme cluster) can't pass unicode.org's GraphemeBreakTest
Thanks to everyone who investigated and fixed this grapheme segmentation issue.
One related detail worth highlighting is that correct grapheme segmentation doesn't automatically guarantee Unicode-equivalent string comparisons.
For ...
Mrlaura (QUANG NGUYEN)
06:20 AM Ruby Bug #22326: heap buffer overflow in array.values_at()
ruby_3_4 commit:a1c96b6b0fb3755fe14776e8a23d81088025a788 merged revision(s) commit:3f6143715aa934b558f0b97462b42793c845e4d7. nagachika (Tomoyuki Chikanaga)
06:20 AM Ruby Bug #22423: String#initialize(encoding:) stores an inflated capacity and writes past the malloc'd buffer on append (rb_str_init termlen double-adjust)
ruby_3_4 commit:f5cef120e9bc447b023bbdc814194ee572232279 merged revision(s) commit:2d08b5f42f2cbed4a4e6ecf8d62987a4f21f98c1. nagachika (Tomoyuki Chikanaga)
05:59 AM Ruby Revision 3aa202a7 (git): Bump the github-actions group across 1 directory with 7 updates
Bumps the github-actions group with 7 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.327.0` | `1.328.0` |
| [actions/upload-artifact](https://github.c...
dependabot[bot]
05:22 AM Ruby Revision f5cef120 (git): merge revision(s) 2d08b5f42f2cbed4a4e6ecf8d62987a4f21f98c1: [Backport #22423]
[PATCH] [Bug #22423] Preserve encoding with `String` capacity nagachika (Tomoyuki Chikanaga)
05:20 AM Ruby Revision a1c96b6b (git): merge revision(s) 3f6143715aa934b558f0b97462b42793c845e4d7: [Backport #22326]
[PATCH] Fix buffer overflow in Array#values_at
Array#values_at can execute arbitrary code during execution which may
modify the source array. This can cause a buffer overflow if the new length
of the array has de...
nagachika (Tomoyuki Chikanaga)
05:17 AM Ruby Bug #22391: Fix propagation of `errno` in `rb_io_maybe_wait`.
ruby_3_4 commit:eb6033eb5888582319cbbf4d2115fb3df1bd0119 merged revision(s) commit:c4f93eb297c5723673d961db8eee390cbcdf5069. nagachika (Tomoyuki Chikanaga)
05:16 AM Ruby Bug #22388: Use-after-free when an Enumerable retains its `each` block
ruby_3_4 commit:357795cca8084e0c8da9f24bec9aac268644d48a, commit:f7e692b6cd76092f42361dab0bed77a3fef3955f merged revision(s) commit:9267f6fba084710cff11b660e8758aec29886682, commit:3ea4bc3f79a913e03ee1b1ea3e21572ee8036095, commit:badce4d... nagachika (Tomoyuki Chikanaga)
04:52 AM Ruby Revision 357795cc (git): merge revision(s) 9267f6fba084710cff11b660e8758aec29886682, 3ea4bc3f79a913e03ee1b1ea3e21572ee8036095, badce4d07961e8c9c6ac68f15ae7b01ba1985421: [Backport #22388]
[PATCH] [Bug #22388] Fix use-after-free in `Enumerator::Lazy#flat_map`
[PATCH] [Bug #22388] Fix use-after-free in `Set#&`
[PATCH] Add a more defensive GC guard
nagachika (Tomoyuki Chikanaga)
04:34 AM Ruby Revision f7e692b6 (git): merge revision(s) c861619e891632aeeb42907b17003dbc9fbf5f2f, 3ac822c7e1d1983711710b3d8549b8e9898df944: [Backport #22388]
[PATCH] [Bug #22388] Fix use-after-free in some `Enumerable` methods
[PATCH] [Bug #22388] Fix use-after-free in `Enumerable#sum`
nagachika (Tomoyuki Chikanaga)
04:32 AM Ruby Revision eb6033eb (git): merge revision(s) c4f93eb297c5723673d961db8eee390cbcdf5069: [Backport #22391]
[PATCH] io: preserve errno across `rb_io_wait()` call. (#19121)
[Bug #22391]
nagachika (Tomoyuki Chikanaga)
04:25 AM Ruby Bug #22387: str_shared_replace incorrectly recalculates termlen
Merged into ruby_3_4 at https://github.com/ruby/ruby/commit/cc3e2b96872f7a91561c48ed814b5645a8d53030.
BTW the corresponding commit hash on master branch is `323c1df196cd3ba12274757ff1739ca79b02e685`.
nagachika (Tomoyuki Chikanaga)
04:24 AM Ruby Revision cc3e2b96 (git): [Backport 3.4] [Bug #22387] Fix termlen in str_shared_replace
The buffer is copied over based on the new string's termlen
so we can just set the new encoding raw
instead of recalculating based on the old encoding's termlen.
Randy Stauner
03:45 AM Ruby Revision 9044c9ef (git): mswin: Replace the DLL links in prepare-vcpkg
The zlib port now installs z.dll instead of zlib1.dll, and the link to the old name stays in the build directory pointing at nothing. mklink also refuses names that already exist, so prepare-vcpkg failed when run again after updating vcp... hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision 7c4b300b (git): Bump the vcpkg builtin-baseline
This updates openssl from 3.6.3 to 3.6.5#1 and the vcpkg-make host port from 2026-07-09 to 2026-07-09#1. gmp, libffi, libyaml and zlib stay at the same versions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:15 AM Ruby Revision 7910db23 (git): Disable PIE on Haiku by default
Every `have_func` check against `libruby-static.a` failed on Haiku, because its linker builds the conftest program as a shared object and rejects the TLS relocations in `-fPIE` objects. Without `-fPIE` the compiler generates PIC there, w... hsbt (Hiroshi SHIBATA)
02:15 AM Ruby Revision 7cceceae (git): Fix build where `struct dirent` has no `d_type`
`Dir.scan` broke the build on Haiku. Leave the type unknown there and let the `lstat` fallback below fill it in.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:15 AM Ruby Revision 549b702e (git): Add Haiku build workflow
Haiku has its own branches in configure.ac, thread_pthread.c, signal.c, io.c and ext/socket, but no CI builds them. Check only that it builds, as the Cygwin workflow does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:35 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
Nested slices, which can be obtained by `buffer.slice.slice` now, have been introduced in commit:5f5d655 / [GH #19091](https://github.com/ruby/ruby/pull/19091), and they have a significant performance drawback as they require an O(depth)... hanazuki (Kasumi Hanazuki)
 

Also available in: Atom