Project

General

Profile

Activity

From 03/27/2026 to 04/02/2026

Today

01:22 PM Ruby Feature #21976: Add $SECONDS, $RANDOM, and other bashisms
Sorry to be late: https://github.com/nobu/bashism nobu (Nobuyoshi Nakada)
11:56 AM Ruby Bug #21933: Ruby::Box: named capture local variable can become nil after non-matching lines
I opened a pull request with a fix and regression test for this issue:
https://github.com/ruby/ruby/pull/16644
afurm (Andrii Furmanets)
11:17 AM Ruby Revision e866d953 (git): Prism: Close the open file once finished reading
nobu (Nobuyoshi Nakada)
11:08 AM Ruby Bug #21974 (Closed): Cannot inspect RubyVM::AST for CDECL
Applied in changeset commit:git|4009b713a64f469e593ffbc5bb4b37eff43f3be3.
----------
[Bug #21974] Fix RubyVM::AST inspection for ::Foo = 1 (#16642)
* Fix AST CDECL children for top-level constants
* Simplify cdecl AST regression test
afurm (Andrii Furmanets)
09:00 AM Ruby Bug #21974: Cannot inspect RubyVM::AST for CDECL
I have created a fix for this https://github.com/ruby/ruby/pull/16642 afurm (Andrii Furmanets)
11:08 AM Ruby Revision 4009b713 (git): [Bug #21974] Fix RubyVM::AST inspection for ::Foo = 1 (#16642)
* Fix AST CDECL children for top-level constants
* Simplify cdecl AST regression test
afurm (Andrii Furmanets)
05:36 AM Ruby Revision 3319be01 (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.70.4 to 2.71.1
- [Release notes](https://github.com/taiki-e/i...
dependabot[bot]
04:49 AM Ruby Revision b7eb96ec (git): Our test suite is broken with rb_sys-0.9.125 bacause we can't build json extension
hsbt (Hiroshi SHIBATA)
04:37 AM Ruby Feature #21979 (Open): `String#unpack`/`String#unpack1` should allow negative offset
https://bugs.ruby-lang.org/issues/18254#note-14
I think `String#unpack`/`String#unpack1` should allow negative offset as well as the other methods, for example `String#slice` that is referred to in the description.
[ruby/ruby#16641]...
nobu (Nobuyoshi Nakada)
04:30 AM Ruby Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
I wasn't aware that negative offset is not allowed.
Shouldn't `unpack`/`unpack1` also allow it as well as the other methods, `String#slice`, `String#[]` and so on?
nobu (Nobuyoshi Nakada)
04:13 AM Ruby Bug #20948 (Closed): Constant references incorrectly cached in `module (expr)::Foo`
Applied in changeset commit:git|91ae69860591f0dfc85571cfbd023dd199e17e73.
----------
Use compile-time flag to indicate dynamic CREFs
The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic...
jhawthorn (John Hawthorn)
04:13 AM Ruby Revision 91ae6986 (git): Use compile-time flag to indicate dynamic CREFs
The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic_cref stored and checked on every IC hit.
This caused the `class << self` pattern to create inline caches which
requires extra checks a...
jhawthorn (John Hawthorn)
03:56 AM Ruby Revision 07e52c81 (git): Fix `TestSocket#test_bintime`
`String#unpack` does not allow negative offset. nobu (Nobuyoshi Nakada)
03:17 AM Ruby Revision 81df2bda (git): [ruby/rubygems] Bump the rb-sys group across 2 directories with 1 update
Bumps the rb-sys group with 1 update in the /test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib directory: [rb-sys](https://github.com/oxidize-rb/rb-sys).
Bumps the rb-sys group with 1 update in the /test/rubygems/t...
dependabot[bot]
02:53 AM Ruby Revision b59fe8e7 (git): [ruby/rubygems] Handle empty result gracefully in gem pristine --only-missing-extensions
When no gems have missing extensions (e.g. on JRuby where
missing_extensions? always returns false), display an informational
message instead of raising Gem::Exception.
https://github.com/ruby/rubygems/commit/738d2dbdf6
Co-Authored-By:...
hsbt (Hiroshi SHIBATA)
02:53 AM Ruby Revision cb75f04f (git): [ruby/rubygems] Skip missing_extensions? check on JRuby
JRuby does not require extension rebuilds when switching JRuby or Java
versions because Java extensions are shipped pre-compiled and JRuby does
not expose a version-specific C API. This means missing_extensions?
returning true on JRuby i...
hsbt (Hiroshi SHIBATA)
02:53 AM Ruby Revision 79c0a025 (git): [ruby/rubygems] Use IO.copy_stream to drain remaining gzip data instead of read
Replace gzio.read with IO.copy_stream(gzio, IO::NULL) to avoid
allocating a potentially large string when discarding unconsumed
compressed data.
https://github.com/ruby/rubygems/commit/e4d0196887
Co-Authored-By: Claude Opus 4.6 (1M con...
hsbt (Hiroshi SHIBATA)
02:53 AM Ruby Revision 9233eae6 (git): [ruby/rubygems] Consume remaining gzip data in open_tar_gz to suppress zlib warning
When a GzipReader is closed before all compressed data is consumed,
zlib emits "attempt to close unfinished zstream; reset forced" warning.
This happens in open_tar_gz because the TarReader stops reading at the
end-of-archive marker, lea...
hsbt (Hiroshi SHIBATA)
02:43 AM Ruby Revision 27f24a37 (git): [ruby/rubygems] Fix incompatible function pointer type error with Xcode 26.5 beta
Xcode 26.5 beta ships a clang that promotes -Wincompatible-function-pointer-types to an error by default. The test's inline C extension defined `VALUE foo()` (taking no arguments) but passed it to `rb_define_global_function` which expect... hsbt (Hiroshi SHIBATA)
02:21 AM Ruby Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules
Applied in changeset commit:git|dd3542a0cd00b40d406763e85ac12a1086bab682.
----------
Fix class variable cache not invalidated by class_variable_set
The previous invalidation walked subclasses but missed cvars from
included modules, and...
jhawthorn (John Hawthorn)
02:21 AM Ruby Revision dd3542a0 (git): Fix class variable cache not invalidated by class_variable_set
The previous invalidation walked subclasses but missed cvars from
included modules, and skipped invalidation when creating a new cvar on
modules entirely. Always invalidate when a new class variable is
created, since this should be relat...
jhawthorn (John Hawthorn)
12:18 AM Ruby Revision f0c73671 (git): Revert "ZJIT: Clean up branching in polymorphic opt_send_without_block HIR construction (#16634)"
This reverts commit 77b803cfc833233a49b497a9342f16c9237833e6.
There is a new NULL dereference in tool/test/testunit/test_sorting.rb
that seem to have started with this commit.
alanwu (Alan Wu)

04/01/2026

11:37 PM Ruby Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
Dan0042 (Daniel DeLorme) wrote in #note-3:
> Indeed, but I believe "UTF-八" would be a better alias here
Fully agree. I was just too lazy to go figure out the full-width hyphen, sorry.
duerst (Martin Dürst)
02:09 PM Ruby Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
duerst (Martin Dürst) wrote in #note-2:
> I think it's a good idea to allow "UTF-八" (and probably also full-width "UTF-八") as an alternative to "UTF-8" for internal Ruby use.
Indeed, but I believe "UTF-八" would be a better alias here...
Dan0042 (Daniel DeLorme)
06:36 AM Ruby Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
Thanks to @ko1 for this timely news. It looks like the current Japanese government is recently taking some steps that in some ways have felt long overdue. On December 22, 2025, they changed the Romanization used by the Government from 'K... duerst (Martin Dürst)
01:50 AM Ruby Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
ko1 (Koichi Sasada) wrote:
> In Japan, legal texts must write all characters - including digits - using full-width or kanji forms. As a result, the encoding name "UTF-8"
> ...
Should "UTF-" also be full-width ("UTF−")?
jinroq (Jinroq SAITOH)
11:29 PM Ruby Revision 25ca647d (git): ZJIT: Hook into GC W^X callbacks for compaction (#16635)
k0kubun (Takashi Kokubun)
11:28 PM Ruby Revision c3413996 (git): Fix memory leak in pm_parse_process
pm_parse_process initializes the index_lookup_table but nothing seems to
use it after it has been allocated. However, pm_compile_scope_node will
overwrite the index_lookup_table and cause it to leak memory. This can
be seen during bootup...
peterzhu2118 (Peter Zhu)
08:56 PM Ruby Revision 77b803cf (git): ZJIT: Clean up branching in polymorphic opt_send_without_block HIR construction (#16634)
We have global regalloc now and don't need this manual threading. Max Bernstein
07:10 PM Ruby Bug #21971 (Closed): Backport commit 5de4cc560864 / PR #15848
Forgot to close byroot (Jean Boussier)
06:50 PM Ruby Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules

```ruby
module M; @@x = 1; end
class A; end
class B < A
include M
def self.x; @@x; end
end
B.x # warm cache
A.class_variable_set(:@@x, 2)
B.x
```
The last call to `B.x` should fail with `Should raise: class variable ...
jhawthorn (John Hawthorn)
05:47 PM Ruby Revision 1bb1f6c4 (git): [ruby/prism] Emit `on_kw` for ripper
`yard` uses it
Start checking against the ordering of the events and also their location.
I didn't fix any of the preexisting failures and just ignored them. Some are easy to fix, others look like particularities of ripper
that I don't...
Earlopain (Earlopain _)
05:08 PM Ruby Revision 6e18d5f5 (git): ZJIT: Remove old unused graphviz code (#16630)
We use iongraph now. Max Bernstein
02:13 PM Ruby Revision a8f3c345 (git): ZJIT: Add missing guard on ivar access on T_{DATA,CLASS,MODULE}
T_DATA, T_MODULE, and T_CLASS objects can share the exact same shape.
The shape on these objects give an index off of the fields array to
get at the ivar. When two objects share the same shape, but differ
in the T_* builtin type, however...
alanwu (Alan Wu)
02:03 PM Ruby Revision 8824fd3b (git): [ruby/prism] Generate templated sources under main/java-templates
This path avoids the sources getting wiped out during `mvn clean`,
since they are not generated during the maven build.
This patch also moves the generated WASM build under src/main/wasm
since it is really a source file and not a test f...
headius (Charles Nutter)
11:34 AM Ruby Revision 9224d90f (git): Refactor socket timestamp tests
- Avoid unnecessarily binding sender sockets, as ephemeral ports can
very occasionally conflict on Linux. This investigation is assisted
by Claude Code.
- Compare timestamps using a range instead of relying on `inspect`.
- Use the `...
nobu (Nobuyoshi Nakada)
11:14 AM Ruby Revision ce398d75 (git): [ruby/prism] Remove a warning from `discarded-qualifiers`
I've been seeing this for a while now:
```
../../../../ext/prism/../../src/memchr.c: In function ‘pm_memchr’:
../../../../ext/prism/../../src/memchr.c:35:16: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarde...
Earlopain (Earlopain _)
10:44 AM Ruby Bug #21818 (Closed): Thread backtraces cannot be communicated over Ractor ports
Applied in changeset commit:git|9a2ffd8e5448e0c2ac4ae58d0ef02afc195f2cb8.
----------
Fix sending backtraces across ractors
[Bug #21818]
Currently exceptions can be sent across ractors,
but because of a limitation in the TypedData API,...
byroot (Jean Boussier)
10:43 AM Ruby Revision 9a2ffd8e (git): Fix sending backtraces across ractors
[Bug #21818]
Currently exceptions can be sent across ractors,
but because of a limitation in the TypedData API,
the exception backtrace is duped as an empty backtrace.
The problem is that backtraces are embedded objects,
hence the clas...
byroot (Jean Boussier)
09:46 AM Ruby Bug #21977 (Assigned): Ruby::Box crash with `RUBY_BOX=1` via `Binding` refinement, `UnboundMethod#bind_call`, and `Symbol#to_proc`
mame (Yusuke Endoh)
09:44 AM Ruby Bug #21977 (Assigned): Ruby::Box crash with `RUBY_BOX=1` via `Binding` refinement, `UnboundMethod#bind_call`, and `Symbol#to_proc`
## Summary
I found a reproducible interpreter crash when Ruby is run with `RUBY_BOX=1`.
A refinement on `Binding`, combined with `UnboundMethod#bind_call` and `Symbol#to_proc`, causes Ruby to abort with:
```text
[BUG] BUG: Loca...
singetu0096 (Rintaro Kawasugi)
07:26 AM Ruby Revision 3f1acedb (git): [ruby/rubygems] Use gem exec --conservative for sigstore-cli instead of pinning version
Hardcoding sigstore-cli:0.2.2 meant rubygems would need a new release
whenever sigstore-cli ships a new version. Using --conservative lets
gem exec prefer an already-installed version and falls back to the
latest when sigstore-cli is not...
hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision a27f303f (git): [ruby/rubygems] Normalize host comparison in attestation_supported_host?
The method compared against a hardcoded string, so a trailing slash
(e.g. "https://rubygems.org/") would cause auto-attestation to be
silently skipped. Now we chomp the trailing slash and compare against
Gem::DEFAULT_HOST to be consisten...
hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision b9358e9f (git): [ruby/rubygems] Show only error message on attestation failure unless verbose
When auto-attestation fails, the warning previously included
e.full_message with a full backtrace that could be noisy and expose
local paths. Now only e.message is shown by default, and the full
backtrace is included only when Gem.config...
hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision 80472134 (git): [ruby/rubygems] Honor explicit --attestation option regardless of platform and host
The send_push_request method previously skipped all attestation handling
on JRuby, non-rubygems.org hosts, or outside GitHub Actions. This meant
that even when a user explicitly passed --attestation with a local
sigstore bundle, the atte...
hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision 54ce9113 (git): [ruby/rubygems] Reverse to use attestation condition
https://github.com/ruby/rubygems/commit/ea1f43c4ae hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision d2f9872e (git): [ruby/rubygems] Omit tests of auto-attestation with JRuby
https://github.com/ruby/rubygems/commit/543ac52412 hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision 6ef9fe59 (git): [ruby/rubygems] Use Tempfile for auto-attestation bundles and clean up after use
https://github.com/ruby/rubygems/commit/498401c010
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com>
copilot-swe-agent[bot]
07:26 AM Ruby Revision c4eeb675 (git): [ruby/rubygems] Remove raise from stub to rely on flag for test assertions
https://github.com/ruby/rubygems/commit/7ebc1abafd
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com>
copilot-swe-agent[bot]
07:26 AM Ruby Revision e35eaf56 (git): [ruby/rubygems] Added test for auto-attestation
https://github.com/ruby/rubygems/commit/df2bdde8e5 hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision bf617311 (git): [ruby/rubygems] Add test coverage for skipping auto-attestation
https://github.com/ruby/rubygems/commit/6cd04a57da
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com>
copilot-swe-agent[bot]
07:26 AM Ruby Revision 2041c877 (git): [ruby/rubygems] Refactor push request to support attestations
https://github.com/ruby/rubygems/commit/74924da660 hsbt (Hiroshi SHIBATA)
07:26 AM Ruby Revision a9b8d47d (git): [ruby/rubygems] Merge rubygems-attestation-patch.rb from rubygems/release-gem
https://github.com/ruby/rubygems/commit/64f085f5ee hsbt (Hiroshi SHIBATA)
07:10 AM Ruby Feature #21861 (Closed): C API: expose `ruby_xfree_sized`, `ruby_xrealloc_sized`, etc
Applied in changeset commit:git|53099633e208b43e26a8ee3c6fdd936e2943b0d5.
----------
Make `ruby_xfree_sized` and `ruby_xrealloc_sized` public
[Feature #21861]
byroot (Jean Boussier)
07:10 AM Ruby Revision 53099633 (git): Make `ruby_xfree_sized` and `ruby_xrealloc_sized` public
[Feature #21861] byroot (Jean Boussier)
04:24 AM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
duerst (Martin Dürst) wrote in #note-6:
> Here is another proposal: Why not count using administrative/fiscal years? The administrative/fiscal year (年度 ('nendo') in Japanese, as opposed to simply 年 for (calendar) year) starts on April 1...
jinroq (Jinroq SAITOH)
02:29 AM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
Here is another proposal: Why not count using administrative/fiscal years? The administrative/fiscal year (年度 ('nendo') in Japanese, as opposed to simply 年 for (calendar) year) starts on April 1st.
As an example, 1993-02-24 to 1993-3-...
duerst (Martin Dürst)
02:26 AM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
jinroq (Jinroq SAITOH) wrote in #note-4:
> > Under current Japanese law, a person's age increases at midnight on the day before their birthday. However, it might be better to use the traditional 'Kazeidoshi' (East Asian age reckoning) ...
shugo (Shugo Maeda)
12:24 AM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
shugo (Shugo Maeda) wrote in #note-2:
> Under current Japanese law, a person's age increases at midnight on the day before their birthday. However, it might be better to use the traditional 'Kazeidoshi' (East Asian age reckoning) syste...
jinroq (Jinroq SAITOH)
12:14 AM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
ufuk (Ufuk Kayserilioglu) wrote in #note-1:
> I think these methods should live on the new `Ruby` module as `Ruby.birthday` and `Ruby.age` instead:
> ...
That's a great insight! Moving these to a Ruby module makes the intent much clear...
jinroq (Jinroq SAITOH)
04:20 AM Ruby Revision 2477916e (git): pty: Fix missing arguments
nobu (Nobuyoshi Nakada)
04:20 AM Ruby Revision 1a668dee (git): pty: Rename as the purpose
This function prevents other users from opening this device for
writing so not to be sent messages using commands such as `talk` or
`wall`.
nobu (Nobuyoshi Nakada)
02:32 AM Ruby Revision 05086ee8 (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.70.3 to 2.70.4
- [Release notes](https://github.com/taiki-e/i...
dependabot[bot]
01:51 AM Ruby Feature #21976: Add $SECONDS, $RANDOM, and other bashisms
Did you think you could fly under the radar with that semi-colon?
That's not acceptable corner to cut.
For proper POSIX shell compatibility, it's imperative that the Ruby grammar be extended to accept `:` as a bare keyword, equivalent ...
AMomchilov (Alexander Momchilov)
01:14 AM Ruby Feature #21976 (Open): Add $SECONDS, $RANDOM, and other bashisms
Some time ago there was a lot of discussion around a script named [safe_sleep.sh](https://github.com/actions/runner/blob/af6c8e6eddef233fdef862c1287d9b013c8aabff/src/Misc/layoutroot/safe_sleep.sh) in the GitHub Actions runner. Like [many... jhawthorn (John Hawthorn)
12:57 AM Ruby Revision 20af0e90 (git): Add retry logic to stdgems.org curl requests in CI
The curl requests to stdgems.org occasionally fail with connection
errors, causing spurious CI failures. Add curl's built-in retry
flags to handle transient network issues with exponential backoff.
example:
https://github.com/ruby/ruby/...
k0kubun (Takashi Kokubun)
12:51 AM Ruby Revision 60de70c5 (git): [ruby/rubygems] Improve error message when current platform is not in lockfile
Fixes https://github.com/ruby/rubygems/pull/9413
https://github.com/ruby/rubygems/commit/02d2179047
Kenta Ishizaki
12:36 AM Ruby Revision 7683ab75 (git): ZJIT: Side-exit sends with blocks to non-block methods (#16624)
When the caller passes a block to a method that either rejects blocks
(`&nil` parameter, `accepts_no_block`) or doesn't use them (`use_block`
is false), ZJIT now falls back to the interpreter instead of compiling
a direct send. This ensu...
k0kubun (Takashi Kokubun)
12:29 AM Ruby Revision 88efe89d (git): post_push.yml: Use continue-on-error for flaky steps
"Sync git.ruby-lang.org" and "Push PR notes to GitHub" steps can
fail due to transient issues, which blocks execution of all
subsequent steps. Use continue-on-error so the rest of the workflow
still runs, and add a "Check for failures" s...
k0kubun (Takashi Kokubun)
12:24 AM Ruby Revision f6ddb9c6 (git): prism_compile.c: Fix -Wmaybe-uninitialized warning in pm_compile_call
Initialize `end_cursor` to 0. It is guarded by `end_found` but the
compiler cannot prove `end_found` is always true when `end_cursor` is
read.
k0kubun (Takashi Kokubun)
12:24 AM Ruby Revision 1389a36b (git): sprintf.c: Fix -Wmaybe-uninitialized warnings in rb_str_format
Initialize `c` and `encidx` to 0. They are assigned inside
`if (n >= 0)` and the following `if (n <= 0)` calls rb_raise, but the
compiler cannot see through the noreturn guarantee.
k0kubun (Takashi Kokubun)
12:24 AM Ruby Revision 6a5a2612 (git): variable.c: Fix -Wmaybe-uninitialized warnings in rb_gvar_set/rb_gvar_get
Initialize `entry` and `var` to NULL. They are assigned inside
RB_VM_LOCKING() but used after it, and the compiler cannot prove the
locked block always executes.
k0kubun (Takashi Kokubun)
12:10 AM Ruby Revision d926f407 (git): [ruby/mmtk] Add moving_gc_count to GC.stat
Outputs the number of GC cycles that are moving.
https://github.com/ruby/mmtk/commit/fef8f04186
peterzhu2118 (Peter Zhu)

03/31/2026

11:57 PM Ruby Misc #21975 (Open): Add "UTF-八" as an alias for UTF-8 encoding
In Japan, legal texts must write all characters - including digits - using full-width or kanji forms. As a result, the encoding name "UTF-8"
appears as "UTF-八" (八 = eight in kanji) in official government notices.
Specifically, it a...
ko1 (Koichi Sasada)
11:32 PM Ruby Revision 78f11bde (git): ZJIT: Support VM_OPT_NEWARRAY_SEND_PACK (#16596)
Nozomi Hijikata
11:30 PM Ruby Feature #21005: Update the source location method to include line start/stop and column start/stop details
With this implemented and then removed after Ruby 4.0.0, Preview 2, is this still planned for completion? Would really like to have this but unclear on the current plan. I assume we will have to wait until Ruby 4.1.0 at best? bkuhlmann (Brooke Kuhlmann)
11:09 PM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
Under current Japanese law, a person's age increases at midnight on the day before their birthday. However, it might be better to use the traditional 'Kazeidoshi' (East Asian age reckoning) system, as its logic is much simpler. shugo (Shugo Maeda)
03:43 PM Ruby Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
I think these methods should live on the new `Ruby` module as `Ruby.birthday` and `Ruby.age` instead:
```ruby
puts "Today: #{Date.today}" # => Today: 2026-04-01
# Check the "age" of Ruby
puts "Age: #{Ruby.age}" # =>...
ufuk (Ufuk Kayserilioglu)
03:01 PM Ruby Feature #21972 (Open): Add Date.birthday and Date.age to track Ruby's milestones
Since its inception in 1993, Ruby has grown beyond a mere programming language to become a rich culture beloved by developers worldwide. However, the standard `date` library surprisingly lacks a formal interface to commemorate Ruby's own... jinroq (Jinroq SAITOH)
11:05 PM Ruby Revision 3a0b003a (git): auto_request_review.yml: Fix and use last_files_match_only
https://github.com/necojackarc/auto-request-review/pull/135 fixes
last_files_match_only. Let's use a fork to fix it until it gets merged.
k0kubun (Takashi Kokubun)
11:05 PM Ruby Revision e191769e (git): auto_request_review.yml: Clarify the meaning of the "Skip" comment
by explicitly adding no-op entries, rather than leaving the line empty,
which may seem like lines that have been deleted.
k0kubun (Takashi Kokubun)
09:48 PM Ruby Revision c9ae44e1 (git): set: fix Set#to_set block behavior and add regression test
rwstauner (Randy Stauner)
09:45 PM Ruby Revision bcddc56f (git): vm: avoid allocator lookup for singleton class initialize methods
This fixes a SIGABRT of Assertion Failed: RCLASS_ALLOCATOR:!RCLASS_SINGLETON_P(klass) rwstauner (Randy Stauner)
07:58 PM Ruby Bug #21974 (Closed): Cannot inspect RubyVM::AST for CDECL
```
./ruby -e 'pp RubyVM::AbstractSyntaxTree.parse("::Foo = 1")'
```
and
```
./ruby -e 'p RubyVM::AbstractSyntaxTree.parse("::Foo = 1").children[2].children'
```
both crash
kddnewton (Kevin Newton)
06:56 PM Ruby Revision 0364a612 (git): ZJIT: Clean up branching in HIR construction (#16616)
We have the global register allocator now and don't need to thread everything through manually as block params. Simplify HIR construction. Max Bernstein
06:48 PM Ruby Feature #21973: Smile argument
My email client does not like this proposal:
<img style="width: 232px;" src="clipboard-202603312047-a8wkw.png"><br>
Maybe `:))` (even bigger smile) should be considered instead?
vo.x (Vit Ondruch)
04:05 PM Ruby Feature #21973: Smile argument
Implementation should be easy like that :)
```ruby
def q(a:, b:1)
p a:, b: #=> {a: 10, b: 20}
end
def smile_send mid, b, *params
h = {}
method(mid).parameters.each do |(type, key)|
case type
when :keyreq
...
ko1 (Koichi Sasada)
03:35 PM Ruby Feature #21973 (Open): Smile argument
Ruby makes us smile. So I want Ruby to smile too, and that is why I would like to propose this feature.
The smile argument makes Ruby smile by allowing a method call to end its argument list with `:)`.
smile_method(arg, :)
This ...
kinoppyd (Yasuhiro Kinoshita)
03:14 PM Ruby Revision 9c827a49 (git): [ruby/openssl] test_pkey_rsa.rb: Fix test_private_encoding_encrypted in OpenSSL 4.0 FIPS
OpenSSL 4.0.0 added a check for Password-Based Key Derivation Function 2
(PBKDF2) to require the minimal password length 8 in FIPS by the following
commit.
https://github.com/openssl/openssl/commit/71ed0fc8b3cdb33cd06059416686f8972ede024...
Jun Aruga
03:14 PM Ruby Revision 5973d619 (git): [ruby/openssl] ssl: fix test_tmp_dh and test_tmp_dh_callback with OpenSSL 4.0
OpenSSL master added support for RFC 7919 groups in TLS 1.2. They are
preferred over SSLContext#tmp_dh= or #tmp_dh_callback= values if the
client advertises them in the supported_groups extension.
https://github.com/ruby/openssl/commit/...
rhenium (Kazuki Yamaguchi)
03:14 PM Ruby Revision b41b1430 (git): [ruby/openssl] asn1: use new ASN1_BIT_STRING accessor functions with OpenSSL 4.0
ASN1_STRING has been made opaque in OpenSSL's master branch. Use the
new accessor functions instead of accessing fields directly.
Other uses of ASN1_STRING fields were already updated in
<https://github.com/ruby/openssl/pull/978>. This ...
rhenium (Kazuki Yamaguchi)
03:14 PM Ruby Revision f17a0af9 (git): [ruby/openssl] pkey: remove unnecessary prototype from ossl_pkey.h
ossl_ec_new() was removed in commit https://github.com/ruby/openssl/commit/94aeab2f265d (pkey: simplify
ossl_pkey_new(), 2017-03-16), but it forgot to remove the declaration
while doing so.
https://github.com/ruby/openssl/commit/faad7a0811
rhenium (Kazuki Yamaguchi)
03:14 PM Ruby Revision de1d14c0 (git): [ruby/openssl] Add const qualifiers for OpenSSL 4.0 compatibility
OpenSSL's master branch is changing functions to return const pointers
where the returned objects are not meant to be modified by the caller.
Update ossl_*_new() to take const pointers accordingly. Unfortunately,
*_dup() in older versio...
rhenium (Kazuki Yamaguchi)
01:04 PM Ruby Revision 6afed23a (git): [ruby/rubygems] Prevent checksum for this test:
- ### Problem
This test breaks whenever checksums are computed. It didn't break
before because the gemfile in this test doesn't include any gems
(only git gems) and therefore checksum is skipped.
### Context
This test was ad...
Edouard CHIN
01:04 PM Ruby Revision 1e91f566 (git): [ruby/rubygems] Fix test suite that will start to fail whenever we attempt a release:
- ### Problem
Whenever we bump the bundler `VERSION` to a non development release,
like we recently did in [4.0.9](https://github.com/ruby/rubygems/pull/9426)
The test suite will behave differently and will break due to the
Bun...
Edouard CHIN
01:04 PM Ruby Revision b359ea34 (git): [ruby/rubygems] Skip checksum for the bundler gem if no `bundler.gem` exists on disk:
- ### Problem
This change is purely to fix a problem when developing Bundler.
When we tried to release Bundler 4.0.9, we bumped the VERSION
from `4.1.0.dev` to `4.0.9`, this condition now evaluates to false
https://github.com/ru...
Edouard CHIN
06:14 AM Ruby Revision a08f5474 (git): Ignore files with parse errors in CodeQL analysis
These test files, specs, and trace_point.rb contain intentionally
invalid syntax or special constructs that CodeQL's parser cannot
handle. They are not security-relevant and should be excluded from
analysis.
Co-Authored-By: Claude Opus ...
hsbt (Hiroshi SHIBATA)
04:06 AM Ruby Revision f41c1941 (git): pty: Prefer FD-base operations if available
nobu (Nobuyoshi Nakada)
03:45 AM Ruby Revision c6bee053 (git): Narrow CodeQL paths-ignore to only fixture directories
Keep test/ and spec/ in CodeQL analysis for better SAST coverage.
Only exclude directories containing intentionally unparseable files
such as UTF-16 encoded fixtures and bad syntax test fixtures.
Co-Authored-By: Claude Opus 4.6 (1M cont...
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision bc032028 (git): Add actions:read permission to pr-playground workflow
The github-script step calls the Actions API to list workflow runs
and download artifacts, which requires actions:read permission.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision 3ae990db (git): Remove excessive-permissions from zizmor ignore list
These four workflows now have explicit top-level permissions set
to contents:read, so the excessive-permissions finding no longer
applies.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision bd3904f1 (git): Pin cygwin-install-action to v6.1 by commit SHA
Replace @master reference with the pinned commit SHA for v6.1,
and remove cygwin.yml from the zizmor unpinned-uses ignore list
since it is now properly pinned.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision b956e19a (git): Update pinned action versions in Launchable setup
The commit SHAs did not match their version comment tags, as
flagged by zizmor ref-version-mismatch. Update all three actions
to their latest releases with correct SHAs.
- actions/setup-python v5.0.0 -> v5.6.0
- actions/setup-java v4.0....
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision b2562525 (git): Exclude test directories from CodeQL analysis
CodeQL's Ruby extractor cannot parse UTF-16 encoded fixtures,
TRICK entries, and some edge-case syntax in test files, causing
84 parse error warnings. These directories (spec/, test/, sample/,
benchmark/) are not relevant for security sc...
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision 409a0a11 (git): Suppress zizmor secrets-outside-env audit
All committers with write access to this repository are trusted,
and fork PRs cannot access secrets by default. There is no threat
model that environment-scoped secrets would mitigate here.
Co-Authored-By: Claude Opus 4.6 (1M context) <...
hsbt (Hiroshi SHIBATA)
03:45 AM Ruby Revision d47d97c9 (git): Add top-level permissions to workflows missing them
Restrict the default GITHUB_TOKEN permissions to contents:read
for workflows that had no top-level permissions block, as flagged
by Scorecard's TokenPermissionsID check.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:26 AM Ruby Revision 3b502e62 (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.70.2 to 2.70.3
- [Release notes](https://github.com/taiki-e/i...
dependabot[bot]
01:27 AM Ruby Revision 1da540ae (git): Invalidate CC on cme free as well
jhawthorn (John Hawthorn)
01:26 AM Ruby Revision 3c251f79 (git): Don't add singleton classes to subclasses list
Singleton classes don't need to be iterated in the subclasses list, we
only need to know that a subclass exists so that we can use the "method
entry" path for invalidation.
jhawthorn (John Hawthorn)
01:25 AM Ruby Revision 90f74e06 (git): [ruby/strscan] Implement compaction and embedded structs
(https://github.com/ruby/strscan/pull/201)
GC compaction was introduced in Ruby 2.7.
Embedded Structs was introduced in Ruby 3.3. When enabled, the `struct
strscanner` is stored directly inside the object slot, meaning reading
the stru...
byroot (Jean Boussier)
12:33 AM Ruby Revision f6adf1c4 (git): ZJIT: Use a slice for ISeq `opt_table` for quick one-off access
This gets rid of the copying of the entire opt_table in
function_stub_hit() since it only reads one element. HIR builder
still does a copy and that's unchanged. It needs to read the whole
table.
alanwu (Alan Wu)
12:21 AM Ruby Bug #21971: Backport commit 5de4cc560864 / PR #15848
More details by Chris in the pull request: https://github.com/ruby/ruby/pull/15848 mackuba (Kuba Suder)
12:19 AM Ruby Bug #21971 (Closed): Backport commit 5de4cc560864 / PR #15848
Follow-up to ticket: https://bugs.ruby-lang.org/issues/21824
There was a group of old commits merged before 4.0 which were meant to improve regexp performance in some cases. Unfortunately, they also greatly degraded regexp performance...
mackuba (Kuba Suder)

03/30/2026

11:39 PM Ruby Revision 34c94b31 (git): [DOC] Fix formatting in IO
Colon should be outside of the code. peterzhu2118 (Peter Zhu)
11:10 PM Ruby Revision 72f309fe (git): [DOC] Doc for Pathname class (#16352)
burdettelamar (Burdette Lamar)
08:33 PM Ruby Revision 98e55e7b (git): ZJIT: Add --zjit-max-versions option (#16607)
Allow configuring the maximum number of compiled versions per ISEQ
via --zjit-max-versions=num (default: 2). Like YJIT's equivalent,
this option is hidden from --help output.
k0kubun (Takashi Kokubun)
08:09 PM Ruby Revision d368d42e (git): ZJIT: Skip TestOpenURIProxy on Linux (#16606)
Same random SystemStackError as TestOpenURI and TestOpenURISSL. k0kubun (Takashi Kokubun)
07:28 PM Ruby Revision 89133221 (git): Run GC if fiber pool expansion fails. (#16535)
[Bug #21964] Samuel Williams
07:26 PM Ruby Revision 714b4b54 (git): ZJIT: Compile modified path in getblockparamproxy (#16573)
ZJIT: Avoid side exits on modified getblockparamproxy Nozomi Hijikata
06:57 PM Ruby Revision 258c6b0b (git): Update debug.gem sha to fix random failures
https://github.com/ruby/debug/pull/1174 k0kubun (Takashi Kokubun)
04:55 PM Ruby Revision 1cbb161e (git): Decrease the frequency of cargo updates
They're development-only dependencies. We shouldn't need to pay the
maintenance cost for such frequent updates, especially when the
dependabot PRs have failed the CI two times in a row.
k0kubun (Takashi Kokubun)
04:55 PM Ruby Revision c8976131 (git): cargo update --manifest-path zjit/Cargo.toml
k0kubun (Takashi Kokubun)
04:55 PM Ruby Revision 079ee4ba (git): Fix rand 0.10.0 compatibility in ZJIT parcopy tests
rand 0.10.0 moved `random_range` from the `Rng` trait to `RngExt`.
Update the import accordingly.
k0kubun (Takashi Kokubun)
04:55 PM Ruby Revision 7444cb9f (git): Bump the jit group across 1 directory with 2 updates
Bumps the jit group with 2 updates in the /zjit directory: [insta](https://github.com/mitsuhiko/insta) and [rand](https://github.com/rust-random/rand).
Updates `insta` from 1.47.0 to 1.47.1
- [Release notes](https://github.com/mitsuhik...
dependabot[bot]
04:28 PM Ruby Revision 33b9d2ab (git): ZJIT: Skip TestOpenURI and TestOpenURISSL (#16603)
k0kubun (Takashi Kokubun)
02:40 PM Ruby Revision f0f92435 (git): Use ubuntu-latest for macOS result jobs
The result jobs in macOS workflows only check if other jobs failed
(just runs `exit 1`). They don't need macOS runners. Using
ubuntu-latest instead frees up macOS runner slots and starts faster
due to shorter queue times.
st0012 (Stan Lo)
02:40 PM Ruby Revision 3c22172c (git): Rebalance compilation jobs in Compilations workflow
Move compilation steps from the heaviest jobs to the lightest to reduce
the critical path of the Compilations workflow.
Before: jobs ranged from 13-41 min (compile#12 had 4 steps, compile#3
had 10 clang versions).
After: jobs range fro...
st0012 (Stan Lo)
01:14 PM Ruby Revision ae9b60f1 (git): [Feature #19107] parse.y: Allow trailing comma in method signature
nobu (Nobuyoshi Nakada)
12:33 PM Ruby Revision 5b83468b (git): Adjust indent [ci skip]
nobu (Nobuyoshi Nakada)
12:31 PM Ruby Revision 05428c8e (git): ZJIT: Remove side-exit locations dump after test
nobu (Nobuyoshi Nakada)
11:31 AM Ruby Revision 3fd1be95 (git): Introduce GC.stat_heap(:heap_allocatable_slots)
eightbitraptor (Matt V-H)
11:31 AM Ruby Revision db1a23fb (git): Remove unused minimum_slots_for_heap function
eightbitraptor (Matt V-H)
11:31 AM Ruby Revision 0875a0f8 (git): Replace heap_init_slots array with single heap_init_bytes target
Replace per-heap GC_HEAP_INIT_SLOTS with a single GC_HEAP_INIT_BYTES
target.
Instead of allocating a fixed 10k slot budget for each heap to grow
into. This PR gives each heap a fixed 2.5Mb heap growth allowance. This
keeps the overall h...
eightbitraptor (Matt V-H)
10:18 AM Ruby Bug #21970: Corrupted `ciobj->operands` in `compile.c: optimize_checktype`
Of course:
```
(gdb) p *iobj
$1 = {link = {type = ISEQ_ELEMENT_INSN, next = 0xaaab00000848, prev = 0xaaab00000818}, insn_id = YARVINSN_putnil, operand_size = 0, sc_state = 0, operands = 0x0, insn_info = {
line_no = 220, node_i...
byroot (Jean Boussier)
09:20 AM Ruby Bug #21970: Corrupted `ciobj->operands` in `compile.c: optimize_checktype`
Is it possible to inspect the contents of `*iobj` and `*ciobj`? nobu (Nobuyoshi Nakada)
08:48 AM Ruby Bug #21970 (Open): Corrupted `ciobj->operands` in `compile.c: optimize_checktype`
A rare crash I observed in production. I unfortunately don't have a reproduction, but perhaps this will ring a bell to someone.
```
#4 0x0000aaaac9afb1b8 [PAC] in sigsegv (sig=11, info=0xaaaaff573e30, ctx=0xaaaaff573eb0) at signal.c...
byroot (Jean Boussier)
10:10 AM Ruby Revision cbd8fac4 (git): win32: Escape macros in intermediate makefiles
nobu (Nobuyoshi Nakada)
09:45 AM Ruby Revision 80aea31e (git): Skip implicit rule for .rbinc when BASERUBY is unavailable
nobu (Nobuyoshi Nakada)
09:40 AM Ruby Bug #21967: `vm_call_cfunc: cfp consistency error` while requiring `nkf.so`
So for the record, I managed to remove our dependency on `nkf`, and the issue seem to have disappeared so far.
So this suggest `nkf` is indeed the root cause, but that is weird because I looked at the extension, and it's really not do...
byroot (Jean Boussier)
09:27 AM Ruby Revision ee31cc6e (git): Remove dead `Resolve job ID` step from macOS workflow (#16591)
This step was added in 1ba93c2c4d for uploading core dumps to AWS S3,
but the S3 upload was later removed while this step was left behind.
The `job_id` output is not referenced anywhere in the workflow.
st0012 (Stan Lo)
06:18 AM Ruby Bug #21969 (Third Party's Issue): fork() + Socket.getaddrinfo() triggers SIGSEGV/SIGABRT via libsystem_trace.dylib on macOS 26 (darwin25) x86_64 and ARM64
#21790 also identifies `_os_log_preferences_refresh` in `libsystem_trace.dylib` as the crash site (see note #4). The NAT64 code path (`_gai_nat64_second_pass`) appears higher in the call stack, but the actual fault is the same stale shar... mame (Yusuke Endoh)
05:26 AM Ruby Bug #21969 (Third Party's Issue): fork() + Socket.getaddrinfo() triggers SIGSEGV/SIGABRT via libsystem_trace.dylib on macOS 26 (darwin25) x86_64 and ARM64
On macOS 26 (darwin25), forked child processes crash with SIGSEGV (x86_64) or SIGABRT (ARM64) when calling `Socket.getaddrinfo` after the parent process has established `libsystem_trace.dylib` os_log shared-memory state through prior DNS... saurabhpandit (Saurabh Pandit)
05:34 AM Ruby Revision 3379c7ef (git): [ruby/rubygems] Restore rb_sys dependency for Rust
https://github.com/ruby/rubygems/commit/7cd3b9a08a 방성범 (Bang Seongbeom)
03:29 AM Ruby Bug #21965 (Closed): cross compile with out-of-source build is broken
https://github.com/ruby/ruby/pull/16456 fixed this and added my simple workflow for cross compile. hsbt (Hiroshi SHIBATA)
02:57 AM Ruby Revision 503cf433 (git): Bump the github-actions group across 1 directory with 5 updates
Bumps the github-actions group with 5 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.295.0` | `1.299.0` |
| [github/codeql-action](https://github.com/...
dependabot[bot]
02:57 AM Ruby Revision c99e07fe (git): Skip cleaning up the default docker image to avoid redundant pulls
The default image (clang-20) is reused across multiple steps within
the same job. Only remove non-default images after use.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:57 AM Ruby Revision 5f08b4c6 (git): Remove stephanmisc/docuum dependency to avoid DockerHub rate limits
Replace the docuum service container with a simple `docker rmi` step
after each compilation. This avoids pulling an external image from
DockerHub, which was causing rate limit issues.
Co-Authored-By: Claude Opus 4.6 (1M context) <norepl...
hsbt (Hiroshi SHIBATA)
01:10 AM Ruby Revision a0c6e64a (git): Add arm-to-x86 cross-compile matrix and generalize apt setup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
01:10 AM Ruby Revision 371255ff (git): Add cross-compile workflow for out-of-source ARM build testing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
01:10 AM Ruby Revision 2329ca1d (git): Revert generating sources in make-snapshot
nobu (Nobuyoshi Nakada)

03/29/2026

03:34 PM Ruby Revision 01e4a827 (git): Fall back writing prism sources to the current directory
nobu (Nobuyoshi Nakada)
03:34 PM Ruby Revision 4e3625fb (git): Add rule for dummy config.h
nobu (Nobuyoshi Nakada)
03:33 PM Ruby Revision 2cefc23a (git): Update rbinc files for snapshots
nobu (Nobuyoshi Nakada)
03:33 PM Ruby Revision 58f324d3 (git): Update prism sources before dump_ast
nobu (Nobuyoshi Nakada)
03:33 PM Ruby Revision 09a314d7 (git): Update prereq.status
nobu (Nobuyoshi Nakada)
03:33 PM Ruby Revision 353dca47 (git): Clean the build tool
nobu (Nobuyoshi Nakada)
03:33 PM Ruby Revision 70f5f861 (git): Distinguish the executable suffixes
Build and target executable suffixes are unrelated in
cross-compilation.
nobu (Nobuyoshi Nakada)
02:14 PM Ruby Revision ee2c1528 (git): Fix `dump_ast` build for cross-compiling
nobu (Nobuyoshi Nakada)
06:52 AM Ruby Bug #21952: Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
So it appears that when duplicating a class in another box, we copy the class variables table, but not its entries, causing both boxes to think they own that memory, resulting in a double free.
I have a fix for the specific reproducer...
byroot (Jean Boussier)
05:57 AM Ruby Revision f9175a9e (git): Ensure safe handling of `IO::Buffer#hexdump` width. (#16593)
Samuel Williams
01:14 AM Ruby Revision 843bb9b7 (git): Exclude StringScanner implementation for TruffleRuby
nobu (Nobuyoshi Nakada)
12:05 AM Ruby Revision b3a3b94b (git): [ruby/strscan] [DOC] Undoc unused constants
https://github.com/ruby/strscan/commit/1d85632f2a nobu (Nobuyoshi Nakada)

03/28/2026

09:49 PM Ruby Revision cbcd7522 (git): [ruby/strscan] Implement StringScanner for TruffleRuby in pure Ruby
(https://github.com/ruby/strscan/pull/195)
* Fixes https://github.com/ruby/strscan/issues/194.
* This is a fresh new implementation from scratch, contributed directly
to ruby/strscan, under BSD-2-Clause.
This was implemented using the s...
Eregon (Benoit Daloze)
03:02 PM Ruby Revision 64e10365 (git): ZJIT: Fn stub: Move args to create appropriate unfilled optional param gap
When a SendDirect lands in a callee that fails to compile, we need to
reconstruct the interpreter state at the entry point of the callee in
function_stub_hit().
SendDirect never leaves gaps in its args Vec, and consequently, it
contains...
alanwu (Alan Wu)
01:28 PM Ruby Revision 546e2eba (git): Add `make html-server` for live-reloading doc preview (#16494)
RDoc now has a `--server` mode that starts a local HTTP server
with live reload. Add an `html-server` make target so developers
can preview Ruby documentation while editing source files.
Usage: `make html-server` from the build director...
st0012 (Stan Lo)
01:12 PM Ruby Revision d89a9f82 (git): Extract `check_event_support` helper to reduce duplication in `vm_trace.c` (#16587)
Extract check_event_support helper to reduce duplication in vm_trace.c
Five rb_tracearg_* functions repeated the same event validation
pattern. Extract it into a check_event_support() helper.
st0012 (Stan Lo)
09:09 AM Ruby Bug #21952: Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
I managed to reduce this further.
This is reproducible with pure Ruby now, without `fiddle/import`. The current reduced reproducer is along these lines:
```ruby
Ruby::Box.root.eval(<<~RUBY)
module M
@@x = 0
...
katsyoshi (Katsuyoshi MATSUMOTO)

03/27/2026

11:26 PM Ruby Revision 634707a7 (git): Rename CFP_HAS_JIT_RETURN to CFP_JIT_RETURN
Return the pointer directly instead of a bool, for consistency with
CFP_ISEQ and CFP_PC. The pointer is truthy in if conditions so all
callers work unchanged.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision ee60b99b (git): Rename rb_cfp_iseq to CFP_ISEQ and rb_cfp_pc to CFP_PC
Rename for consistency with ISEQ_BODY naming convention. Remove the
separate rb_cfp_has_iseq/rb_cfp_has_pc wrappers — CFP_ISEQ and CFP_PC
return NULL for missing values, which works directly in if conditions.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 4391c5f0 (git): Use cfp->_iseq directly in GET_ISEQ() macro
The interpreter always has a valid _iseq field (it's written on exit
from JIT code), so GET_ISEQ() doesn't need to go through rb_cfp_iseq().
Code in vm_insnhelper.c that may be called as a ZJIT fallback should
use rb_cfp_iseq() instead.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 226f3705 (git): Rename cfp->iseq to cfp->_iseq and rb_zjit_cfp_iseq to rb_cfp_iseq
Per tenderlove's review, every cfp->iseq read should go through an
accessor that accounts for JITFrame. Rename the field to _iseq so
direct access causes a compile error, and rename the accessors to
drop the zjit prefix (rb_cfp_iseq, rb_...
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 4e5b0d31 (git): ZJIT: Have JITFrame relocate itself via Rust function
Expose rb_zjit_jit_frame_update_references so vm.c can call into Rust
to relocate the iseq pointer during GC compaction, instead of manually
manipulating JITFrame fields in C. This keeps JITFrame field access
consolidated in Rust.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 9c7c28ff (git): ZJIT: Simplify cfp accessor functions in zjit.h
Remove redundant rb_zjit_enabled_p checks from rb_zjit_cfp_pc and
rb_zjit_cfp_iseq since CFP_HAS_JIT_RETURN already checks it. Rewrite
rb_zjit_cfp_has_iseq and rb_zjit_cfp_has_pc as thin wrappers around
rb_zjit_cfp_iseq and rb_zjit_cfp_pc.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision bfcc31ab (git): ZJIT: Define JITFrame struct in C and import via bindgen
Make zjit.h the single source of truth for the JITFrame struct layout.
Remove the manual #[repr(C)] definition from jit_frame.rs and replace
it with a type alias to the bindgen-generated zjit_jit_frame.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 29755f4d (git): ZJIT: Move jit_return clearing from rb_set_cfp_pc into codegen
The jit_return = 0 write in rb_set_cfp_pc was only needed by ZJIT.
Move it to the codegen call site next to where iseq is also set,
making the intent clearer.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 59fe446e (git): ZJIT: Use bare opcode variant in iseq_may_write_block_code
Add rb_iseq_bare_opcode_at_pc which uses rb_vm_insn_addr2insn to
return the base instruction, stripping trace/zjit variants. Use it
in iseq_may_write_block_code to simplify the match arms.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 219f7bbf (git): ZJIT: Have JITFrame mark and update its own GC pointers
Add mark() and update_references() methods to JITFrame so GC logic
is encapsulated. Store *mut JITFrame in ZJITState to avoid unsafe
const-to-mut casts in gc.rs.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 984feb2b (git): ZJIT: Import JITFrame directly instead of via payload
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision c5ed7416 (git): ZJIT: Add doc comments to JITFrame and split into two constructors
Add documentation to JITFrame fields explaining their purpose and
nullability. Split JITFrame::new into new_iseq and new_cfunc
constructors to make the two distinct use cases explicit.
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision 31dba124 (git): ZJIT: Rename CFP_JIT_RETURN to CFP_HAS_JIT_RETURN
k0kubun (Takashi Kokubun)
11:26 PM Ruby Revision c8f97943 (git): ZJIT: Lightweight Frames
Co-authored-by: Alan Wu <alanwu@ruby-lang.org> k0kubun (Takashi Kokubun)
11:25 PM Ruby Revision 1b2dfdf4 (git): Fix crash report being truncated by secondary crashes (#16586)
When rb_bug() is called (e.g. from a ZJIT Rust panic), the crash report
file could be truncated and left nearly empty due to two issues:
1. The crash report file was opened with default (buffered) I/O. If
rb_vm_bugreport() triggered ...
k0kubun (Takashi Kokubun)
11:25 PM Ruby Revision 2d2351af (git): Remove unused compile options/jobs (#16583)
SYMBOL_GC removed in https://github.com/ruby/ruby/commit/2bcb155b49bb421ee82c0d5980546a5071113407
THREAD_CACHE removed in https://github.com/ruby/ruby/commit/be1bbd5b7d40ad863ab35097765d3754726bbd54
BIGNUM_DEBUG removed in https://github...
Earlopain (Earlopain _)
10:33 PM Ruby Revision cee3d5f4 (git): ZJIT: Combine two IFUNC tag guards into one
Use IntAnd + GuardBitEquals to check (block_handler & 0x3) == 0x3,
matching VM_BH_IFUNC_P() in the interpreter. Add the IntAnd HIR
instruction (placed next to IntOr) for bitwise AND on raw C integers.
k0kubun (Takashi Kokubun)
10:33 PM Ruby Revision 16e96105 (git): ZJIT: Add tests for invokeblock IFUNC specialization
Test Enumerable#map on a class with a Ruby `each` that uses `yield`.
This exercises the IFUNC block handler path in invokeblock, where
Enumerable C code creates an IFUNC wrapping the user's block.
k0kubun (Takashi Kokubun)
10:33 PM Ruby Revision 6519a774 (git): ZJIT: Specialize invokeblock for IFUNC block handlers
When profiling shows a monomorphic IFUNC block handler, emit
InvokeBlockIfunc which calls rb_vm_yield_with_cfunc directly
instead of falling back to rb_vm_invokeblock. This avoids the
interpreter dispatch overhead for the most common inv...
k0kubun (Takashi Kokubun)
10:01 PM Ruby Revision 9a3fedd3 (git): [ruby/prism] Nodoc the ripper shim
It appears in documentation on https://docs.ruby-lang.org/ under `Object::Ripper`
https://github.com/ruby/prism/commit/6c1000661c
Earlopain (Earlopain _)
09:21 PM Ruby Revision 6322acbd (git): ZJIT: Set fallback reasons at HIR construction instead of type_specialize
Move the InvokeBlockNotSpecialized, SendForwardNotSpecialized, and
InvokeSuperForwardNotSpecialized reasons from type_specialize match
arms to HIR construction, since type_specialize doesn't attempt to
specialize these instructions anyway.
k0kubun (Takashi Kokubun)
09:21 PM Ruby Revision 324ba083 (git): ZJIT: Categorize uncategorized send fallback reasons in stats
Add specific SendFallbackReason variants for InvokeBlock,
SendForward, and InvokeSuperForward instructions that previously
stayed as Uncategorized in type_specialize. Also add
SingleRactorModeRequired for paths in Send handling that fail...
k0kubun (Takashi Kokubun)
08:05 PM Ruby Revision c42a6338 (git): ZJIT: Check native stack in function_stub_hit (#16585)
When JIT-to-JIT calls hit a function stub for lazy compilation, check
if the native stack is nearly exhausted before proceeding. If so, bail
out to the interpreter instead of compiling and entering more JIT code.
This complements the ch...
k0kubun (Takashi Kokubun)
07:32 PM Ruby Feature #21852: New improved allocator function interface
I had a call with @byroot and I understand better the proposal now.
I think the proposal makes sense, but with the small tweaks proposed in https://bugs.ruby-lang.org/issues/21963#note-8 it would completely avoid allocated-but-uniniti...
Eregon (Benoit Daloze)
07:29 PM Ruby Feature #21963: A solution to completely avoid allocated-but-uninitialized objects
I realized these `init` & `copy` C function hooks could actually be done partly with the proposal in #21852, cc @byroot.
(and that solves the issue about needing more space in RClass!)
Specifically, the `rb_copy_alloc_func_t` gets the or...
Eregon (Benoit Daloze)
06:27 PM Ruby Revision ec2ff4fc (git): Remove unnecessary begin/end in do/end block in _tmpdir.rb
k0kubun (Takashi Kokubun)
06:18 PM Ruby Revision 75ac1dd6 (git): ZJIT: Recompile sends with literal blocks via exit profiling
Extend convert_no_profile_sends to handle SendNoProfiles (sends with
literal blocks), not just SendWithoutBlockNoProfiles. The match guards
against BlockArg sends since &proc forwarding can't be exit-profiled.
k0kubun (Takashi Kokubun)
06:18 PM Ruby Revision 48b7e45c (git): ZJIT: Add BlockHandler::BlockArg for &proc sends
Add a BlockArg variant to BlockHandler for sends that pass a block via
&proc (ARGS_BLOCKARG). Previously these were represented as
Some(BlockIseq(null)), requiring a normalization hack in
reduce_send_to_ccall. Now the three cases are exp...
k0kubun (Takashi Kokubun)
06:18 PM Ruby Revision ec2b2b77 (git): ZJIT: Replace blockiseq: Option<IseqPtr> with block: Option<BlockHandler>
Introduce a BlockHandler enum to represent how a block is passed to a
send-like instruction. For now it has only the BlockIseq(IseqPtr)
variant, making this a pure mechanical rename with no behavior change.
k0kubun (Takashi Kokubun)
06:03 PM Ruby Revision 93c6f97b (git): [ruby/prism] Fix -Wconversion warnings from gcc 8.5.0
https://github.com/ruby/prism/commit/6069d67d22 Eregon (Benoit Daloze)
06:03 PM Ruby Revision 400727a2 (git): [ruby/prism] Remove unused variable in tests
https://github.com/ruby/prism/commit/5bb64a246d Eregon (Benoit Daloze)
05:26 PM Ruby Revision 6035121c (git): Fix NEWS entry about Array#pack
Eregon (Benoit Daloze)
05:26 PM Ruby Revision 0e4c2a38 (git): Revert "[DOC] Describe new return value of source_location"
This reverts commit edff523407ac54b09a95a946c927656262595178. Eregon (Benoit Daloze)
05:26 PM Ruby Revision 096213b2 (git): Revert "Reapply "[Feature #6012] Extend `source_location` for end position"
This reverts commit 8f5e0d8ff82ff63d60da445826fa44be3d8d0820. Eregon (Benoit Daloze)
05:26 PM Ruby Revision 9f25970e (git): Revert "[Bug #21783] Fix documentation of {Method,UnboundMethod,Proc}#source_location"
This reverts commit 31c3bcb4818d9f62a6ad5c284f152abb40d552d0. Eregon (Benoit Daloze)
05:26 PM Ruby Revision 0ca6e5bb (git): Revert "Update version guards in ruby/spec"
This reverts commit 1d0cc4c5b376996f53ea74a8896ff10fae054252. Eregon (Benoit Daloze)
05:26 PM Ruby Revision 8ea9f63e (git): Revert "Exclude rbs tests which need updates for {Method,UnboundMethod,Proc}#source_location"
This reverts commit c161328240cd18f6e77b29fae61048fd9b7c730d. Eregon (Benoit Daloze)
05:09 PM Ruby Revision 2e753bf2 (git): Move rb_class_allocate_instance into gc.c
jhawthorn (John Hawthorn)
04:51 PM Ruby Revision 06f746fd (git): ZJIT: Skip convert_no_profile_sends on the final ISEQ version
When an ISEQ has already reached MAX_ISEQ_VERSIONS, converting
no-profile sends to SideExits is counterproductive: the exit fires
every time but can never trigger recompilation. Keep them as Send
fallbacks so the interpreter handles them...
k0kubun (Takashi Kokubun)
04:51 PM Ruby Revision d3144721 (git): ZJIT: Look up final version status dynamically
Instead of storing is_final_version as a field on Function, compute
it dynamically in convert_no_profile_sends by checking the payload's
version count against MAX_ISEQ_VERSIONS.
k0kubun (Takashi Kokubun)
04:51 PM Ruby Revision f8a9d28c (git): ZJIT: Restore test_recompile_no_profile_send test
Keep the original SideExit recompile test alongside the new
final-version test since they cover different behaviors. Remove the
intermediate HIR snapshot since hir_string() now sees the auto-compiled
version as final.
k0kubun (Takashi Kokubun)
04:31 PM Ruby Feature #6012 (Rejected): Proc#source_location also return the column
Revert PR: https://github.com/ruby/ruby/pull/16582
I'll mark this issue as rejected to reflect the revert.
Eregon (Benoit Daloze)
04:29 PM Ruby Revision 7b85b214 (git): Bump irb version to fix a flaky test
https://github.com/ruby/irb/pull/1191 k0kubun (Takashi Kokubun)
04:10 PM Ruby Revision 6b3cd487 (git): ZJIT: Check native stack before compiling ISEQs (#16576)
* ZJIT: Check native stack before compiling ISEQ
When the native/machine stack is nearly exhausted, don't compile and
enter ZJIT code. JIT-compiled code uses more native stack per call
frame than the interpreter, so falling back to the ...
k0kubun (Takashi Kokubun)
04:06 PM Ruby Feature #21966 (Closed): Remove rb_obj_class runtime check on rb_define_alloc_func returned objects
Applied in changeset commit:git|851b8f852313c361465cf760701e23db0ea4d474.
----------
Remove class alloc check
This checks that the value returned from the function registered with
rb_define_alloc_func is of the correct class. When this...
jhawthorn (John Hawthorn)
04:06 PM Ruby Revision 54d58909 (git): ZJIT: Fix profile_stack to skip block arg for ARGS_BLOCKARG sends (#16581)
For sends with ARGS_BLOCKARG (e.g. `foo(&block)`), the block arg sits
on the stack above the receiver and regular arguments. The profiling
(both interpreter and exit profiling) only records types for the
receiver and regular args (argc +...
k0kubun (Takashi Kokubun)
04:00 PM Ruby Revision 851b8f85 (git): Remove class alloc check
This checks that the value returned from the function registered with
rb_define_alloc_func is of the correct class. When this was first
introduced in 1fe40b7cc5 (by Matz on 2001-10-03), allocation was done
via user-defined Object#allocat...
jhawthorn (John Hawthorn)
03:59 PM Ruby Misc #21968 (Open): The pathname gem needs a new release
The current pathname gem release (0.4.0) has several issues:
### Many warnings on Ruby 4.0
It emits many constant & method redefinition warnings.
This happens notably when an application has `pathname` as a dependency (direct or t...
Eregon (Benoit Daloze)
03:11 PM Ruby Feature #20448: Make coverage event hooking C API public
Hi there, I finally got around to working on this idea: https://github.com/ruby/ruby/pull/16579
Let me know if there's any way I can aid in its review.
ms-tob (Matt S)
02:39 PM Ruby Revision 5eff7e0e (git): [ruby/prism] Also handle string conversion in `Ripper.lex`
In `ripper`, both go through the same converion logic.
Needed for rspec, no other failures in their own tests
https://github.com/ruby/prism/commit/510258aa2b
Earlopain (Earlopain _)
02:38 PM Ruby Revision b04586c2 (git): [ruby/prism] Implement various string start/end events for ripper
`tstring_beg` in particular is needed by `yard`.
Before:
> 1980 examples, 606 failures, 15 pending
After:
> ...
Thought it would be more, but oh well. It needs `on_sp` which I guess is why there are not many new passes
https://github....
Earlopain (Earlopain _)
09:11 AM Ruby Bug #21967 (Open): `vm_call_cfunc: cfp consistency error` while requiring `nkf.so`
I'm unfortunately unable to reproduce this consistently.
It does happen a few times a day on our production servers, and I have a few core dumps around for investigation if needed.
The crash is always while loading `nknf.so`.
I'...
byroot (Jean Boussier)
07:09 AM Ruby Revision 998e2f41 (git): [ruby/openssl] Fix potential UAF in ossl_crypto_fixed_length_secure_compare
StringValue() can invoke an object's #to_str method, which may execute
arbitrary Ruby code. If #to_str mutates the other string argument during
comparison, its buffer may be reallocated, leaving a previously obtained
RSTRING_PTR pointing...
apocalypse9949
06:45 AM Ruby Revision 8b966199 (git): [ruby/json] Fix json generation for symbols on TruffleRuby
https://github.com/ruby/json/commit/0e99fcb581 Randy Stauner
06:34 AM Ruby Revision 3588198c (git): Fix EACCES error during tmpdir cleanup on Windows (#16577)
On Windows, when a test process is killed after a timeout, the OS may
not release file/directory handles immediately. The Dir.rmdir in the
diagnostic tree-walk raises Errno::EACCES, which was unhandled, causing
the entire cleanup to abor...
k0kubun (Takashi Kokubun)
04:49 AM Ruby Revision 54593b55 (git): Regenerate Cargo.lock with targeted insta update
The previous `cargo update --manifest-path zjit/Cargo.toml` re-resolved
all dependencies, and Rust 1.84+'s MSRV-aware resolver downgraded cc
(1.2.18 -> 1.0.94) and libc (0.2.171 -> 0.2.163) to satisfy yjit's
rust-version = "1.58.0". This...
k0kubun (Takashi Kokubun)
04:00 AM Ruby Revision 415cf158 (git): Fix -Wold-style-definition warnings in cont.c
Use (void) instead of () for functions taking no parameters. k0kubun (Takashi Kokubun)
03:57 AM Ruby Revision 0c975963 (git): cargo update --manifest-path zjit/Cargo.toml
Since https://github.com/ruby/ruby/pull/16574, just running zjit-test
causes diffs in Cargo.lock.
This PR gets rid of the diff caused by zjit-test.
k0kubun (Takashi Kokubun)
02:32 AM Ruby Revision d85c6409 (git): Fix performance of fiber pool stack tests. (#16570)
Samuel Williams
02:31 AM Ruby Revision 5ffecb8c (git): Bump insta in /zjit in the jit group across 1 directory
Bumps the jit group with 1 update in the /zjit directory: [insta](https://github.com/mitsuhiko/insta).
Updates `insta` from 1.46.3 to 1.47.0
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.co...
dependabot[bot]
12:46 AM Ruby Revision 2ebcc3ab (git): [ruby/rubygems] Revert global_cache_spec to subprocess for cross-directory config
https://github.com/ruby/rubygems/commit/7bf9971ebb
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision e0c4e8c1 (git): [ruby/rubygems] Rename config/global_config helpers to bundle_config/bundle_config_global
https://github.com/ruby/rubygems/commit/982ad09264
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision 7571a980 (git): [ruby/rubygems] Replace remaining `bundle "config set"` subprocess calls with in-process config helper
Handle interpolated values, inline calls, and old-style forms that were
missed in previous commits.
https://github.com/ruby/rubygems/commit/d3405c7fe1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision 356ae22f (git): [ruby/rubygems] Replace remaining inline `bundle "config set KEY VALUE"` with in-process config helper
https://github.com/ruby/rubygems/commit/743e4bc9ed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision 607ad194 (git): [ruby/rubygems] Replace `bundle "config set --global KEY VALUE"` subprocess with in-process global_config helper
https://github.com/ruby/rubygems/commit/1f97d646b4
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision 7c658ab6 (git): [ruby/rubygems] Replace `bundle "config set --local KEY VALUE"` subprocess with in-process config helper
https://github.com/ruby/rubygems/commit/f5539440d5
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision bacf1730 (git): [ruby/rubygems] Replace `bundle "config set KEY VALUE"` subprocess with in-process config helper
https://github.com/ruby/rubygems/commit/85260feefd
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:46 AM Ruby Revision c6fb7382 (git): [ruby/rubygems] Use `bundle config set` instead of deprecated `bundle config` form in specs
https://github.com/ruby/rubygems/commit/bd78b90f64
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:34 AM Ruby Revision 92f15577 (git): ZJIT: Compile setblockparam (#16517)
* ZJIT: Compile setblockparam
* ZJIT: Add IntOr HIR and remove MarkBlockParamModified
* ZJIT: Use assert_compiles in codegen tests and tighten IntOr validation
- Use assert_compiles for codegen tests, except for the case that intentio...
Nozomi Hijikata
 

Also available in: Atom