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 ... -
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... -
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. ... -
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... -
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... -
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... -
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 ... -
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... - 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... -
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.
-
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... -
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).
-
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... -
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... -
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.
-
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... -
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`? -
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.
-
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... -
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> -
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 ... -
02:36 PM Ruby Revision 9d46512a (git): [ruby/json] Fix RFC 8785 number formatter spelling
- https://github.com/ruby/json/commit/3e3807c82a
-
02:36 PM Ruby Revision 432e0dc5 (git): [ruby/json] Sort RFC 8785 object properties by their keys
- https://github.com/ruby/json/commit/808577ae1d
-
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
-
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... -
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
-
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... -
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... -
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.
-
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.
... -
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
-
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... -
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... -
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
-
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... -
01:03 PM Ruby Revision 1ebc88b5 (git): [ruby/json] Preserve float precision in RFC 8785 number formatting
- https://github.com/ruby/json/commit/193df55852
-
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... -
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... -
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... -
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:... -
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. -
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...
-
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? -
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...
-
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... -
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... -
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. -
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... -
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] -
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... -
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.
-
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. -
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... -
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...
-
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. -
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... -
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.
-
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> -
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... -
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...
-
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. -
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... -
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... - 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 -
01:00 AM Ruby Revision 8ddc747b (git): [DOC] Doc for File::Stat#gid
-
12:59 AM Ruby Revision 01a0ccfe (git): [DOC] Harmonize grpowned? methods
-
12:56 AM Ruby Revision 119e1763 (git): [DOC] Harmonize ftype methods
-
12:54 AM Ruby Revision c359fea0 (git): [DOC] Harmonize file? methods
-
12:48 AM Ruby Revision e24c2eef (git): [DOC] Harmonize directory? methods
-
12:34 AM Ruby Revision b0b0969a (git): [DOC] Doc for File::Stat#dev*
10/06/2026
- 11:37 PM Ruby Revision 757d3614 (git): * remove trailing spaces. [ci skip]
- 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"... -
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) -
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 ... -
11:00 PM Ruby Revision d0e8537b (git): Add YJIT on mswin to NEWS
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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... -
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... -
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. -
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> -
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> -
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>
-
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.... -
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> -
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> -
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 ... -
09:11 PM Ruby Revision bfa11c72 (git): Document YJIT on mswin
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
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... -
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... -
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-... -
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...
-
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... -
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 ...
-
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...
-
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...
-
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...
-
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> -
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 ...
-
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...
-
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... -
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> -
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...
-
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).
-
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... -
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. -
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... -
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... -
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. -
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... -
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. -
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... -
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) -
01:01 PM Ruby Revision 9d534546 (git): [ruby/json] Report the attempted depth in generator nesting errors
- https://github.com/ruby/json/commit/37a48ef6b8
-
12:09 PM Ruby Revision a51a35c5 (git): [ruby/json] Reject non-ASCII BINARY strings during JSON generation
- https://github.com/ruby/json/commit/8bab92d63b
-
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...
-
10:53 AM Ruby Revision 3504615b (git): [DOC] Doc for File::Stat#blksize
-
10:48 AM Ruby Revision ebec1ec0 (git): [DOC] Harmonize blockdev? methods
-
10:45 AM Ruby Revision 45e01710 (git): [DOC] Doc for File::Stat#blocks
-
10:42 AM Ruby Revision 7032a3bd (git): [DOC] Harmonize chardev? methods
-
10:29 AM Ruby Revision 7907b51b (git): [DOC] Harmonize birthtime methods
-
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... - 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 ... -
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
-
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 ...
-
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?
-
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... -
08:19 AM Ruby Bug #22407 (Assigned): IO::Buffer#set_value does not call to_int for 128-bit values
-
08:09 AM Ruby Bug #22403 (Assigned): Ruby::Box: a class that gets a box-specific classext is never freed
-
08:06 AM Ruby Bug #22396 (Assigned): Using rb_postponed_job_trigger causes YJIT/ZJIT compiled methods side exits
-
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!
-
07:36 AM Ruby Revision 28da13e7 (git): [ruby/erb] Respect ERB tag boundaries when detecting magic comments
- https://github.com/ruby/erb/commit/934d51e24b
-
07:35 AM Ruby Bug #22326 (Closed): heap buffer overflow in array.values_at()
-
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... -
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 ... -
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... -
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> - 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... - 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... -
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...
-
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> -
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> -
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... -
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 ... -
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] - 03:14 AM Ruby Revision d7128957 (git): Fix IO#set_encoding ignoring conversion options for Encoding objects (#19215)
- [Bug #22209]
-
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...
-
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...
- 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... -
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> -
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...
-
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> - 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...
-
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...
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... -
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... -
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... -
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#... -
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... -
03:26 PM Ruby Revision 2c1e694a (git): [ruby/json] Exclude custom instance variables from State#to_h
- https://github.com/ruby/json/commit/08e72297b2
-
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
-
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 -
11:20 AM Ruby Revision c68a89fa (git): [ruby/mmtk] Make StickyImmix default GC plan
- https://github.com/ruby/mmtk/commit/537eae4e0a
-
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... -
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... -
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... -
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... -
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...
-
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...
-
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> -
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...
-
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> -
06:58 AM Ruby Revision 06348d01 (git): Remove unused vendor Gemfiles
- Ruby core does not invoke the RubyGems vendoring workflow.
-
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> -
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... -
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... -
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... -
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... -
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... -
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... -
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...
-
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... -
03:38 AM Ruby Revision 3ce63c09 (git): [DOC] Harmonize atime methods- #19206
-
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... -
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> -
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...
-
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...
- 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,... -
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... -
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.
-
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.
10/04/2026
-
11:48 PM Ruby Revision d042982b (git): [DOC] Tweaks for File::Stat#<=>
-
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> -
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...
-
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... -
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... -
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... -
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...
-
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. -
10:46 AM Ruby Revision 75c12fd8 (git): [DOC] Tweaks for File::Stat.new
-
10:46 AM Ruby Revision f1cd40b4 (git): [DOC] Remove references to helper method (no longer exists)
-
10:44 AM Ruby Revision 9c89af1a (git): [DOC] Tweaks for File::Stat doc
-
10:43 AM Ruby Revision 666b35c2 (git): [DOC] Remove helper method (no longer exists)
-
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.
-
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... -
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.
-
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.
-
09:37 AM Ruby Revision 002ae526 (git): [DOC] Remove helper display method - #19189
-
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. -
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... -
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...
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> -
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... -
04:48 PM Ruby Revision d06e3f2a (git): Isolate coroutine test
- Create coroutine test files under the dedicated directory.
-
08:20 AM Ruby Revision 9b8b0ae4 (git): [ruby/mmtk] Implement mmtk_is_pinned
- https://github.com/ruby/mmtk/commit/dedb6123d6
- 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... -
01:14 AM Ruby Revision c6a042f7 (git): Remove dead ROBJECT_EMBED_LEN_MAX macro
-
01:14 AM Ruby Revision a16ed993 (git): Remove dead ROBJECT_FIELDS_CAPACITY macro
-
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> -
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> -
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... -
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... -
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> -
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> -
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> -
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> -
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> -
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> -
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... -
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> -
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>
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...
-
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...
-
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... -
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. - 09:46 PM Ruby Revision 5b6f5935 (git): Introduce (internal) `IO::Buffer::Storage` and `Slice`. (#19186)
-
09:43 PM Ruby Revision 801356f3 (git): Relax the flaky test threshold on RHEL 10.0 x86_64
- (cherry picked from commit acd0c68a074cd47fba486d4d77895e2709be873a)
-
09:43 PM Ruby Revision d47f9727 (git): Fix write barrier in update_classvariable_cache
- (cherry picked from commit f0a71599b1f4afefddca73c7050a94973c5eefce)
- 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... - 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 -
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... -
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... - 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... -
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
-
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 ... -
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 ... -
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-... -
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
-
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.
-
07:11 AM Ruby Revision 2192dca2 (git): [ruby/mmtk] Fix rustsrcs in extconf.rb
- https://github.com/ruby/mmtk/commit/7e9aadd29e
-
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 -
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 ... -
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... -
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... -
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> -
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 ... -
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... -
06:03 AM Ruby Revision 6c92d5b7 (git): Release ALLOCV buffer
- Release `ALLOCV` buffers promptly when they are no longer needed.
-
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... -
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... -
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. -
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...
-
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...
- 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... -
02:03 AM Ruby Revision f1b9ce46 (git): ZJIT: Don't retain Proc and IFUNC block handlers in profiles (#19148)
- 01:58 AM Ruby Revision 3c01c256 (git): Add `IO::Buffer#advance`. (#19122)
-
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...
-
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>
-
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> -
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>
-
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...
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... -
10:36 PM Ruby Revision 321a6665 (git): Test rbbt on ZJIT frames
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
10:36 PM Ruby Revision 901acf56 (git): Test rbbt in test_lldb_cruby.rb
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
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> -
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 ... -
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... -
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> - 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... -
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> -
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> -
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... -
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> -
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...
- 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. -
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.
-
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... -
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) -
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 ... -
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... -
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'
``` -
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`. -
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 -
11:07 AM Ruby Revision 12779089 (git): Use assert_in_ractor in test_gc.rb
-
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. -
10:05 AM Ruby Revision f61ac22c (git): Avoid potentially type-punning casts
-
10:05 AM Ruby Revision badce4d0 (git): Add a more defensive GC guard
-
10:04 AM Ruby Revision 3ea4bc3f (git): [Bug #22388] Fix use-after-free in `Set#&`
-
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) ✅ -
08:27 AM Ruby Revision 9267f6fb (git): [Bug #22388] Fix use-after-free in `Enumerator::Lazy#flat_map`
-
07:15 AM Ruby Revision 05479caf (git): [ruby/json] Remove the leading space from Fragment conversion errors
- https://github.com/ruby/json/commit/0c46c27fae
-
07:15 AM Ruby Revision d7e3bfc7 (git): [ruby/json] Correct State as_json and depth setter documentation
- https://github.com/ruby/json/commit/3643231dfd
- 07:05 AM Ruby Revision 6d438b5b (git): [DOC] Update bundled gems list at ad5851e797855e0e27a6569fd87588
-
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...
-
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... -
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 ... -
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
-
06:21 AM Ruby Revision f452e540 (git): [ruby/json] Prevent ResumableParser from stalling on invalid object keys
- https://github.com/ruby/json/commit/452f31b569
-
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> -
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> -
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... -
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... -
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.... -
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...
- 04:48 AM Ruby Revision 92a38492 (git): [ruby/rubygems] Add `sparse_checkout` option for Bundler git sources
- https://github.com/ruby/rubygems/commit/ca639667f5
-
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... -
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... -
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... -
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> -
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
... - 04:29 AM Ruby Revision b33ab420 (git): [ruby/rubygems] Rename InvalidFileNameError to InvalidWindowsFileNameError for clarity
- https://github.com/ruby/rubygems/commit/559662e2f6
- 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 -
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> -
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... - 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 - 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...
- 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...
-
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...
-
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 ... -
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... -
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...
-
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 ...
-
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...
- 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... -
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...
-
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> -
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 ...
-
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> -
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> -
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...
-
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... -
12:27 AM Ruby Revision 2881099d (git): [DOC] Harmonize utime doc
-
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.... -
12:02 AM Ruby Revision 2db3072c (git): ZJIT: Stop constant-folding LoadField from frozen objects (#19129)