Project

General

Profile

Activity

From 10/01/2026 to 10/07/2026

Today

08:22 PM Ruby Feature #22379: Remove prism mismatch warning from `#syntax_tree`
How does this work for the Prism C extension?
When having both `Ruby::Prism` and `Prism`, there are 2 "Prism C extensions" loaded and both define some C globals like `Init_prism` (EDIT: I originally wrote `rb_cPrism` but that's actually ...
Eregon (Benoit Daloze)
03:25 PM Ruby Feature #22379: Remove prism mismatch warning from `#syntax_tree`
Thanks, @kddnewton! Trimming the API sounds reasonable as a follow-up. It can be done on the sync side (by excluding files), so ruby/prism would not need to change.
One thing to note is that syntax_suggest (and possibly irb) use `Pris...
mame (Yusuke Endoh)
02:24 PM Ruby Feature #22379: Remove prism mismatch warning from `#syntax_tree`
@mame that looks really good. I think I may have overestimated how difficult it would be, but this seems like a really good solution.
A future thing may be to trim down the Ruby::Prism API, since that now covers so much surface area. ...
kddnewton (Kevin Newton)
12:32 PM Ruby Feature #22379: Remove prism mismatch warning from `#syntax_tree`
Thank you for the proposal, @matz! I believe this is the right way to go. It makes the story very simple, and it is almost the same as what I proposed as `Ruby::Node` in #21795.
To check the feasibility, I made a PoC patch series that...
mame (Yusuke Endoh)
11:02 AM Ruby Feature #22379: Remove prism mismatch warning from `#syntax_tree`
Currently it loudly returns the correct node and I would simply always ignore this warning because it is just noise. Should I ever hit the case where it is actually different I would never know.
On `Ruby::Prism`, I believe that approa...
Earlopain (Earlopain _)
08:20 AM Ruby Feature #22379: Remove prism mismatch warning from `#syntax_tree`
I don't want to simply remove the warning. Silently returning a node that does not correspond to the running code is dangerous, especially when the tree is used to generate something and not just to show a message.
How about separatin...
matz (Yukihiro Matsumoto)
07:53 PM Ruby Bug #22414 (Open): YJIT: arm64 panic "should not fail when writing to a fresh code page" when the code region fills at a page boundary — please backport 5a7089fc03fb to 3.4
On aarch64-linux, YJIT aborts the whole process when the code region runs out of space at a page boundary.
This was fixed on master by ruby/ruby@5a7089fc03fb ("YJIT: A64: Remove assert that trips when OOM at page boundary", GitHub PR ...
hank (Hank Gay)
06:15 PM Ruby Bug #22413 (Open): IO#wait_readable does not distinguish nil from an omitted timeout
I was expecting `io.wait_readable(nil)` to wait indefinitely, but it is currently treated the same as omitting the argumen, so the value set by `IO#timeout=` is used:
```ruby
IO.pipe{|r,w|r.timeout=1; r.wait_readable} # returns after...
rhenium (Kazuki Yamaguchi)
05:29 PM Ruby Revision 6203c21e (git): [ruby/openssl] bn: treat any truthy odd argument to BN.rand as true
OpenSSL::BN.rand compared the optional odd argument with Qtrue, so a
truthy value other than true, such as 1, was ignored and the result
could be even. Use RTEST() like other optional flags.
Fixes https://github.com/ruby/openssl/pull/11...
Animesh Kumar
05:25 PM Ruby Bug #22305: Ruby::Box: statically linked prism loads in only one box
I agree with @mame here, I think option 1 is best if we can get it to work, which it seems like after #22379 it will be. kddnewton (Kevin Newton)
05:22 PM Ruby Bug #22305: Ruby::Box: statically linked prism loads in only one box
I'm also fine with option 1.
My concern about option 1 was that `Proc#syntax_tree` loads the prism Ruby API via `require "prism"` and relies on it being the same prism that is built into the interpreter, which a per-box prism gem cann...
mame (Yusuke Endoh)
09:40 AM Ruby Bug #22305: Ruby::Box: statically linked prism loads in only one box
I also prefer option 1. That makes box possible to load different Prism versions in boxes (if users want). tagomoris (Satoshi Tagomori)
07:27 AM Ruby Bug #22305: Ruby::Box: statically linked prism loads in only one box
I prefer option 1.
In Box, things defined by the interpreter are shared, and things loaded by `require` belong to each box. Option 1 keeps that model as it is, and it is also what #19900 originally described. Option 2 makes every proc...
matz (Yukihiro Matsumoto)
05:18 PM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
My suggestion would be `rb_len_t`, or possibly index or count instead of len.
I don't think this is really comparable to `rb_off_t` ([Bug #5317]), which appears to have been introduced as an equivalent of POSIX-like `off_t` on Windows...
rhenium (Kazuki Yamaguchi)
08:31 AM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
Thank you both. I'd still like to keep `rb_long_t`, since it replaces `long` one for one, like `rb_off_t` and `OFFT2NUM`. `rb_size_t` would sit next to `SIZET2NUM` for `size_t`, which seems even easier to confuse. hsbt (Hiroshi SHIBATA)
07:49 AM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
> Were completely different names considered, such as len?
Also the natural type to go for would be `size_t`, so `rb_size_t` would make more sense than `rb_long_t`? But then there's the sign difference...
byroot (Jean Boussier)
07:32 AM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
I think this is a good step, but the conversion macro `NUM2LONG(val)` vs `NUM2LONGT(val)` seems incredibly confusing.
Were completely different names considered, such as `len`?
rhenium (Kazuki Yamaguchi)
07:13 AM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
One more thing: as far as mswin is concerned, please feel free to go ahead as you see fit.
Matz.
matz (Yukihiro Matsumoto)
06:49 AM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
I agree with the direction. A 2GiB limit on a 64-bit platform should go away, and the name `rb_long_t` is fine with me since it follows `rb_off_t`.
Step 1 can go into 4.1. For step 2, I am worried about switching the default in 4.1 wi...
matz (Yukihiro Matsumoto)
05:04 PM Ruby Revision e7e9fe64 (git): Harmonize ctime doc (#19233)
* [DOC] Harmonize ctime methods
* [DOC] Harmonize ctime methods
* Update file.c
Co-authored-by: Peter Zhu <peter@peterzhu.ca>
---------
Co-authored-by: Peter Zhu <peter@peterzhu.ca>
burdettelamar (Burdette Lamar)
03:42 PM Ruby Revision 65e06f36 (git): [ruby/prism] Compare the Pattern DSL prefix with the module name
The pattern compiler accepted `Prism::CallNode` by comparing the parent
constant with the literal string "Prism". Compare it with `Prism.name`
instead, and also accept a constant path as the parent, so that the
same code works when the ...
mame (Yusuke Endoh)
02:36 PM Ruby Revision 9d46512a (git): [ruby/json] Fix RFC 8785 number formatter spelling
https://github.com/ruby/json/commit/3e3807c82a ydah (Yudai Takada)
02:36 PM Ruby Revision 432e0dc5 (git): [ruby/json] Sort RFC 8785 object properties by their keys
https://github.com/ruby/json/commit/808577ae1d ydah (Yudai Takada)
02:33 PM Ruby Bug #22410: `IO#external_encoding` / `IO#internal_encoding` segfault on an uninitialized IO
Thank you for the bug report. I have a fix here: https://github.com/ruby/ruby/pull/19252 peterzhu2118 (Peter Zhu)
11:34 AM Ruby Bug #22410 (Open): `IO#external_encoding` / `IO#internal_encoding` segfault on an uninitialized IO
The following code:
```ruby
IO.allocate.external_encoding
```
(also `IO.allocate.internal_encoding`, or any `IO`/`File` subclass whose `initialize` does not call `super`, e.g.
`class A < IO; def initialize(*) = nil; end; A.new.e...
0599jiangyc@gmail.com (Yuancheng Jiang)
02:23 PM Ruby Bug #22412: Assertion Failed: vm_ep_in_heap_p_:env->ep == ep
Thank you for the bug report. I have a fix here: https://github.com/ruby/ruby/pull/19251 peterzhu2118 (Peter Zhu)
11:36 AM Ruby Bug #22412 (Open): Assertion Failed: vm_ep_in_heap_p_:env->ep == ep
The following code:
```ruby
pr = proc {|a, b| }.curry.dup
pr.call(1)
```
(also `lambda {|a, b| }.curry.clone[1]`, or `define_method(:m, &proc {|a, b| }.curry); m(1)` which dups the proc internally)
Resulted in this output (RU...
0599jiangyc@gmail.com (Yuancheng Jiang)
02:19 PM Ruby Feature #22404: Make Data (and/or Struct, etc.) true "first-class citizens" and thank you!
Just to document for possible future reference, here is a case for why the current behavior might even be a feature rather than an issue and why something like
```ruby
class D = Data.define(:x, :y)
# ...
end
```
might *not* be de...
asoffa (Aaron Soffa)
08:38 AM Ruby Feature #22404 (Closed): Make Data (and/or Struct, etc.) true "first-class citizens" and thank you!
Thank you for the kind words.
This is the same proposal as #20993, and my opinion has not changed. It is too small an issue to add new syntax for. Please use one of the existing forms you listed.
Matz.
matz (Yukihiro Matsumoto)
02:02 PM Ruby Bug #22411 (Closed): Assertion Failed: class_call_alloc_func:rb_obj_class(obj) == rb_class_real(klass)
Applied in changeset commit:git|05fc8ad175b68c8521015df1905f46be5ef1f967.
----------
Fix incorrect class of File::Stat subclass instance
[Bug #22411]
rb_stat_s_alloc should use the class of the object and not assume it is
File::Stat.
...
peterzhu2118 (Peter Zhu)
12:45 PM Ruby Bug #22411: Assertion Failed: class_call_alloc_func:rb_obj_class(obj) == rb_class_real(klass)
Thank you for the bug report. I have a fix here: https://github.com/ruby/ruby/pull/19249 peterzhu2118 (Peter Zhu)
11:35 AM Ruby Bug #22411 (Closed): Assertion Failed: class_call_alloc_func:rb_obj_class(obj) == rb_class_real(klass)
The following code:
```ruby
class C < File::Stat; end
C.allocate
```
Resulted in this output (RUBY_DEBUG build):
```
../object.c:2310: Assertion Failed: class_call_alloc_func:rb_obj_class(obj) == rb_class_real(klass)
ruby 4...
0599jiangyc@gmail.com (Yuancheng Jiang)
02:01 PM Ruby Revision 05fc8ad1 (git): Fix incorrect class of File::Stat subclass instance
[Bug #22411]
rb_stat_s_alloc should use the class of the object and not assume it is
File::Stat.
The following script crashes when assertions are enabled:
class C < File::Stat; end
C.allocate
With the following error:
ob...
peterzhu2118 (Peter Zhu)
01:30 PM Ruby Bug #22409: ASan UAF and Assertion Failed: gc_validate_pc:CFP_PC(cfp) >= iseq_encoded: PC not set when allocating, breaking tracing
Thank you for the bug report. I have a fix here: https://github.com/ruby/ruby/pull/19250 peterzhu2118 (Peter Zhu)
11:32 AM Ruby Bug #22409 (Open): ASan UAF and Assertion Failed: gc_validate_pc:CFP_PC(cfp) >= iseq_encoded: PC not set when allocating, breaking tracing
The following code:
```ruby
pr = proc {|a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=1,i=1,j=1| pr.call }
40.times do |k|
eval((0...k).map { "v#{_1}=0;" }.join + "begin; pr.call; rescue SystemStackError => e; e.backtrace; end")
end
p :survive...
0599jiangyc@gmail.com (Yuancheng Jiang)
01:03 PM Ruby Revision 1ebc88b5 (git): [ruby/json] Preserve float precision in RFC 8785 number formatting
https://github.com/ruby/json/commit/193df55852 ydah (Yudai Takada)
10:21 AM Ruby Feature #22392: Allow refinements to define && and ||
```ruby
class BasicObject
def && = self ? yield : self
def || = self ? self : yield
end
1 && 2 #=> 2
nil && 2 #=> nil
false && 2 #=> false
1 || 2 #=> 1
nil || 2 #=> 2
false || 2 #=> 2
```
Very cool...
mame (Yusuke Endoh)
08:15 AM Ruby Feature #22392 (Rejected): Allow refinements to define && and ||
Thank you for the discussion at the developer meeting.
At the meeting, mame suggested an alternative: `lhs && rhs` as `lhs.&&() { rhs }`, which I had rejected myself before proposing this.
Anyway, I understand that it is difficult to...
shugo (Shugo Maeda)
07:17 AM Ruby Feature #22392: Allow refinements to define && and ||
I do sympathize with examples like `User.where { name == "x" && age > 20 }`, but I think it is difficult to accept this as things stand.
`&&` and `||` are control structures, and with this change the reader can no longer tell from the...
matz (Yukihiro Matsumoto)
09:01 AM Ruby Feature #22312: Add parent directory operations and recursive file removal
I like the direction. `mkdir -p` and `rm -r` are common enough to be in core, and doing the recursive removal with `openat` and `unlinkat` is a real improvement over what FileUtils can do.
* `Dir.mkdir(path, parents: true)` and `perm:...
matz (Yukihiro Matsumoto)
08:54 AM Ruby Bug #22328: Should IO#wait_priority be deprecated and then removed?
You are right, it was left by mistake. Let's deprecate `IO#wait_priority` in 4.1 with a warning and remove it in a later release. `io.wait(IO::PRIORITY, timeout)` does the same thing.
Matz.
matz (Yukihiro Matsumoto)
08:52 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
About `freeze`: I still think a frozen buffer should refuse modification through that object, including its bytes. That is what `freeze` means for other core classes. Even a frozen `File` raises FrozenError on `write`, though its data li... matz (Yukihiro Matsumoto)
07:56 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
I don't have any particular objections to removing the warning, but `IO::Buffer` is still being actively developed even after this ticket was filed.
Isn't it better to keep the "experimental" statement yet?
nobu (Nobuyoshi Nakada)
07:55 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
The security team has received HackerOne reports about `IO::Buffer`. Each one was handled as a regular bug because `IO::Buffer` is experimental. Once it is no longer experimental, such reports have to be assessed as potential vulnerabili... hsbt (Hiroshi SHIBATA)
08:43 AM Ruby Feature #11817 (Closed): map.parallel
Thank you for bringing a concrete use case.
For I/O-bound work like yours, this already works today:
```ruby
results = items.map { |item| Thread.new { process(item) } }.map(&:value)
```
Beyond that, a built-in method has to de...
matz (Yukihiro Matsumoto)
07:57 AM Ruby Feature #22395 (Closed): RubyVM::InstructionSequence.load_from_binary: to optionally accept `file` and `path` arguments
Applied in changeset commit:git|9ce0df671980d669cbab8afc48124c7453897533.
----------
Make ISeq binaries portable
* Make `__FILE__` a frozen core method that return the iseq path.
* Make `load_from_binary` accept `file, path` like compi...
byroot (Jean Boussier)
06:40 AM Ruby Feature #22395: RubyVM::InstructionSequence.load_from_binary: to optionally accept `file` and `path` arguments
Matz approved this proposal.
No objection in dev-meeting.
ko1 (Koichi Sasada)
07:57 AM Ruby Feature #17593 (Closed): load_iseq_eval should override the ISeq path
Applied in changeset commit:git|9ce0df671980d669cbab8afc48124c7453897533.
----------
Make ISeq binaries portable
* Make `__FILE__` a frozen core method that return the iseq path.
* Make `load_from_binary` accept `file, path` like compi...
byroot (Jean Boussier)
07:57 AM Ruby Revision 9ce0df67 (git): Make ISeq binaries portable
* Make `__FILE__` a frozen core method that return the iseq path.
* Make `load_from_binary` accept `file, path` like compile.
[Feature #17593]
[Feature #22395]
byroot (Jean Boussier)
07:32 AM Ruby Feature #22376: Undefine the allocator for Class
Accepted. An uninitialized class is of no use, so there is no reason to allow `Class.allocate`.
I leave the details to you, including whether it should raise NoMethodError like `Module.allocate` or TypeError like `Proc.allocate`.
M...
matz (Yukihiro Matsumoto)
07:27 AM Ruby Feature #18439 (Closed): YJIT: Support Microsoft x86 calling convention
https://github.com/ruby/ruby/pull/19114 has been merged. I will start by testing YJIT on the mswin platform, using it in my daily work. For mingw, I will consider support in Ruby 4.2 or later, after confirming that no problems occur. hsbt (Hiroshi SHIBATA)
07:08 AM Ruby Feature #22134: Faster rb_scan_args() for keyword args (optimization)
No objection. This is a C API optimization with no visible change from Ruby, so I leave the details, including the names, to @nobu.
Matz.
matz (Yukihiro Matsumoto)
07:05 AM Ruby Feature #22300: `Ractor.check_isolation`: report Ractor isolation violations as warnings instead of raising
I like the idea. Ractor needs a way to find all violations in one run and to keep a codebase Ractor-safe in CI, and this gives both.
But I don't like the name. This method does not check anything. It runs the block in a non-main Racto...
matz (Yukihiro Matsumoto)
06:52 AM Ruby Feature #22309: Allow super in a module method to work if method was called by refinement method super
One addition: since the cache is a Hash, refinements and their iclasses would be retained even after they are no longer needed. Making both the key and the value weak would avoid this; maybe `ObjectSpace::WeakMap` in weakmap.c could be u... shugo (Shugo Maeda)
04:27 AM Ruby Feature #22309: Allow super in a module method to work if method was called by refinement method super
Accepted. This removes a limitation we knowingly took in #12534, and the resulting `super` chain is consistent with class refinements. I leave the implementation, including the memory concern in note-6, to @shugo and @jeremyevans0.
Matz.
matz (Yukihiro Matsumoto)
03:52 AM Ruby Feature #22309: Allow super in a module method to work if method was called by refinement method super
I have approved https://github.com/ruby/ruby/pull/18910, but there is one thing I am concerned about.
The cache entries are keyed by the refinement iclass of each cref and never removed, so each `using` scope or `Proc#refined` copy that...
shugo (Shugo Maeda)
06:46 AM Ruby Feature #22402 (Assigned): Drop support for Darwin on PowerPC
At the DevMeeting on October 7th, nobody objected to this removal. I will merge https://github.com/ruby/ruby/pull/19183. hsbt (Hiroshi SHIBATA)
06:09 AM Ruby Revision 8197d2c5 (git): [ruby/rubygems] Run the autoload regression check from a script file
JRuby on Windows drops the quotes inside the `-e` argument, so the child raised `NameError` and printed nothing instead of the count.
https://github.com/ruby/rubygems/commit/38b0282500
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
06:09 AM Ruby Revision 4095fb74 (git): [ruby/rubygems] Autoload the API set gem parser by feature name
This is the last autoload left holding an absolute path. Nothing loads a second copy of it today, but it carries the same hazard as the ones in `rubygems.rb`.
https://github.com/ruby/rubygems/commit/17828beae9
Co-Authored-By: Claude Op...
hsbt (Hiroshi SHIBATA)
06:09 AM Ruby Revision 50a3ace1 (git): [ruby/rubygems] Autoload RubyGems internals by feature name
An absolute path skips the `$LOADED_FEATURES` check, so a second RubyGems tree on the load path gets loaded on top of the one already loading and redefines every method in it. A checkout hits this through `exe/bundle`, which puts its `li... hsbt (Hiroshi SHIBATA)
05:06 AM Ruby Feature #22405: Run-Length Methods for String Bit Operations
Please see my comment in #22399#note-3. I'd like to consider the two proposals together.
Matz.
matz (Yukihiro Matsumoto)
05:04 AM Ruby Feature #22399: Iterator Methods for String Bit Operations
I looked at this together with #22405. Seven methods with 37 call forms is more than I want to add now, so let me step back.
As far as I can tell, the performance gain in both proposals comes from one thing: skipping bytes while searc...
matz (Yukihiro Matsumoto)
04:16 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
👋 @byroot @mame, here is the second version: https://github.com/ruby/ruby/pull/19242
> If a batch job does name resolution in parallel with Threads and something goes wrong with DNS, I think all the workers could leak.
🧵 In this ve...
dug (Doug E)
03:05 AM Ruby Revision 981b020a (git): [ruby/net-http] Don't use trailing spaces in test (https://github.com/ruby/net-http/pull/350)
ruby/ruby removes trailing spaces in here document:
https://github.com/ruby/ruby/commit/757d36142bd474c166639acade2988b901878ce6
https://github.com/ruby/net-http/commit/5c7596a433
Sutou Kouhei
01:00 AM Ruby Revision 8ddc747b (git): [DOC] Doc for File::Stat#gid
burdettelamar (Burdette Lamar)
12:59 AM Ruby Revision 01a0ccfe (git): [DOC] Harmonize grpowned? methods
burdettelamar (Burdette Lamar)
12:56 AM Ruby Revision 119e1763 (git): [DOC] Harmonize ftype methods
burdettelamar (Burdette Lamar)
12:54 AM Ruby Revision c359fea0 (git): [DOC] Harmonize file? methods
burdettelamar (Burdette Lamar)
12:48 AM Ruby Revision e24c2eef (git): [DOC] Harmonize directory? methods
burdettelamar (Burdette Lamar)
12:34 AM Ruby Revision b0b0969a (git): [DOC] Doc for File::Stat#dev*
burdettelamar (Burdette Lamar)

10/06/2026

11:37 PM Ruby Revision 757d3614 (git): * remove trailing spaces. [ci skip]
git[bot]
11:37 PM Ruby Revision b4565547 (git): [ruby/net-http] Treat a whitespace-only header line as obs-fold
(https://github.com/ruby/net-http/pull/348)
The current implementation has a problem with the following case:
```ruby
print("HTTP/1.1 200 OK\r\n")
print("Content-Length: 5\r\n")
print(" \t\r\n")
print("X-After: value\r\n")
print("\r\n"...
Sutou Kouhei
11:11 PM Ruby Revision 87e9ab04 (git): Fix loss of initial value in Array#sum
When the not_exact case is hit, the initial value could be lost if it is
a float. For example, the following code incorrectly outputs 1.5 but should
output 11.5:
puts [1.5].sum(10.0)
peterzhu2118 (Peter Zhu)
11:00 PM Ruby Bug #19172: `ruby_thread_has_gvl_p` is innacurate sometimes -- document or change?
Eregon (Benoit Daloze) wrote in #note-4:
> So now we have a public C API with known incorrect semantics when used in a signal handler, what should we do then?
This public API is not documented as async-signal-safe, so there is no issue ...
jhawthorn (John Hawthorn)
11:00 PM Ruby Revision d0e8537b (git): Add YJIT on mswin to NEWS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
10:31 PM Ruby Revision f0439cdf (git): Remove VM lock from Ractor.make_shareable()
Ractor.make_shareable could previously take the VM lock and then call
rb_funcall(id_freeze), which is not correct to do. Create a new
rb_objspace_reachable_objects_from_local() function that works the same as the
non-local version except...
Luke Gruber
09:12 PM Ruby Revision e9cd5b37 (git): Stop using the macos-14 runner image
GitHub retires the macOS 14 image on November 2, 2026. Jobs that ran only there move to macos-15, the oldest remaining image, and the matrices that also cover newer images drop it.
https://github.blog/changelog/2026-10-01-github-actions...
hsbt (Hiroshi SHIBATA)
09:12 PM Ruby Revision f297fc4b (git): Use ubuntu-latest for macOS result jobs
The result jobs in macOS workflows only check if other jobs failed
(just runs `exit 1`). They don't need macOS runners. Using
ubuntu-latest instead frees up macOS runner slots and starts faster
due to shorter queue times.
st0012 (Stan Lo)
09:11 PM Ruby Revision e8964f3a (git): YJIT: Say where the Windows unwind info does not hold
The single entry is right at every call, but not within the instructions that set up and tear down the frame.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 2f428c37 (git): YJIT: Take the base and offset in c_long_mem
Nothing in it was specific to lengths, and building the C long memory operand inside saves each caller from spelling out its width.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 45c20a09 (git): YJIT: Add Assembler#load_mem like ZJIT's
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 03b90e67 (git): YJIT: Check Fixnum overflow with a single branch on LLP64
Fixnum operands fit in 32 bits where long is 32-bit, so the 64-bit overflow check never fires there and the range check alone decides. Code generated where long is 64-bit is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic....
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 661785e0 (git): YJIT: Make the LLP64 helpers Assembler methods
They emit instructions, which a call like asm.cmp_fixnum_fits_long(val) makes clearer than a free function taking asm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 6b770b5d (git): Regenerate the JIT bindings for the helpers declared in internal/jit.h
bindgen now finds rb_jit_get_page_size and rb_jit_reserve_addr_space in internal/jit.h, which moves them in both generated files.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 4d7a2ef7 (git): CI: Build and test YJIT on mswin
The Win64 code paths and LLP64 guards in YJIT are compiled only for mswin, so no other YJIT job notices a change that breaks them. --yjit-call-threshold=1 makes the btest cases for those guards run compiled.
Co-Authored-By: Claude Opus ...
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision bfa11c72 (git): Document YJIT on mswin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision d5d28336 (git): YJIT: Do not suggest ./configure --enable-yjit=dev on mswin
The disasm options and RubyVM::YJIT.disasm need a dev build, which win32/configure.bat cannot make. The warning for builds without YJIT also mentions --enable-yjit, since installing rustc alone does not enable it on mswin.
Co-Authored-B...
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 5b0dc214 (git): YJIT: Ignore the perf map of --yjit-perf on Windows
/tmp/perf-{pid}.map resolves to a usually missing directory on the current drive, so the first compilation panicked, and Linux perf could not read the map there anyway. --yjit-perf=fp is unaffected.
Co-Authored-By: Claude Opus 5.5 <nore...
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 1acb23e4 (git): Reject --enable-yjit on mingw in configure
jit.c now picks its Windows code paths by _WIN32 alone, so an explicit --enable-yjit on mingw no longer stops at the #error there and would build a combination nobody tests. YJIT on Windows is supported only through the mswin build.
Co-...
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision ae51b796 (git): mswin: Build YJIT with --enable-yjit
rustc builds yjit.lib, which is linked into miniruby and the DLL directly. Archiving it into the static library would make mkexports.rb export every Rust symbol under a mangled name that does not exist, so a YJIT build does not install t... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 3c75df83 (git): YJIT: Detect a console with rb_w32_isatty on mswin
UCRT's isatty returns 0x40 for a character device, so the comparison with 1 never held and --yjit-dump-disasm was never colored. Checking for non-zero instead would also color output sent to NUL, which is a character device too.
Co-Auth...
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 3cf882a6 (git): YJIT: Register unwind info for the JIT region on Windows
RtlUnwindEx(), which longjmp() and C++ exceptions use, needs unwind info for every frame, so raising through JIT frames skipped __finally blocks and C++ destructors. Exception dispatch also could not walk through JIT frames to reach the ... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 1f71ad00 (git): Reserve the JIT region near the Ruby DLL on Windows
VirtualAlloc(NULL) placed the region more than 2 GiB away from the DLL, so every C call from YJIT code became an indirect call through a register. Probe below rb_jit_reserve_addr_space like the MAP_FIXED_NOREPLACE loop on Linux so that t... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 0701dfd2 (git): Manage JIT code memory with the Windows virtual memory API
Reserve the region with VirtualAlloc and commit pages when they become writable, in place of mmap and mprotect. Freed pages stay committed with their contents discarded, since rb_jit_mark_executable() covers the whole mapped region and V... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision a180ecc0 (git): YJIT: Use the Win64 calling convention on Windows
Generated code called C functions and Rust callbacks with the SysV convention. On Windows, pass the first four arguments in RCX, RDX, R8 and R9 and the rest on the stack above the 32-byte shadow space, and keep RSI and RDI out of the tem... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 94270ae8 (git): YJIT: Convert stats to Integer without assuming Fixnum
Stats and counters can exceed the Fixnum range, which is 31 bits on Windows, and failed the assertion in VALUE::fixnum_from_usize.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 29f3aa2f (git): YJIT: Guard Fixnum results to fit in long on LLP64
A Fixnum holds a C long, which is 32-bit on Windows, so an arithmetic result or a length that did not overflow 64 bits could still be out of the Fixnum range and make an unnormalized Fixnum. Side-exit there as each instruction does on a ... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision de92824d (git): YJIT: Fix C integer widths on LLP64
The bindings are generated on LP64, where ID and st_data_t are unsigned long and long is 64-bit. On Windows long is 32-bit and both are unsigned long long, so pin them to u64, cast long arguments with the platform width, and widen the RS... hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision e1fc7ca4 (git): Pass YJIT test stats through a file instead of fd 3
spawn cannot pass file descriptors other than 0 to 2 on Windows. A child that dies without writing the file, or leaves it empty, now surfaces with its exit status and stderr instead of an error from loading the stats.
Co-Authored-By: Cl...
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision f3b69922 (git): YJIT: Keep dump-disasm and log output files as File
std::os::unix::io::RawFd is not available on Windows. Leaking the opened File works everywhere and needs no fd round trip on each write.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:11 PM Ruby Revision 51b4af5d (git): YJIT: Type the output of load_sext as 64 bits
LoadSExt exists to widen a narrower operand, but load_sext typed its output with the operand width, so the result could not be mixed with 64-bit operands and the arm64 emitter passed a 32-bit destination to sxtw. The register allocator s... hsbt (Hiroshi SHIBATA)
08:34 PM Ruby Feature #22376: Undefine the allocator for Class
+1, this definitely helps avoid many subtle bugs and simplifies the logic significantly (in fact I already advocated for this in previous tickets). Eregon (Benoit Daloze)
04:39 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
> That leaves only workers whose caller gave up on them, after a timeout or an interrupt, to be joined later by the next lookup or by fork.
This is exactly the possible leak I'm worried about. If a batch job does name resolution in pa...
mame (Yusuke Endoh)
04:13 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
> If that sounds acceptable, I can put this version up as a second PR so the two can be compared.
Yes please do. I think your proposal is fine, but it's always easier to reason about it with the code.
byroot (Jean Boussier)
04:07 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
> I don't think we can join when one finishes. Only the worker itself knows when it has exited, and it cannot join itself.
The waiting caller can join it, though. When the result arrives, the worker is moments from exiting, so the thr...
dug (Doug E)
02:47 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
> whenever we start a new name resolution, or finish one
I don't think we can join when one finishes. Only the worker itself knows when it has exited, and it cannot join itself. So the last workers stay unjoined until the next resolut...
mame (Yusuke Endoh)
11:56 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
> it would be a problem if they were only joined when a fork happens.
In my mind we're regularly do non blocking join, e.g. whenever we start a new name resolution, or finish one. So it would be self cleaning.
byroot (Jean Boussier)
11:40 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
I'm worried that the join-list approach may leak pthreads. Is that okay?
To make the helper pthreads joinable, we have to stop detaching them. Then a helper's resources are not released until someone joins it.
What concerns me is a...
mame (Yusuke Endoh)
07:38 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
> rework the PR that way if you'd prefer it.
I personally prefer that option, as adding code that depends on things marked as deprecated scares me a bit. But if @mame feels strongly otherwise I'm ok with it.
byroot (Jean Boussier)
02:36 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
> I'm trying to figure out whether this is even public API, as in, will this break under us in a couple years.
The manpage marks the `_res` global [deprecated](https://man7.org/linux/man-pages/man3/resolver.3.html#SYNOPSIS). According...
dug (Doug E)
01:57 PM Ruby Revision 6b1add1e (git): Fix Array#sum when init is float but array contains non-float
If the initial value is a float but an element of the array is not a float,
then it could be lost and an error won't be raised. For example, the following
code should raise a TypeError but currently does not:
["hello"].sum(10.0)
peterzhu2118 (Peter Zhu)
01:01 PM Ruby Revision 9d534546 (git): [ruby/json] Report the attempted depth in generator nesting errors
https://github.com/ruby/json/commit/37a48ef6b8 ydah (Yudai Takada)
12:09 PM Ruby Revision a51a35c5 (git): [ruby/json] Reject non-ASCII BINARY strings during JSON generation
https://github.com/ruby/json/commit/8bab92d63b ydah (Yudai Takada)
10:57 AM Ruby Feature #22408 (Open): Use GNU make instead of nmake for mswin builds
The mswin build uses nmake, whose dialect is restrictive. It cannot run jobs in parallel, has no VPATH, and its substitution `$(VAR:a=b)` cannot contain macros. nmake 14.30 (VS 2022) added functions such as `$(subst)` that can, but we ca... hsbt (Hiroshi SHIBATA)
10:53 AM Ruby Revision 3504615b (git): [DOC] Doc for File::Stat#blksize
burdettelamar (Burdette Lamar)
10:48 AM Ruby Revision ebec1ec0 (git): [DOC] Harmonize blockdev? methods
burdettelamar (Burdette Lamar)
10:45 AM Ruby Revision 45e01710 (git): [DOC] Doc for File::Stat#blocks
burdettelamar (Burdette Lamar)
10:42 AM Ruby Revision 7032a3bd (git): [DOC] Harmonize chardev? methods
burdettelamar (Burdette Lamar)
10:29 AM Ruby Revision 7907b51b (git): [DOC] Harmonize birthtime methods
burdettelamar (Burdette Lamar)
09:35 AM Ruby Bug #22401 (Closed): addr2line.c does not build when crt_externs.h is absent (iOS SDK)
Applied in changeset commit:git|4f620ec5eeb9aa6724b06d74c523f8ef3ae13818.
----------
[Bug #22401] addr2line.c: fall back to missing/crt_externs.h when the header is absent
The public iOS SDK does not ship crt_externs.h. addr2line.c inc...
Anonymous
09:35 AM Ruby Revision 4f620ec5 (git): [Bug #22401] addr2line.c: fall back to missing/crt_externs.h when the header is absent
The public iOS SDK does not ship crt_externs.h. addr2line.c included it
unconditionally and failed to compile:
addr2line.c:84:11: fatal error: 'crt_externs.h' file not found
hash.c, eval_intern.h and missing/setproctitle.c already ...
Dominik
09:11 AM Ruby Bug #22390: ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
@mame I've already started looking into this with https://github.com/ruby/ruby/pull/19170 so I'll take this one from @peterzhu2118 eightbitraptor (Matt V-H)
08:57 AM Ruby Bug #22390: ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
I asked Claude to investigate this with the attached script. Comparing [d4406f0627c](https://github.com/ruby/ruby/commit/d4406f0627c78af31e61f9e07dda9151e109dbc4) with its parent confirms the change comes from that commit. On macOS with ... hsbt (Hiroshi SHIBATA)
08:00 AM Ruby Bug #22390 (Assigned): ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
@peterzhu2118 Could you take a look? mame (Yusuke Endoh)
08:23 AM Ruby Feature #11817: map.parallel
> Nearly 11 years after this issue was opened, has Ruby’s concurrency model evolved enough that something like this could now be reconsidered?
Would you expect the blocks to run in Threads, Fibers, or Ractors? A fixed or dynamic pool of...
rkh (Konstantin Haase)
08:19 AM Ruby Bug #22407 (Assigned): IO::Buffer#set_value does not call to_int for 128-bit values
mame (Yusuke Endoh)
08:09 AM Ruby Bug #22403 (Assigned): Ruby::Box: a class that gets a box-specific classext is never freed
mame (Yusuke Endoh)
08:06 AM Ruby Bug #22396 (Assigned): Using rb_postponed_job_trigger causes YJIT/ZJIT compiled methods side exits
mame (Yusuke Endoh)
07:51 AM Ruby Bug #22385 (Closed): Enumerator::Lazy#zip loses to_ary conversions when mixed with enumerable arguments
The PR is merged, thank you! mame (Yusuke Endoh)
07:36 AM Ruby Revision 28da13e7 (git): [ruby/erb] Respect ERB tag boundaries when detecting magic comments
https://github.com/ruby/erb/commit/934d51e24b ydah (Yudai Takada)
07:35 AM Ruby Bug #22326 (Closed): heap buffer overflow in array.values_at()
mame (Yusuke Endoh)
07:11 AM Ruby Bug #22313 (Closed): Bytecode compilation is quadratic in the size of a method due to remove_unreachable_chunk
Applied in changeset commit:git|8993cb5a3c87dcad17904bd8a0b69e235baf03e9.
----------
Make `remove_unreachable_chunk` linear in method size (#18823)
* Make remove_unreachable_chunk linear in method size
remove_unreachable_chunk allocat...
make_now_just (Hiroya Fujinami)
07:10 AM Ruby Revision 8993cb5a (git): Make `remove_unreachable_chunk` linear in method size (#18823)
* Make remove_unreachable_chunk linear in method size
remove_unreachable_chunk allocated and cleared a label_no-sized
counter array on every call, and iseq_peephole_optimize calls it for
every unconditional jump and leave, so compiling ...
make_now_just (Hiroya Fujinami)
07:10 AM Ruby Revision dc53a3e8 (git): Avoid quadratic compilation of and/or chains
The value-context NODE_AND / NODE_OR compiled nd_2nd recursively, so a
chain such as `a && b && c` gave each operator its own end label. The
peephole optimizer then collapsed that chain of labels, walking the
whole chain from every branc...
make_now_just (Hiroya Fujinami)
05:59 AM Ruby Revision 062f97ac (git): win32: Exit configure.bat with the status of nmake
b5ecfd1eba saved the status in `error` before removing the temporary file but never returned it, so configure.bat succeeded even when setup.mak failed and no Makefile was created.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:58 AM Ruby Revision 186ebd63 (git): [ruby/strscan] Reset the number of registers after string pattern
match
(https://github.com/ruby/strscan/pull/221)
`set_registers()` used `onig_region_set()` that doesn't change
`num_regs` when the region is already allocated. So `StringScanner#size`
and `#captures` after a string pattern match report...
Sutou Kouhei
04:42 AM Ruby Revision 341ad915 (git): [ruby/strscan] Fix match registers when position is larger than
INT_MAX
(https://github.com/ruby/strscan/pull/220)
## What
With `StringScanner.new(str, fixed_anchor: true)`, a scan position
beyond `INT_MAX` (a string longer than 2 GiB) makes
`StringScanner#getch` / `#get_byte` read out of bounds: a...
Renato Garda
04:41 AM Ruby Revision 9e6f76cb (git): mswin: Favor speed in vm.c
With the default `-O2sy-`, cl.exe compiles the instruction dispatch in vm_exec_core into a binary search. Favoring speed only in vm.c gives it a jump table, while the rest of the DLL and the extensions that inherit OPTFLAGS through RbCon... hsbt (Hiroshi SHIBATA)
04:29 AM Ruby Revision 5e7f3bd0 (git): [ruby/rubygems] Regenerate gemfile(5) for override from: and to:
https://github.com/ruby/rubygems/commit/b0d1b89df0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:29 AM Ruby Revision 3d429b18 (git): [ruby/rubygems] Document override from: and to: in gemfile(5)
https://github.com/ruby/rubygems/commit/9fabf718ee
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:29 AM Ruby Revision 8e8ad6ff (git): [ruby/rubygems] Re-resolve when an override cuts a locked gem loose
Adding `to: nil` to an existing bundle left the dropped gem in the lockfile, because nothing marked the lockfile as changed. Frozen installs accepted that stale lockfile too.
https://github.com/ruby/rubygems/commit/6b3d576a8b
Co-Author...
hsbt (Hiroshi SHIBATA)
04:29 AM Ruby Revision 104b7ed9 (git): [ruby/rubygems] Let override drop or replace one dependency of a gem
Some gems depend on a gem that only one of their features loads, or on a gem that an API-compatible one can stand in for. `override "B", from: "A", to: nil` drops the dependency of A on B, and `to: "C"` makes A depend on C instead.
The ...
hsbt (Hiroshi SHIBATA)
03:14 AM Ruby Bug #22209 (Closed): IO#set_encoding is ignoring the :newline keyword argument when given Encoding positional argument
Applied in changeset commit:git|d712895719ca7bff83e14aaddbb265e40f3ceed5.
----------
Fix IO#set_encoding ignoring conversion options for Encoding objects (#19215)
[Bug #22209]
Anonymous
03:14 AM Ruby Revision d7128957 (git): Fix IO#set_encoding ignoring conversion options for Encoding objects (#19215)
[Bug #22209] hanjyou0811
02:32 AM Ruby Revision 86ebfbd5 (git): Decode trace instructions to bare ones without threaded code
rb_vm_insn_decode is documented to return bare instructions, and rb_iseq_original_iseq maps encoded instructions back to bare ones, but both did so only with threaded code. Without it, once any ISEQ TracePoint had been enabled in the pro... hsbt (Hiroshi SHIBATA)
02:32 AM Ruby Revision 91384b95 (git): Set ISEQ_TRANSLATED without threaded code too
Without direct or call threaded code, as with MSVC, the flag was never set. YJIT asserts it on running iseqs, and iseq_free decrements rb_yjit_live_iseq_count only when it is set while compile.c always increments it. The assertions in ji... hsbt (Hiroshi SHIBATA)
02:31 AM Ruby Revision 6af3afcf (git): Bump taiki-e/install-action
Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.87.22 to 2.87.23
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
01:47 AM Ruby Revision f1888f15 (git): Remove USE_MACHINE_REGS
All compilers keep pc in reg_pc now, so it is always 1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:47 AM Ruby Revision b732b7d9 (git): Avoid locked instructions for atomic loads on x64 Windows
An aligned load is atomic on x64, and seq_cst because stores here use xchg. The fallbacks issued lock xadd or lock cmpxchg on every load, which RUBY_VM_CHECK_INTS and inline cache reads pay for. ARM64EC also defines _M_X64, so it is excl... hsbt (Hiroshi SHIBATA)
01:47 AM Ruby Revision c49d7bd9 (git): Use reg_pc in vm_exec_core on non-GNUC compilers too
Without it, MSVC merges the pc and sp updates of putobject into one 16-byte load and store on the control frame, which stalls on store forwarding from the preceding 8-byte stores.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:34 AM Ruby Revision 4c1a74b6 (git): fix out-of-bounds read in strftime %Z zone name copy
strlcpy returns the length of the source string, not the number of bytes it wrote into tbuf, so reusing its return value as the length for the following memcpy and case_conv lets a zone abbreviation longer than the buffer read past it. c... Zibran Khan
12:24 AM Ruby Misc #22394: DevMeeting-2026-10-07
* [Feature #22376] Undefine the allocator for `Class` (jhawthorn)
* Makes `Class.allocate` raise. Same as ex. `Proc.allocate`
* `Class` can't be subclassed, and I didn't find any legitimate uses in `gem-codesearch`. I don't think t...
jhawthorn (John Hawthorn)

10/05/2026

07:32 PM Ruby Revision df0fa43f (git): Add marking context to speed up marking in multi-Ractor
This makes a bigger difference on arm64, where GET_EC() is not inlined.
Calling this when marking every reference is expensive. It also makes a
bigger difference with Ractors because in single-ractor, the main ractor
can be retrieved thr...
Luke Gruber
06:08 PM Ruby Revision ee4013b9 (git): Count global GC cycles per Ractor in GC.stat
GC.stat(:global_gc_count) now reports the stop-the-world global cycles
the current Ractor started, instead of mirroring the process-wide count,
so the values can be summed across Ractors. GC.stat(:global_gc_count,
scope: :global) gives t...
eightbitraptor (Matt V-H)
04:49 PM Ruby Revision 0948e6e0 (git): [ruby/openssl] ssl: keep original SSLContext alive after servername_cb
Keep the original SSLContext in a separate instance variable to prevent
it from being GC'ed while its underlying SSL_CTX is still in use.
When the SNI callback accepts the provided server name, it can replace
the SSL_CTX with SSL_set_SS...
rhenium (Kazuki Yamaguchi)
03:57 PM Ruby Revision c78ad32c (git): [ruby/openssl] ssl: update rdoc for SSLSocket#pending and #wait_readable
Clarify how they (do not) interact with read buffers.
SSLSocket#pending corresponds to SSL_pending(). It reports data that is
already processed and is immediately available to read from the OpenSSL
library's internal buffer.
SSLSocket#...
rhenium (Kazuki Yamaguchi)
03:44 PM Ruby Bug #22407 (Assigned): IO::Buffer#set_value does not call to_int for 128-bit values
IO::Buffer gained support for reading and writing 128-bit integers (:u128, :U128, :s128, and :S128) in Ruby 4.0 (commit:a7dc53b91c8475323b34d5a332fdb25d190e277d).
Unlike the other smaller integer types, IO::Buffer#set_value does not cal...
hanazuki (Kasumi Hanazuki)
03:26 PM Ruby Revision 2c1e694a (git): [ruby/json] Exclude custom instance variables from State#to_h
https://github.com/ruby/json/commit/08e72297b2 ydah (Yudai Takada)
01:45 PM Ruby Revision 156c0953 (git): [ruby/json] Honor as_json and reject disabled strict mode in JSON::Coder
https://github.com/ruby/json/commit/b63b4f1506 ydah (Yudai Takada)
01:44 PM Ruby Revision 528835f3 (git): [ruby/json] Open gzip in binary mode
It is binary format, read in text mode stops at 0x1a (^Z).
https://github.com/ruby/json/commit/42cc52a89c
nobu (Nobuyoshi Nakada)
11:20 AM Ruby Revision c68a89fa (git): [ruby/mmtk] Make StickyImmix default GC plan
https://github.com/ruby/mmtk/commit/537eae4e0a peterzhu2118 (Peter Zhu)
11:03 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
I agree that this is not an API I'd like to depend on. That said, glibc does seem to intend to keep `_res` itself compatible. The 2.26 NEWS says:
> For backward compatibility, applications that directly modify the ‘_res’ global object...
mame (Yusuke Endoh)
07:56 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
> What do you think?
I'm trying to figure out whether this is even public API, as in, will this break under us in a couple years.
```c
if (_res.nscount > 0) {
res_nclose(&_res);
_res.nscount = 0; // to make t...
byroot (Jean Boussier)
05:47 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
Thank you for the detailed report. I believe your analysis is correct.
Neither of the two directions in the description looked easy to me. A thread pool could never shrink, since exiting a thread is exactly the dangerous step. Joining...
mame (Yusuke Endoh)
05:31 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
I've opened a pull request: https://github.com/ruby/ruby/pull/19209
Rather than either of the directions in the description, on glibc each lookup thread does the detach itself with `res_nclose(&_res)` before it leaves `rb_thread_preve...
dug (Doug E)
03:08 AM Ruby Bug #22406 (Open): Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
On Linux with glibc, a process forked while another thread's `getaddrinfo` helper pthread is exiting can inherit glibc's resolver-configuration lock in the locked state. Every hostname lookup in the child then blocks forever. Feature #20... dug (Doug E)
10:23 AM Ruby Revision fd8e1c47 (git): Prefer /dev/null as the character device in file type specs
Terminal devices picked by `find` can disappear while the specs run, and without a terminal on stdin `tty` prints "not a tty" to stdout, which became the path when `find` printed nothing. `File.lstat` matches how the specs check the type... hsbt (Hiroshi SHIBATA)
10:21 AM Ruby Revision adf5608f (git): fetch-bundled_gems.rb: Don't show the revision of the previous gem
The script body runs in the `-n` loop, so `info` kept the value from the previous gem when the current one has no revision.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:14 AM Ruby Revision 1703e455 (git): [ruby/rubygems] Use the make command that Gem::Ext::Builder chooses in tests
make_command ignored --with-make-prog in configure_args, so a build configured with --with-make-prog=gmake expected make where Gem::Ext::Builder runs gmake. The branches for -j and for the pending tests looked at whether nmake is in PATH... hsbt (Hiroshi SHIBATA)
08:44 AM Ruby Revision 899ce320 (git): Ignore the coroutine test executable
d06e3f2a5d moved it from the top directory into coroutine/test, where the `/coroutine-test` pattern no longer matches.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
06:58 AM Ruby Revision 06348d01 (git): Remove unused vendor Gemfiles
Ruby core does not invoke the RubyGems vendoring workflow. nobu (Nobuyoshi Nakada)
06:23 AM Ruby Revision 2f64f054 (git): [ruby/rubygems] Rename ruby_core_tarball? to git_repository?
It only checks whether the source root has .git, and nothing about ruby core.
https://github.com/ruby/rubygems/commit/fc8fa31bfe
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision 635e6b9a (git): [ruby/rubygems] Expect an unknown commit in bundle version only without git
The spec build metadata records unknown only when the source has no .git, so a git checkout of ruby core should report a real SHA as well.
https://github.com/ruby/rubygems/commit/f07a60f778
Co-Authored-By: Claude Opus 5.5 <noreply@anth...
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision bdcdf983 (git): [ruby/rubygems] Skip specs based on what RUBYLIB provides instead of ruby core
These examples break when a library on RUBYLIB takes precedence over the gem they rely on. ruby core puts its source and extension directories there, but the condition is about RUBYLIB, not about being ruby core.
https://github.com/ruby...
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision 1a09df1d (git): [ruby/rubygems] Gate RubyGems 4.1 specs on 4.1.0.a instead of 4.1.0.dev
4.1.0.beta1 sorts before 4.1.0.dev, so these examples have been excluded everywhere since https://github.com/ruby/ruby/commit/4020342576a bumped the version.
https://github.com/ruby/rubygems/commit/25b40782db
Co-Authored-By: Claude Opu...
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision 10171f88 (git): [ruby/rubygems] Skip content-addressed gem specs on prerelease Ruby instead of ruby core
Gem::ContentAddress is available in ruby core. What actually blocks these examples is that a prerelease Ruby never satisfies the ~> X.Y.0 pin of content-addressed gems, so they can still run on a release build.
https://github.com/ruby/r...
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision 347a80c8 (git): [ruby/rubygems] Skip the newgem linter specs only when ast.rb is on RUBYLIB
An in-tree build of ruby core puts the source root on RUBYLIB, and its ast.rb shadows the ast gem that rubocop-ast requires. Out-of-source builds, as on CI, can run them.
https://github.com/ruby/rubygems/commit/9b08921212
Co-Authored-B...
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision 412fc158 (git): [ruby/rubygems] Run the specs that the flat layout made work in ruby core
Since https://github.com/ruby/ruby/commit/4eb711b8e92, spec subprocesses load the in-development Bundler from lib upstream as well, so these examples no longer depend on ruby core having lib in $LOAD_PATH.
https://github.com/ruby/rubyge...
hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision dc65216a (git): [ruby/rubygems] Fix the extension caching spec with dSYM bundles
Ruby built from source on macOS runs dsymutil on every extension, and the recursive glob matched both the .dSYM directory and the files inside it, so rm_r failed on entries it had already removed. This was the unknown failure that made t... hsbt (Hiroshi SHIBATA)
06:23 AM Ruby Revision df54b3f8 (git): [ruby/rubygems] Run the corrupted global cache spec in ruby core
It failed only when XDG_CACHE_HOME was set, which made the global cache point outside the test home. spec_helper has cleared it since https://github.com/ruby/ruby/commit/773786415e3.
https://github.com/ruby/rubygems/commit/01d70d0119
C...
hsbt (Hiroshi SHIBATA)
03:38 AM Ruby Revision 3ce63c09 (git): [DOC] Harmonize atime methods- #19206
burdettelamar (Burdette Lamar)
03:25 AM Ruby Feature #11817: map.parallel
I’d like to revive this proposal with a concrete use case I ran into in a Rails application.
I frequently need to perform the same I/O-bound operation concurrently over a collection — for example, generating multiple documents through a...
Mordeccai (Martin Wein)
03:12 AM Ruby Revision 03ec621e (git): Pick the pid to kill in one place
Worker#kill and quit_workers both need the test process rather than the runruby.rb process on Windows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:12 AM Ruby Revision 162ce2fe (git): Kill the test processes left after waiting for workers on Windows
The KILL sent when Process.waitall times out in quit_workers also hit only the runruby.rb process on Windows, leaving the test process running. It now targets only the workers still running, since the pids of the test processes that have... hsbt (Hiroshi SHIBATA)
03:12 AM Ruby Revision 16d7abf9 (git): Kill the hung worker itself on Windows
On Windows, exec in runruby.rb spawns the worker as another process and waits for it, so killing the launched pid left the worker running with the inherited stderr open, and GitHub Actions waited on it until the step timed out. The worke... hsbt (Hiroshi SHIBATA)
02:46 AM Ruby Revision 60d10669 (git): [ruby/rubygems] Don't map files under rubygems/ to a default gem
Since 268b317b, the Bundler gemspec lists copies of RubyGems files under
lib/rubygems. Installed as the default gem, on Ruby head or after `gem
update --system`, it made requiring one of those RubyGems files activate
the default Bundler,...
Mike Dalessio
02:20 AM Ruby Feature #22405 (Open): Run-Length Methods for String Bit Operations
PR: (WIP)
### What this adds
This ticket adds the run-length methods of the String bit operation API. A run is a maximal sequence of consecutive bits with the same value. The methods build on the region arguments of #22279 and on t...
hasumikin (hitoshi hasumi)
12:05 AM Ruby Bug #22327: RubyVM::ZJIT.reset_stats! aborts the process (Rust panic) when ZJIT is not enabled
[Backport to 4.0](https://github.com/ruby/ruby/pull/19128) was merged. znz (Kazuhiro NISHIYAMA)
12:00 AM Ruby Revision dbabf7d7 (git): Remove ROBJECT_FIELDS macro in robject.h
The implementation of ROBJECT_FIELDS is defined in shape.h, which is not
public so ROBJECT_FIELDS can't be accessed publicly anyways.
peterzhu2118 (Peter Zhu)

10/04/2026

11:48 PM Ruby Revision d042982b (git): [DOC] Tweaks for File::Stat#<=>
burdettelamar (Burdette Lamar)
10:45 PM Ruby Revision bd1573c0 (git): win32: Define IFTODT so that Dir.glob uses d_type
Since 0c90ca4dd0, dir.c ignores d_type unless IFTODT is defined too, so Dir.glob on mswin has been calling lstat on every entry that readdir had already classified.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:30 PM Ruby Feature #22404 (Closed): Make Data (and/or Struct, etc.) true "first-class citizens" and thank you!
First of all, I would like to give a **huge** shoutout to the Ruby community for staying true to Ruby's mission of increasing developer productivity and thereby happiness and thereby enrichment of people's lives, especially mine in so ma... asoffa (Aaron Soffa)
09:34 PM Ruby Bug #22253 (Closed): Clang UBSan reports NULL/0 memcpy for eval scope locals
Applied in changeset commit:git|f19c5dcd3f68d288112b1b139b6fc75200fba742.
----------
[Bug #22253] Fix UB in prism eval with numbered params
locals are just zero-allocated. This leaves their source NULL,
which may later be `memcpy`d
We...
Earlopain (Earlopain _)
09:34 PM Ruby Revision f19c5dcd (git): [Bug #22253] Fix UB in prism eval with numbered params
locals are just zero-allocated. This leaves their source NULL,
which may later be `memcpy`d
We don't have to care about numbered params because of https://github.com/ruby/prism/commit/a218a0f265a71aecefe43a1b646917ca37f25547
We don't h...
Earlopain (Earlopain _)
06:34 PM Ruby Revision d5ef1ede (git): [ruby/prism] Use #source_range when available for Prism.find
* This is more accurate than using the line and is a portable API between Ruby implementations.
* I also tried to use #syntax_tree but that fails 2 tests as it returns the CallNode instead of BlockNode for blocks.
Additionally, #syntax...
Eregon (Benoit Daloze)
11:30 AM Ruby Bug #22403 (Assigned): Ruby::Box: a class that gets a box-specific classext is never freed
With `RUBY_BOX=1`, a class that receives a box-specific classext is never freed while its box lives, and for the main box that is the life of the process. Freezing the clone of a frozen object that extends a module creates one such class... shluboto (Andreas Busold)
10:47 AM Ruby Revision 76aa225e (git): Do not embed arrays that will overflow length bits
rb_ary_embeddable_p does not check that the capacity of the array is within
the number of bits used for embedded lengths, so it can cause overflows
on GC that support larger object sizes.
peterzhu2118 (Peter Zhu)
10:46 AM Ruby Revision 75c12fd8 (git): [DOC] Tweaks for File::Stat.new
burdettelamar (Burdette Lamar)
10:46 AM Ruby Revision f1cd40b4 (git): [DOC] Remove references to helper method (no longer exists)
burdettelamar (Burdette Lamar)
10:44 AM Ruby Revision 9c89af1a (git): [DOC] Tweaks for File::Stat doc
burdettelamar (Burdette Lamar)
10:43 AM Ruby Revision 666b35c2 (git): [DOC] Remove helper method (no longer exists)
burdettelamar (Burdette Lamar)
10:30 AM Ruby Bug #22284: Passing an object with to_int to curry as its arity causes problems with LLP64.
ruby_3_4 commit:8dd3d5b5e560b228d3bbf5d692b1e0d703d584b5 merged revision(s) commit:ec3b6b12e7fdd9eb833ba867eb862956a85f424b, commit:f021cc2f138061c292afe4be0389f6c7ec804e28, commit:020ccecec39c8f43ba7120b3b9079ec6b7d9ea80. nagachika (Tomoyuki Chikanaga)
10:29 AM Ruby Revision 8dd3d5b5 (git): merge revision(s) ec3b6b12e7fdd9eb833ba867eb862956a85f424b, f021cc2f138061c292afe4be0389f6c7ec804e28, 020ccecec39c8f43ba7120b3b9079ec6b7d9ea80: [Backport #22284]
[PATCH] [Bug #22284] Fix curry with a non-Fixnum arity on LLP64
FIX2INT does not call to_int where int and long have the same size, so `method(:puts).curry(1r)` waited for a garbage number of arguments on Windows. Convert the ar...
nagachika (Tomoyuki Chikanaga)
10:25 AM Ruby Bug #22257: Prepending a module to an already-included module leaves stale super caches
I don't know why there's a inconsistency, but the corresponding commit hash in master branch was git:c59c4d717a2e687972341eab1574196e97d7d7be. nagachika (Tomoyuki Chikanaga)
10:23 AM Ruby Bug #22257: Prepending a module to an already-included module leaves stale super caches
merged into ruby_3_4 at https://github.com/ruby/ruby/commit/c8e05b5885dbfb306528c73be5de2f63b297bbd3. nagachika (Tomoyuki Chikanaga)
09:37 AM Ruby Revision 002ae526 (git): [DOC] Remove helper display method - #19189
burdettelamar (Burdette Lamar)
04:17 AM Ruby Revision b61936bc (git): Remove `test-all` job for `--repeat-count=2`
In 108a92ac633365c71e3af654a7663271f2dc7891, only the option was
removed, but since `test-all` is included in `check`, this is a
duplicate.
nobu (Nobuyoshi Nakada)
04:15 AM Ruby Revision e347fe51 (git): [ruby/test-unit-ruby-core] Include CoreAssertions in TestEnvUtil
test_timeout_scale_from_env uses assert_separately, which the test-unit gem runner does not provide. ruby/ruby gets it from tool/lib/test/unit.rb.
https://github.com/ruby/test-unit-ruby-core/commit/b5da68b6fd
Co-Authored-By: Claude Opu...
hsbt (Hiroshi SHIBATA)
12:38 AM Ruby Revision 047430f8 (git): vcs.rb: Pass /dev/null to git instead of IO::NULL
Git for Windows 2.56.0 dies with "unable to access 'NUL': Invalid argument" when GIT_CONFIG_SYSTEM or GIT_CONFIG_GLOBAL is `NUL`, which stops the revision.h generation on mswin. `/dev/null` is the value git documents for them, and Git fo... hsbt (Hiroshi SHIBATA)

10/03/2026

09:21 PM Ruby Revision ce081bb0 (git): Scale test timeouts of test-bundled-gems on macOS
Subprocess assertions in the bundled gem tests expire at 10 seconds on contended runners, as test-all did before dd4153cbfe1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:21 PM Ruby Revision fa6ffde0 (git): Read RUBY_TEST_TIMEOUT_SCALE in EnvUtil
test-bundled-gems runs the tests with the test-unit gem, which loads EnvUtil through gems/lib but never goes through tool/lib/test/unit.rb, so the scale was ignored there. `--timeout-scale` still takes precedence.
Co-Authored-By: Claude...
hsbt (Hiroshi SHIBATA)
04:48 PM Ruby Revision d06e3f2a (git): Isolate coroutine test
Create coroutine test files under the dedicated directory. nobu (Nobuyoshi Nakada)
08:20 AM Ruby Revision 9b8b0ae4 (git): [ruby/mmtk] Implement mmtk_is_pinned
https://github.com/ruby/mmtk/commit/dedb6123d6 peterzhu2118 (Peter Zhu)
08:08 AM Ruby Revision bbaa7838 (git): [ruby/erb] Early return when nothing to be escaped.
Fix false code-scanning alert [1590], "Call to alloca in a loop", by
moving the intermediate buffer allocation outside the loop. Although
this allocation is technically inside the loop, it is actually located
within the `if (!buf)` bloc...
copilot-swe-agent[bot]
01:14 AM Ruby Revision c6a042f7 (git): Remove dead ROBJECT_EMBED_LEN_MAX macro
peterzhu2118 (Peter Zhu)
01:14 AM Ruby Revision a16ed993 (git): Remove dead ROBJECT_FIELDS_CAPACITY macro
peterzhu2118 (Peter Zhu)
12:00 AM Ruby Revision 088bf896 (git): Mention the removed platforms and versions in NEWS
The platforms removed earlier go into the same list, since they were removed for the same reasons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision f3b537a6 (git): Remove Debian GNU/kOpenSolaris support
GNU/kOpenSolaris was an unofficial Debian port on the OpenSolaris kernel that never became part of Debian, and it has been inactive for more than a decade.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision 4e182fec (git): Remove Debian GNU/kFreeBSD support
Debian GNU/kFreeBSD left the official releases after Debian 7 and was removed from debian-ports in 2023. The k*bsd*-gnu pattern also matched GNU/kNetBSD, which was abandoned long before that.
Co-Authored-By: Claude Opus 5.5 <noreply@ant...
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision 4903be91 (git): Remove workarounds for Linux 2.6.18
Linux 2.6.18 was the kernel of RHEL 5, whose Extended Life-cycle Support ended in 2020. Every supported kernel honors O_CLOEXEC and F_DUPFD_CLOEXEC, so there is no need to detect at runtime whether they work.
Co-Authored-By: Claude Opus...
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision 0fef975d (git): Remove Solaris 9 and earlier support
Extended Support for Solaris 9 ended in 2014. Solaris 10 and later have setenv and unsetenv, and libumem is always available, so the version specific fallbacks are no longer needed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision 2884fbde (git): Assume unsetenv returns int
POSIX.1-2001 made unsetenv return int. The platforms that still declared it void, such as Mac OS X 10.4, FreeBSD 6 and glibc before 2.2.2, are no longer supported.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision 96c60c47 (git): Remove the nan() workaround for Cygwin 1.3
CYGWIN_VERSION_DLL_MAJOR is below 1005 only before Cygwin 1.5, which was released in 2003.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision f3fb013c (git): Remove MirOS BSD support
MirOS BSD has been discontinued. Its last release, #10semel, came out in 2008.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision 16735c90 (git): Remove NEC EWS-UX support
_nec_ews is defined only by the compiler for EWS-UX on the NEC EWS4800 workstations, which are long out of distribution.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision c901944c (git): Remove Cray UNICOS/mp support
UNICOS/mp ran only on the Cray X1, and Cray moved to Linux based systems after it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision de2b5799 (git): Remove a.out support for the BSDs
Every supported release of FreeBSD, NetBSD and OpenBSD produces ELF binaries. These were the last platforms that needed a leading underscore on symbols looked up in extension libraries, so EXTERNAL_PREFIX goes as well.
Co-Authored-By: C...
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision cb6a59a4 (git): Remove the HP 9000 Series 300 check from dln.c
__hp9000s300 is defined only for HP-UX on the 68k based HP 9000/300, which was discontinued decades ago. HP-UX itself reached the end of support in 2025.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:00 AM Ruby Revision bfb3533d (git): Remove the remaining NeXT code from dln.c
NeXTSTEP support was removed long ago, but its symbol prefix condition and dyld includes were left behind. No supported compiler defines NeXT.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)

10/02/2026

11:36 PM Ruby Revision d9f4075f (git): ZJIT: Support out-of-bounds reads in Array#[] (#18989)
All of our current operations on Array guarantee in-bounds reads using guards. This works +/- fine for `expandarray` and `Array#[]` but at the end of the day, it is pretty common to read out-of-bounds because it's not an error! It just r... Max Bernstein
09:47 PM Ruby Revision 6e4eb1e1 (git): Omit the fiber pool exhaustion test with a large max_map_count
The test creates fibers with GC disabled until mmap reaches max_map_count, so its memory use grows with that limit. GitHub Actions runners set it to 262144, where a RUBY_DEBUG build needs about 16GB, and the parse.y check has been losing... hsbt (Hiroshi SHIBATA)
09:47 PM Ruby Revision af867e08 (git): Stop using the macos-14 runner image
GitHub retires the macOS 14 image on November 2, 2026. Jobs that ran only there move to macos-15, the oldest remaining image, and the matrices that also cover newer images drop it.
https://github.blog/changelog/2026-10-01-github-actions...
hsbt (Hiroshi SHIBATA)
09:47 PM Ruby Revision f87d6b0d (git): Use ubuntu-latest for macOS result jobs
The result jobs in macOS workflows only check if other jobs failed
(just runs `exit 1`). They don't need macOS runners. Using
ubuntu-latest instead frees up macOS runner slots and starts faster
due to shorter queue times.
st0012 (Stan Lo)
09:46 PM Ruby Revision 5b6f5935 (git): Introduce (internal) `IO::Buffer::Storage` and `Slice`. (#19186)
Samuel Williams
09:43 PM Ruby Revision 801356f3 (git): Relax the flaky test threshold on RHEL 10.0 x86_64
(cherry picked from commit acd0c68a074cd47fba486d4d77895e2709be873a) nobu (Nobuyoshi Nakada)
09:43 PM Ruby Revision d47f9727 (git): Fix write barrier in update_classvariable_cache
(cherry picked from commit f0a71599b1f4afefddca73c7050a94973c5eefce) jhawthorn (John Hawthorn)
06:55 PM Ruby Revision 1b0fb238 (git): [ruby/openssl] docs: Replace deprecated SSLServer references with SSLSocket
The commit https://github.com/ruby/openssl/commit/a77ed4b9908e deprecated SSLServer.
Update code examples and the OpenSSL::SSL module description
to use SSLSocket and TCPServer instead.
Fix OpenSSL::DH.generate to OpenSSL::PKey::DH.gene...
Jun Aruga
06:55 PM Ruby Revision 5f420cc8 (git): [ruby/openssl] docs: Replace deprecated SSLContext#cert=/key= with add_certificate in example
The SSLContext#cert= and #key= methods are deprecated in favor
of #add_certificate. Update the SSL server example in ossl.c.
Assisted-by: Claude:Opus 4.6
https://github.com/ruby/openssl/commit/50dcdc2ee0
Jun Aruga
02:45 PM Ruby Revision 6930c20b (git): [ruby/json] Implement rfc8785
Fix: https://github.com/ruby/json/issues/1038
Directly lift https://github.com/dryruby/json-canonicalization
At least for now, implementing most of the logic in Ruby make it
shareable between the 3 generator implementations, largely re...
byroot (Jean Boussier)
01:36 PM Ruby Bug #22398 (Closed): `alias_method` over a bmethod fails `rb_vm_check_ints` assertion after a Ractor has been created
Applied in changeset commit:git|4eed7d64eae2cc5fe072992e5d5da25aaa9d5171.
----------
Don't call Ruby code in rb_method_definition_eq
During method aliasing, we check if the methods `a` and `b` are equal
before aliasing. If they are equ...
Anonymous
01:35 PM Ruby Revision 4eed7d64 (git): Don't call Ruby code in rb_method_definition_eq
During method aliasing, we check if the methods `a` and `b` are equal
before aliasing. If they are equal, we don't need to alias. That check
was running Ruby code with the VM lock held when the first method was a
bmethod, which is not go...
Luke Gruber
01:03 PM Ruby Revision 8cf3b669 (git): [ruby/json] Fix parser error positions for newlines and multibyte characters
https://github.com/ruby/json/commit/590dd5448d ydah (Yudai Takada)
12:35 PM Ruby Feature #22392: Allow refinements to define && and ||
alanwu (Alan Wu) wrote in #note-6:
> BTW, the cost analysis to non-users is incomplete in the PoC.
You're right that the analysis is incomplete.
As you say, a parse-time switch would be ideal, but I cannot think of a way to do that ...
shugo (Shugo Maeda)
10:59 AM Ruby Feature #22392: Allow refinements to define && and ||
BTW, the cost analysis to non-users is incomplete in the PoC. Quantifying JIT time cost in terms of extra instructions doesn't talk about the optimizations otherwise possible that this inhibits.
The space analysis doesn't talk about all ...
alanwu (Alan Wu)
04:58 AM Ruby Feature #22392: Allow refinements to define && and ||
I do understand the wish. I have wanted to write `name == "x" && age > 20` in a DSL myself, more than once.
If today were April 1st, I'd be all for it. (cf. #16746)
As an aside, mostly to make @alanwu nervous: I'd rather have user-...
mame (Yusuke Endoh)
12:21 PM Ruby Revision a349827f (git): [ruby/json] Preserve complete UTF-8 characters in parse error snippets
https://github.com/ruby/json/commit/c484f8fa82 ydah (Yudai Takada)
09:53 AM Ruby Misc #22272 (Closed): Propose Kevin Menard (@nirvdrum) as a core committer
The account setup is now complete. Please read the "For Developers" section of https://github.com/ruby/ruby/wiki carefully. The nominator, please support them as their mentor. hsbt (Hiroshi SHIBATA)
07:11 AM Ruby Revision 2192dca2 (git): [ruby/mmtk] Fix rustsrcs in extconf.rb
https://github.com/ruby/mmtk/commit/7e9aadd29e peterzhu2118 (Peter Zhu)
06:38 AM Ruby Revision 822daa19 (git): [ruby/etc] Release ALLOCV buffer in Etc.confstr
Release the temporary buffer after copying its contents into a Ruby string.
https://github.com/ruby/etc/commit/9b9f99bd2b
nobu (Nobuyoshi Nakada)
06:15 AM Ruby Misc #22394: DevMeeting-2026-10-07
* [Feature #22402] Drop support for Darwin on PowerPC (hsbt)
* PowerPC Macs stopped at Mac OS X 10.5 in 2007 and no CI covers them, but `coroutine/ppc`, `coroutine/ppc64` and the PowerPC branches under `__APPLE__` remain and still get ...
hsbt (Hiroshi SHIBATA)
02:28 AM Ruby Misc #22394: DevMeeting-2026-10-07
* [Feature #22392] Allow refinements to define && and || (shugo)
* I propose to allow `&&` and `||` to be defined in refinements, so that DSLs can write `where { name == "x" && age > 20 }` instead of `where { (name == "x") & (age > 20...
shugo (Shugo Maeda)
06:14 AM Ruby Feature #22402 (Assigned): Drop support for Darwin on PowerPC
I propose to end support for Darwin on PowerPC, that is, Mac OS X on PowerPC Macs. This is not a proposal to drop PowerPC in general. IBM POWER on Linux (`powerpc64le`, tested on rubyci) and AIX are not affected.
The last Mac OS X rel...
hsbt (Hiroshi SHIBATA)
06:09 AM Ruby Revision 63d2fe7b (git): Launchable: Add the Python user bin to PATH on every macOS runner
The check was keyed on the `os` input starting with `macos`, so the xcode-27 job could not find `launchable` and recorded no test results.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
06:09 AM Ruby Revision 7ac157d9 (git): Run macOS CI check on xcode-27
xcode-27 is the public preview runner image with macOS 27 and Xcode 27. Running check there catches breakage on the next macOS before it becomes the default.
https://github.com/actions/runner-images/issues/14404
Co-Authored-By: Claude ...
hsbt (Hiroshi SHIBATA)
06:09 AM Ruby Revision 6dcc084f (git): Stop running macOS CI on macos-14
GitHub retires the macOS 14 runner image on 2026-11-02, and its brownouts start on 2026-10-05.
https://github.blog/changelog/2026-10-01-github-actions-macos-14-runner-image-retirement/
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic...
hsbt (Hiroshi SHIBATA)
06:03 AM Ruby Revision 6c92d5b7 (git): Release ALLOCV buffer
Release `ALLOCV` buffers promptly when they are no longer needed. nobu (Nobuyoshi Nakada)
05:54 AM Ruby Revision fccc81a3 (git): [ruby/resolv] Bound the number of compression pointers per name
Commit 4c2f71b (CVE-2025-24294) capped a decompressed name at 255 octets,
bounding its length but not the work: a chain of compression pointers adds
no label octets, so the cap never fires while the decoder follows every
pointer, and man...
mame (Yusuke Endoh)
05:26 AM Ruby Revision 7ad8db23 (git): Stop using the macos-14 runner image
GitHub retires the macOS 14 image on November 2, 2026. Jobs that ran only there move to macos-15, the oldest remaining image, and the matrices that also cover newer images drop it.
https://github.blog/changelog/2026-10-01-github-actions...
hsbt (Hiroshi SHIBATA)
05:26 AM Ruby Revision f569684a (git): Use ubuntu-latest for macOS result jobs
The result jobs in macOS workflows only check if other jobs failed
(just runs `exit 1`). They don't need macOS runners. Using
ubuntu-latest instead frees up macOS runner slots and starts faster
due to shorter queue times.
st0012 (Stan Lo)
05:08 AM Ruby Bug #19794 (Closed): Ruby 3.2.2 fails to build on macOS Sonoma betas
The original failure came from macOS Sonoma beta 4 and went away in the release, and the released Xcode linker does not warn about a missing `/usr/local/lib`. commit:git|cf964336454 makes configure name the missing directory, e.g. `somet... hsbt (Hiroshi SHIBATA)
03:02 AM Ruby Revision 373ae073 (git): [ruby/rubygems] Drop setuid, setgid and sticky bits when extracting gems
Files and directories created from the mode of a tar entry kept these bits, since that mode was at most masked to 16 bits to keep chmod from raising RangeError. Apply only the permission bits instead. Modes given through dir_mode, prog_m... hsbt (Hiroshi SHIBATA)
02:30 AM Ruby Revision 3b847958 (git): Bump taiki-e/install-action
Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.87.21 to 2.87.22
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
02:03 AM Ruby Revision f1b9ce46 (git): ZJIT: Don't retain Proc and IFUNC block handlers in profiles (#19148)
k0kubun (Takashi Kokubun)
01:58 AM Ruby Revision 3c01c256 (git): Add `IO::Buffer#advance`. (#19122)
Samuel Williams
01:41 AM Ruby Revision 531020f2 (git): Win32: Do not truncate write lengths of 4GiB or more
`rb_w32_write_internal` passed its `size_t` length to `WriteFile`, `_write` and `send`, which take 32-bit lengths, so `IO::Buffer#write` and `#pwrite` with a length of `2**32 + 1` wrote 1 byte, and a socket write of `2**32` bytes returne... hsbt (Hiroshi SHIBATA)
01:40 AM Ruby Revision 3485ac59 (git): Mark dev builds as prerelease in the Windows version resource
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
01:40 AM Ruby Revision 7bc64b45 (git): Put the revision in FileVersion of the Windows version resource
ProductVersion is the version of Ruby itself, and FileVersion now identifies the build the file came from.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:40 AM Ruby Revision 58d4802f (git): Use https for CompanyName in the Windows version resource
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
12:49 AM Ruby Revision 17df3145 (git): [ruby/resolv] Prefer the registry over /etc/resolv.conf on native Windows
On native Windows `/etc/resolv.conf` resolves against the current drive, so a stray `etc\resolv.conf` at the drive root shadowed the DNS settings in the registry. Cygwin keeps reading the file first because its own resolver honors it.
h...
hsbt (Hiroshi SHIBATA)

10/01/2026

10:36 PM Ruby Revision 9f323525 (git): Fix error paths of lldb rbbt
Without an argument, or with an expression that failed to evaluate, rbbt raised a Python exception instead of reporting the problem. Evaluating without a process referred to an undefined `target` as well.
Co-Authored-By: Claude Opus 5.5...
hsbt (Hiroshi SHIBATA)
10:36 PM Ruby Revision 321a6665 (git): Test rbbt on ZJIT frames
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
10:36 PM Ruby Revision 901acf56 (git): Test rbbt in test_lldb_cruby.rb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
10:36 PM Ruby Revision 9dd04cb1 (git): Update rp expectations in test_lldb_cruby.rb
rp has long printed the GC bits of a heap object before its type, and every string as a `const char` array since e078352a787, so three of the four tests were failing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:36 PM Ruby Revision f0ee6a3a (git): Read ZJIT frames in lldb rbbt as CFP_ISEQ does
ZJIT does not write `_iseq` and `pc` of its frames until they are materialized, so rbbt dropped them or printed stale ones. Read the JIT frame instead when ZJIT is enabled, as CFP_ISEQ() and CFP_PC() do.
Co-Authored-By: Claude Opus 5.5 ...
hsbt (Hiroshi SHIBATA)
10:36 PM Ruby Revision a482d0cb (git): Read iseq strings in lldb rbbt through the target
A core saved with `process save-core -s modified-memory` lacks static strings such as `<main>`, which SBProcess cannot read, so rbbt printed `error!!` as the label. SBTarget falls back to the object file.
Co-Authored-By: Claude Opus 5.5...
hsbt (Hiroshi SHIBATA)
10:36 PM Ruby Revision 62f61596 (git): Follow the cfp->_iseq rename in lldb rbbt
226f37059ec renamed the field, so `->iseq` no longer resolved and rbbt skipped every ISEQ frame, printing only CFUNC ones.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:29 PM Ruby Revision e4c5526a (git): ZJIT: Inline Struct#initialize (#19119)
For small-enough Struct instances (<= 256 members, to avoid generating too much code), inline the initialize method.
This makes creating and initializing Structs very very fast and also gives more information to the load-store pass sinc...
Max Bernstein
10:16 PM Ruby Revision b4bc7bc7 (git): misc/gdb.py: Fix the swapped Params and Locals conditions
cfp printed Params only when the frame had locals and Locals only when it had params, so a method with arguments and no locals showed an empty Locals instead of its arguments.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:16 PM Ruby Revision e8b378af (git): misc/gdb.py: Compute the base pointer without calling vm_base_ptr
gdb cannot call functions on a core file, so cfp stopped at its first Env line there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:16 PM Ruby Revision 1a5a8c76 (git): misc/gdb.py: Read the frame iseq through cfp_iseq_pc
The cfp command still read cfp->iseq, which 226f37059ec renamed to _iseq, so it stopped with "There is no member named iseq." on every frame. cfp_iseq_pc in .gdbinit also gives the right iseq for ZJIT frames.
Co-Authored-By: Claude Opus...
hsbt (Hiroshi SHIBATA)
10:16 PM Ruby Revision c03a1804 (git): .gdbinit: Follow the ID table layout in print_id
805d510ebd6 turned ruby_global_symbols.ids into a directory of darray buckets, and print_id still read it as nested Arrays, so rb_ps printed an empty name for every C method frame.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:16 PM Ruby Revision f3e3fb01 (git): .gdbinit: Read the frame iseq without calling rb_get_cfp_iseq
rb_get_cfp_iseq exists only in builds with YJIT or ZJIT, and gdb cannot call functions on a core file, so rb_ps stopped at the first Ruby frame. Follow CFP_ISEQ() and CFP_PC() with expressions instead, which also fixes the line numbers o... hsbt (Hiroshi SHIBATA)
09:59 PM Ruby Revision a320eeff (git): Remove redundant check in rgengc_check_relation
WB-unprotected objects are always young. This invariant is maintained throughout the code base.
When WB-unprotecting an object, the object gets de-aged.
Luke Gruber
07:15 PM Ruby Feature #22392: Allow refinements to define && and ||
IMHO this is already pretty readable with current `&` and `|` as we can see in practice in [ROM](https://hanakai.org/learn/rom/v5.0/sql/queries#complex-conditions). This seems to add much confusion for no additional clarity. matheusrich (Matheus Richard)
07:53 AM Ruby Feature #22392: Allow refinements to define && and ||
alanwu (Alan Wu) wrote in #note-1:
> Please no. Changing non-method call operations to be method calls has disastrous time and space cost for everyone involved, JIT or not. If accepted, this would be yet another case of refinement makin...
shugo (Shugo Maeda)
07:02 PM Ruby Revision f980c947 (git): Fix reuse of MatchData assigned to $~
$~ = m = /a/.match("a").dup
/b/ =~ "b"
p m
[Bug #22381]
(cherry picked from commit ea3cd7efe1f6bab78572b31774462e891ef01243)
jhawthorn (John Hawthorn)
06:20 PM Ruby Bug #22401 (Closed): addr2line.c does not build when crt_externs.h is absent (iOS SDK)
Ruby version: master (4.0.7)
addr2line.c includes <crt_externs.h> unconditionally. The build fails on
Darwin targets where that header is absent. The public iOS SDK does not
ship crt_externs.h.
## Steps to reproduce
Configure ...
albertus (Dominik Alberski)
03:42 PM Ruby Revision bac5fe37 (git): Preserve array conversions in Enumerator::Lazy#zip
When a later argument requires Enumerable iteration, lazy zip rebuilds
its argument array from the original argv and discards earlier to_ary
conversions. This can raise NoMethodError or use different each values.
Append the remaining ar...
afurm (Andrii Furmanets)
11:49 AM Ruby Revision 528c7047 (git): mswin: Remove an ambiguous entry point
```
linking coroutine-test.exe
LINK : warning LNK4067: ambiguous entry point; selected 'mainCRTStartup'
```
nobu (Nobuyoshi Nakada)
11:48 AM Ruby Revision 2192d0dd (git): mswin: Sync the definition of `FLEX_ARY_LEN` in rubyparser.h
It should match the original definition in `internal/compilers.h` also
on `mswin`.
nobu (Nobuyoshi Nakada)
11:14 AM Ruby Revision 1c03c515 (git): [ruby/json] Fix tempfile leak
The `tempfile` variable refers to different things in the first half
and the second half.
https://github.com/ruby/json/commit/0edc03a14e
nobu (Nobuyoshi Nakada)
11:07 AM Ruby Revision 12779089 (git): Use assert_in_ractor in test_gc.rb
peterzhu2118 (Peter Zhu)
11:07 AM Ruby Revision 99d67b64 (git): Add assert_in_ractor
This commit adds assert_in_ractor which runs code in a Ractor and allows
the use of assertions in the Ractor.
peterzhu2118 (Peter Zhu)
10:05 AM Ruby Revision f61ac22c (git): Avoid potentially type-punning casts
nobu (Nobuyoshi Nakada)
10:05 AM Ruby Revision badce4d0 (git): Add a more defensive GC guard
nobu (Nobuyoshi Nakada)
10:04 AM Ruby Revision 3ea4bc3f (git): [Bug #22388] Fix use-after-free in `Set#&`
nobu (Nobuyoshi Nakada)
08:56 AM Ruby Bug #22388: Use-after-free when an Enumerable retains its `each` block
* [`Enumerator::Lazy#flat_map`](https://github.com/ruby/ruby/pull/19165) ✅
* [`Set#&`](https://github.com/ruby/ruby/pull/19166) ✅
nobu (Nobuyoshi Nakada)
08:27 AM Ruby Revision 9267f6fb (git): [Bug #22388] Fix use-after-free in `Enumerator::Lazy#flat_map`
nobu (Nobuyoshi Nakada)
07:15 AM Ruby Revision 05479caf (git): [ruby/json] Remove the leading space from Fragment conversion errors
https://github.com/ruby/json/commit/0c46c27fae ydah (Yudai Takada)
07:15 AM Ruby Revision d7e3bfc7 (git): [ruby/json] Correct State as_json and depth setter documentation
https://github.com/ruby/json/commit/3643231dfd ydah (Yudai Takada)
07:05 AM Ruby Revision 6d438b5b (git): [DOC] Update bundled gems list at ad5851e797855e0e27a6569fd87588
git[bot]
07:05 AM Ruby Revision 548b9f82 (git): [ruby/rubygems] Tolerate EBADF when the local test server closes a client
On JRuby before 10.1.2, IO#close raises Errno::EBADF after Thread#kill interrupts a socket read or write, because NIO has already closed the channel. A slow runner can still be inside client.print when teardown kills the server thread, a... hsbt (Hiroshi SHIBATA)
06:57 AM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
> What do you think?
I think I'd be worth trying for a preview (there was no 4.1.0preview this year?) as to see what the blast radius really is.
Other than that, I wonder if one avenue could be to have this be a build flag first, a...
byroot (Jean Boussier)
04:37 AM Ruby Feature #22400 (Open): Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
On x64-mswin64, `long` is 32 bits while pointers are 64 bits. String, Array and MatchData keep their lengths in `long`, so none of them can reach 2GiB.
```ruby
"a" * 2**31 # RangeError: bignum too big to ...
hsbt (Hiroshi SHIBATA)
06:31 AM Ruby Revision ad5851e7 (git): [ruby/json] Prevent use-after-free when strings change during IO generation
https://github.com/ruby/json/commit/f720614728 ydah (Yudai Takada)
06:21 AM Ruby Revision f452e540 (git): [ruby/json] Prevent ResumableParser from stalling on invalid object keys
https://github.com/ruby/json/commit/452f31b569 ydah (Yudai Takada)
04:48 AM Ruby Revision c2905e95 (git): [ruby/rubygems] Remove unused Dependency#sparse_checkout
https://github.com/ruby/rubygems/commit/f621f03797
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:48 AM Ruby Revision 79b4ef82 (git): [ruby/rubygems] Look up gemspecs within the sparse_checkout directories by default
Gemspecs outside the cone are never checked out, so a sparse_checkout without glob made users repeat the directory in both options.
https://github.com/ruby/rubygems/commit/110bdab9ba
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:48 AM Ruby Revision beb93270 (git): [ruby/rubygems] Accept an array of directories for sparse_checkout
A gem in a monorepo can need a sibling directory besides its own, and git takes several cone directories. Values that are not directory names now raise a Gemfile error instead of a TypeError from computing the install path.
https://gith...
hsbt (Hiroshi SHIBATA)
04:48 AM Ruby Revision ebe78435 (git): [ruby/rubygems] Enable sparse-checkout cone mode on git before 2.35
`git sparse-checkout set` only learned --cone in git 2.35. Older versions take it as a pattern and fall back to non-cone matching, which drops the top-level files a cone checkout keeps.
https://github.com/ruby/rubygems/commit/5c8945d7df...
hsbt (Hiroshi SHIBATA)
04:48 AM Ruby Revision 87c555e8 (git): [ruby/rubygems] Share the git cache between sparse checkouts of a repository
The bare cache has no working tree, so the cone only matters for the checkout. Keying the cache by it fetched the same monorepo once per sparse_checkout.
https://github.com/ruby/rubygems/commit/9e2dea7edb
Co-Authored-By: Claude Opus 5....
hsbt (Hiroshi SHIBATA)
04:48 AM Ruby Revision 5562186c (git): [ruby/rubygems] Check out sparse_checkout sources from the local git cache
Cloning the working copy from the remote with a blob filter made every install need the network, and a blobless cache cannot serve the locked revision to the working copy because upload-pack refuses to lazy fetch. Keep the cache complete... hsbt (Hiroshi SHIBATA)
04:48 AM Ruby Revision 92a38492 (git): [ruby/rubygems] Add `sparse_checkout` option for Bundler git sources
https://github.com/ruby/rubygems/commit/ca639667f5 Ian Ker-Seymer
04:39 AM Ruby Misc #22394: DevMeeting-2026-10-07
* [Feature #22400] Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin (hsbt)
* The first step (PR #18862) replaces `long` with `rb_long_t`, which stays `typedef long`, and changes nothing. The second step makes...
hsbt (Hiroshi SHIBATA)
04:14 AM Ruby Misc #22394: DevMeeting-2026-10-07
* [Feature #22399] Iterator Methods for String Bit Operations (hasumikin)
* Proposed new methods `each_bit`, `bits`, `each_bit_offset` and `bit_offsets` for String
* They are the iterator forms of the single-bit read methods merged i...
hasumikin (hitoshi hasumi)
12:47 AM Ruby Misc #22394: DevMeeting-2026-10-07
* [Feature #22309] Allow super in a module method to work if method was called by refinement method super (jeremyevans0)
* From Ruby 2.4-4.0, `super` has been allowed, but used the wrong method lookup, so it generally resulted in a `N...
jeremyevans0 (Jeremy Evans)
04:29 AM Ruby Revision b0027b39 (git): [ruby/rubygems] Fix Layout/SpaceInsideBlockBraces offense
https://github.com/ruby/rubygems/commit/a822203d5e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:29 AM Ruby Revision cad32984 (git): [ruby/rubygems] Make InvalidWindowsFileNameError a Gem::InstallError
Bundler and `gem install` only handle Gem::InstallError as an install failure, so this error fell through to Bundler's issue report template and to the generic crash handler of `gem`.
https://github.com/ruby/rubygems/commit/efc4d91b01
...
hsbt (Hiroshi SHIBATA)
04:29 AM Ruby Revision b33ab420 (git): [ruby/rubygems] Rename InvalidFileNameError to InvalidWindowsFileNameError for clarity
https://github.com/ruby/rubygems/commit/559662e2f6 Said Kaldybaev
04:29 AM Ruby Revision f283be75 (git): [ruby/rubygems] Improve handling of paths with invalid Windows characters
Add validation and clear error messages for gems with filenames containing
invalid Windows characters (e.g., colons), directing users to report issues
to gem authors instead of RubyGems.
https://github.com/ruby/rubygems/commit/d577a262d2
Said Kaldybaev
04:14 AM Ruby Revision d2050367 (git): [ruby/rubygems] Tell why bundle lock writes nothing with lockfile false
Falling back to the Gemfile's lockfile printed "Writing lockfile to false" and exited without writing anything.
https://github.com/ruby/rubygems/commit/21f58b287a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
04:14 AM Ruby Revision 19fdbc9e (git): [ruby/rubygems] Keep BUNDLE_LOCKFILE ahead of the Gemfile lockfile in bundle lock
gemfile(5) ranks BUNDLE_LOCKFILE above the lockfile method, which `bundle install` follows and `bundle lock` did before falling back to the Gemfile's lockfile.
https://github.com/ruby/rubygems/commit/d802dd7dc8
Co-Authored-By: Claude O...
hsbt (Hiroshi SHIBATA)
04:14 AM Ruby Revision c8ba43bb (git): [ruby/rubygems] Respect Gemfile lockfile in `bundle lock`
Use the lockfile path resolved from the definition when no explicit `--lockfile` option is passed.
https://github.com/ruby/rubygems/commit/d52c14fc18
David Stosik
04:14 AM Ruby Revision 0f66350a (git): Check the VM stack canary only on Ruby frames
rb_vm_check_canary took the iseq field of an IFUNC frame, which holds the ifunc, for an iseq, and crashed in ISeq#inspect while reporting a smashed canary. Only leaf instructions set the canary and they run in Ruby frames, so the first f... Hiroshi SHIBATA
04:14 AM Ruby Revision 1ffa0a99 (git): Keep the VM stack canary a large positive integer
On 32-bit platforms the random canary is a 31-bit Fixnum and can equal a small integer. A loop counter yielded to a block that takes no arguments stays where vm_push_frame checks the canary, which made TestGc#test_thrashing_for_young_obj... Hiroshi SHIBATA
03:58 AM Ruby Revision 081aa885 (git): Send SIGABRT only after the child sleeps in test_crash_report_sender_pid
The child was still looking up `sleep` right after printing, and a SIGABRT landing in its calloc deadlocked the crash report on the malloc arena lock the same thread held. The test hung until the runner's timeout on the Amazon Linux 2023... hsbt (Hiroshi SHIBATA)
02:53 AM Ruby Revision a7785cd7 (git): Skip pipe_atexit on a thread without an execution context
The CRT runs it on whichever thread calls ExitProcess. When that is a thread Ruby does not know, such as the one running the default console control handler, finalizing the pipes crashed in GET_THREAD().
Co-Authored-By: Claude Opus 5.5 ...
hsbt (Hiroshi SHIBATA)
02:41 AM Ruby Bug #14640 (Closed): [win32] File.realpath treats a relative path with a drive letter as an absolute path.
Applied in changeset commit:git|a22017a42a13945ce3c9129135ae760c988a1ba9.
----------
[Bug #14640] Fix File.realpath with a drive-relative path
A drive letter without a following separator ("c:t") means a path relative to the current di...
hsbt (Hiroshi SHIBATA)
02:41 AM Ruby Revision a22017a4 (git): [Bug #14640] Fix File.realpath with a drive-relative path
A drive letter without a following separator ("c:t") means a path relative to the current directory of that drive, as File.absolute_path interprets it, not the absolute path "c:/t". A drive-relative basedir is read the same way, "~" stay... hsbt (Hiroshi SHIBATA)
02:41 AM Ruby Revision 5f860723 (git): Win32: Do not truncate read lengths of 4GiB or more
`rb_w32_read_internal` passed its `size_t` length to `ReadFile`, `_read` and `recv`, which take 32-bit lengths, so `IO::Buffer#read` with a length of `2**32` read nothing and looked like EOF. Read at most `INT_MAX` bytes at once instead ... hsbt (Hiroshi SHIBATA)
02:41 AM Ruby Revision b72368a3 (git): Win32: Fix fstat on files of 2GiB or larger
The CRT `fstat` fills `struct stat`, whose `st_size` is 32-bit, and fails with EOVERFLOW before `stati128_handle` can set the 64-bit size. This broke `File#size`, `File#stat`, `IO.copy_stream` and `IO::Buffer.map` on such files. `_fstat6... hsbt (Hiroshi SHIBATA)
02:38 AM Ruby Revision 1a14cd88 (git): Bump rand in /zjit in the jit group across 1 directory
Bumps the jit group with 1 update in the /zjit directory: [rand](https://github.com/rust-random/rand).
Updates `rand` from 0.10.2 to 0.10.3
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.co...
dependabot[bot]
02:04 AM Ruby Revision 47508254 (git): Fix lost signal in TestFiberMutex#test_condition_variable
ConditionVariable#signal is lost when no fiber is waiting. If the scheduler thread stalls for 0.1 seconds after the first signal, Scheduler#run_once resumes the signalling fiber from its timer before the ready waiter, and the waiter then... hsbt (Hiroshi SHIBATA)
01:56 AM Ruby Revision 295a9913 (git): Do not load Homebrew libraries in the lldb script of crash dumps
lldb crashes in LoadCore when the reader has another build of one at the same path, as it did with libyaml for the first dump from the YJIT macOS job.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:51 AM Ruby Revision ffd032a6 (git): Report the IPv4 resolution error after EAI_ADDRFAMILY for IPv6
EAI_ADDRFAMILY left the IPv6 result looking successful, so a later IPv4 resolution error was not recorded and TCPSocket.new raised Socket::ResolutionError with error_code 0. When the IPv6 notification failed, EAI_ADDRFAMILY was recorded ... hsbt (Hiroshi SHIBATA)
01:51 AM Ruby Revision cfa89474 (git): Keep the getaddrinfo result when the resolver notification fails
The errno of the failed write(2) overwrote err, so the main thread took it for an EAI code, discarding addresses that had been resolved or raising with an unrelated message.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:51 AM Ruby Revision 7a770e26 (git): Stop reading the resolver pipe on EOF and errors
The loop only left on EAGAIN, so EOF or a read error other than EINTR spun forever while holding the GVL.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
01:19 AM Ruby Revision b5b943d3 (git): mswin: Define STACK_GROW_DIRECTION on arm64 too
Without it GET_STACK_BOUNDS picks the direction at run time and marks from address 0 once thread_cleanup_func has cleared stack_start, as happens when a dying Ractor's thread allocates under GC.stress. This crashed TestRactor on the Wind... hsbt (Hiroshi SHIBATA)
01:02 AM Ruby Revision 96d57e24 (git): Make rb_str_no_gvl_safe_acquire public C API
This commit renames rb_str_tmp_frozen_no_embed_acquire to rb_str_no_gvl_safe_acquire
and makes it part of the public C API.
There is currently no way for C extensions that use no GVL operations to
safely read from a string because it ha...
peterzhu2118 (Peter Zhu)
12:27 AM Ruby Revision 2881099d (git): [DOC] Harmonize utime doc
burdettelamar (Burdette Lamar)
12:21 AM Ruby Feature #22399 (Open): Iterator Methods for String Bit Operations
PR URL: https://github.com/ruby/ruby/pull/19161
### What this adds
The original proposal (#22082) listed this iterator group. Matz asked for a minimal subset in #22082#note-13, and the proposal deferred the group in #22082#note-14....
hasumikin (hitoshi hasumi)
12:02 AM Ruby Revision 2db3072c (git): ZJIT: Stop constant-folding LoadField from frozen objects (#19129)
k0kubun (Takashi Kokubun)
 

Also available in: Atom