Project

General

Profile

Activity

From 01/15/2026 to 01/21/2026

Today

07:52 AM Revision 2bbc06e2 (git): merge revision(s) d209e6f1c0a93ad3ce1cc64dd165a6b67672614d: [Backport #21715]
[PATCH] search_nonascii(): Replace UB pointer cast with memcpy
Casting a pointer to create an unaligned one is undefined behavior in C
standards. Use memcpy to express the unaligned load instead to play by
the ru...
hsbt (Hiroshi SHIBATA)
07:40 AM Revision 0f1eea09 (git): [ruby/rubygems] Skip failing tests
https://github.com/ruby/rubygems/commit/ee68fd8d20 hsbt (Hiroshi SHIBATA)
07:40 AM Revision d9323587 (git): [ruby/rubygems] Appease the linter again
https://github.com/ruby/rubygems/commit/92f35e9684 JasonLunn (Jason Lunn)
07:40 AM Revision 2efffe09 (git): [ruby/rubygems] Appease the linter
https://github.com/ruby/rubygems/commit/aba307411a JasonLunn (Jason Lunn)
07:40 AM Revision c9597416 (git): [ruby/rubygems] Add test
https://github.com/ruby/rubygems/commit/3d8140b289 JasonLunn (Jason Lunn)
07:40 AM Revision 3aa866ca (git): [ruby/rubygems] Remove special behavior for rake
Fixes https://github.com/ruby/rubygems/pull/9244
https://github.com/ruby/rubygems/commit/7dc3d43d2e
JasonLunn (Jason Lunn)
06:19 AM Revision 6f1453dc (git): ZJIT: Support optional keyword arguments in direct send (#15873)
This fills in constants when unspecified optional keyword args have static default values.
For complex defaults we calculate the kw_bits and utilize the checkkeyword logic we already had.
The following benchmarks used to register param_...
rwstauner (Randy Stauner)
01:55 AM Revision 01984fa8 (git): [ruby/mmtk] Pass whether GC is moving to rb_mmtk_update_global_tables
https://github.com/ruby/mmtk/commit/002faa8f92 peterzhu2118 (Peter Zhu)
12:47 AM Bug #21844: Inconsistent ArgumentError message for Data::define.new
With this PR, Data#initialize now considers index keys when detecting missing keywords:
https://github.com/ruby/ruby/pull/15910
jnchito (Junichi Ito)
12:42 AM Revision 36809a8d (git): ZJIT: Add fail-fast assert for non-register {cpush,cpop}_pair
There is no splitting for these so let's add a assert to try and catch
misuse. VRegs are not necessarily registers in the end, so this is best
effort. In those situations they'll get a less proximate panic message.
alanwu (Alan Wu)
12:42 AM Revision f7e73ba3 (git): ZJIT: A64: Avoid gaps in the stack when preserving registers for calls
Previously, we used a `str x, [sp, #-0x10]!` for each value, which
left an 8-byte gap. Use STP to store a pair at a time instead.
Jeff Zhang

01/20/2026

11:12 PM Bug #21844: Inconsistent ArgumentError message for Data::define.new
I couldn't find the spec, but I found keywords can be index like Array:
```ruby
Data.define(:a, :b).new(0 => 1, 1 => 2)
#=> #<data a=1, b=2>
Data.define(:a, :b).new(-2 => 1, -1 => 2)
#=> #<data a=1, b=2>
```
So the code belo...
jnchito (Junichi Ito)
04:25 PM Bug #21844 (Open): Inconsistent ArgumentError message for Data::define.new
Earlopain (Earlopain _)
02:16 PM Bug #21844 (Closed): Inconsistent ArgumentError message for Data::define.new
Applied in changeset commit:git|c27ae8d91aadca0660070ee1eeae9598b1fe47ee.
----------
[ruby/psych] Remove excessive check of message
The order of "unexpected" and "missing" keyword argument errors at
`Data#initialize` had not been defin...
nobu (Nobuyoshi Nakada)
12:45 PM Bug #21844: Inconsistent ArgumentError message for Data::define.new
Is this behavior in Ruby 4.0.1 expected?
```ruby
Data.define(:a, :b).new(1 => 1, a: 2)
#=> #<data a=2, b=1>
Data.define(:a, :b).new(1 => 1, b: 2)
#=> #<data a=nil, b=2>
```
I expected ArgumentError to be raised because `1` ...
jnchito (Junichi Ito)
09:35 AM Bug #21844: Inconsistent ArgumentError message for Data::define.new
I fixed that error as well in my PR:
https://github.com/ruby/ruby/pull/15910/
jnchito (Junichi Ito)
05:42 AM Bug #21844: Inconsistent ArgumentError message for Data::define.new
Another related issue:
```ruby
Data.define(:a, :b).new(a: 0, "a" => 1)
```
This creates an instance of `Data` with `b` not initialized, `#<data a=1, b=nil>`.
nobu (Nobuyoshi Nakada)
04:59 AM Bug #21844 (Open): Inconsistent ArgumentError message for Data::define.new
The code below shows `Data::define.new` treats symbol and string keys equivalently:
``` ruby
C = Data.define(:a, :b)
C.new(a: 1, b: 1)
#=> #<data C a=1, b=1>
C.new('a' => 1, 'b' => 1)
#=> #<data C a=1, b=1>
```
But it act...
jnchito (Junichi Ito)
11:01 PM Revision e24b5288 (git): Allow objects on Ruby stack to be GC movable
Objects on the Ruby stack can be GC movable and there is corresponding
code in rb_execution_context_update to update references for moved objects.
peterzhu2118 (Peter Zhu)
09:37 PM Revision 631a5076 (git): ZJIT: Delete Insn::CPushAll and Insn::CPopAll
Since we automatically preserve registers across calls, it's never
necessary to manually and imprecisely do it with `C{Push,Pop}All`.
Delete them to remove the maintenance burden and reduce confusion.
alanwu (Alan Wu)
09:37 PM Revision 1bc51114 (git): ZJIT: Add a smoke test for --zjit-trace-exits
Better than nothing! alanwu (Alan Wu)
08:23 PM Revision 9ad8dd00 (git): [ruby/prism] Fix `on_*` return value of ripper translator
You're supposed to return the first argument.
```rb
# Before
[[:stmts_new], [:rescue_mod, nil, nil], [:stmts_add, nil, nil], [:program, nil]]
# After
[[:stmts_new], [:rescue_mod, "1", "2"], [:stmts_add, nil, "1"], [:program, nil]]
```
T...
Earlopain (Earlopain _)
06:49 PM Revision 26777e8a (git): Restore irb to warning target
Users should add `irb` to their Gemfile.
`Gem::BUNDLED_GEMS.force_activate 'irb'` is workaround for short term.
hsbt (Hiroshi SHIBATA)
06:49 PM Revision a3dc71eb (git): Suppress bundled gem warning on `binding.irb'
This patch silences the "this won't work in the next version of Ruby"
warning displayed when irb is autoloaded via `binding.irb`.
main.rb:1: warning: irb used to be loaded from the standard library, but is not part of the default ge...
Daisuke Aritomo
06:49 PM Revision 310da6cd (git): Added example for bundle/inline
hsbt (Hiroshi SHIBATA)
06:49 PM Revision 3046e278 (git): Add comments
Daisuke Aritomo
06:49 PM Revision 20e4a9a8 (git): Fake BUNDLE_GEMFILE and BUNDLE_LOCKFILE to let checks pass
Bundler::Runtime#setup requires a real existing lockfile (see
Bundler::SharedHelpers#default_lockfile).
Daisuke Aritomo
06:49 PM Revision 83479483 (git): [Bug #21723] Let `binding.irb` properly load irb by fixing force_activate()
This patch fixes a problem where `binding.irb` (= force_activate('irb'))
fails under `bundle exec` when the Gemfile does not contain `irb` and
does contain a gem which is (1) not installed in GEM_HOME (2) sourced
using `path:`/`git:`.
T...
Daisuke Aritomo
03:50 PM Revision d225bb8b (git): ZJIT: Compile IsA into load + compare for String/Array/Hash (#15878)
Resolves https://github.com/Shopify/ruby/issues/880
Implemented this by using the code generation for `GuardType` as a reference.
Not sure if this is the best way to go about it, but it seems to work.
Jeff Zhang
02:15 PM Revision c27ae8d9 (git): [ruby/psych] Remove excessive check of message
The order of "unexpected" and "missing" keyword argument errors at
`Data#initialize` had not been defined strictly.
[Bug #21844](https://bugs.ruby-lang.org/issues/21844)
ruby/ruby#15910
https://github.com/ruby/psych/commit/ba748d9b04
nobu (Nobuyoshi Nakada)
01:56 PM Misc #21804: Getting setup-ruby Earlier
Releasing a new Ruby version around Christmas is certainly done with some intention in mind — it's nice to let people who enjoy OSS during the holidays try out the latest Ruby right away and have some fun with it. So I do understand the ... naruse (Yui NARUSE)
01:18 PM Revision 2842e61c (git): Reapply "[ruby/prism] Add Ripper :on_sp events for Prism.lex_compat and Prism::Translation::Ripper"
This reverts commit 58f1127b51cf4fbb1f334f8701a041f40701dca2. Earlopain (Earlopain _)
01:18 PM Revision 20113a22 (git): Handle `on_sp` in `syntax_suggest` when using prism
It used to not emit this token type, but now it does.
So when a newer version of prism is present, we can fall back
to the same code that ripper uses.
Earlopain (Earlopain _)
11:29 AM Feature #21846 (Open): Add a fast path for GC sweeping
[Github PR 15885](https://github.com/ruby/ruby/pull/15885)
## Summary
This proposal adds a fast path through the garbage collector's sweep phase that skips expensive cleanup operations for objects that don't require them. Simple em...
eightbitraptor (Matt V-H)
10:54 AM Bug #21845 (Closed): Need to rebuild C extension of bundled gems after bumping RUBY_ABI_VERSION
Applied in changeset commit:git|300927b4bb1b41e9e848c063f2ca6109423a1729.
----------
[Bug #21845] Rebuild gem extensions at RUBY_ABI_VERSION change
As `TARGET_SO_DIR_TIMESTAMP` contains `ruby_version`, after bumping
`RUBY_ABI_VERSION` ...
nobu (Nobuyoshi Nakada)
10:26 AM Bug #21845: Need to rebuild C extension of bundled gems after bumping RUBY_ABI_VERSION
[GH-15913](https://github.com/ruby/ruby/pull/15913) nobu (Nobuyoshi Nakada)
06:29 AM Bug #21845 (Closed): Need to rebuild C extension of bundled gems after bumping RUBY_ABI_VERSION
I have encountered an issue where fiddle tests are not executed when running `make test-bundled-gems`, so I investigated the conditions for reproducing the issue.
It caused by `RUBY_ABI_VERSION`. If I bumped `RUBY_ABI_VERSION` to `2` ...
hsbt (Hiroshi SHIBATA)
10:21 AM Revision 300927b4 (git): [Bug #21845] Rebuild gem extensions at RUBY_ABI_VERSION change
As `TARGET_SO_DIR_TIMESTAMP` contains `ruby_version`, after bumping
`RUBY_ABI_VERSION` it should not be existing. Usually such outdated
files will be removed by `make outdate-bundled-gems` automatically
invoked by `make up`.
nobu (Nobuyoshi Nakada)
10:10 AM Revision 58f1127b (git): Revert "[ruby/prism] Add Ripper :on_sp events for Prism.lex_compat and Prism::Translation::Ripper"
This reverts commit 35a7b5159f39de2cac848c072674e5350cc41aa4.
This broke syntax_suggest.
https://github.com/ruby/ruby/actions/runs/21167011751/job/60874111912
hsbt (Hiroshi SHIBATA)
09:53 AM Revision 35a7b515 (git): [ruby/prism] Add Ripper :on_sp events for Prism.lex_compat and Prism::Translation::Ripper
* Handle line continuations.
* Handle space at the end of file in LexCompat.
https://github.com/ruby/prism/commit/32bd13eb7d
Co-authored-by: Earlopain <14981592+Earlopain@users.noreply.github.com>
Eregon (Benoit Daloze)
08:58 AM Revision 53fe9933 (git): Optimize `File.extname` for common encodings
Similar optimizations to the ones performed in GH-15907.
- Skip the expensive multi-byte encoding handling for the common
encodings that are known to be safe.
- Use `CheckPath` to save on copying the argument and only scan it for
NU...
byroot (Jean Boussier)
07:33 AM Revision 6fb50434 (git): file.c: Stop passing NULL for encoding
`rb_encoding *` is defined as `nonnull` so `if (enc)` is optimized
out by the compiler. We have to pass a boolean alongside it to
avoid crashes.
byroot (Jean Boussier)
07:33 AM Revision 2d10f151 (git): file.c: dirname_n also use strrdirsep when n > 1
It's both simpler and faster.
| |compare-ruby|built-ruby|
|:------|-----------:|---------:|
|long | 3.960M| 24.072M|
| | -| 6.08x|
|short | 15.417M| 29.841M|
| | -| 1.94x|
|n...
byroot (Jean Boussier)
07:33 AM Revision 990cf128 (git): file.c: Inc macro now handle NULL encoding
byroot (Jean Boussier)
07:33 AM Revision 240a58ec (git): file.c: skiproot doesn't need encoding
byroot (Jean Boussier)
07:33 AM Revision 11d29d32 (git): file.c: strrdirsep search from the back of the string for common encodings
`strrdirsep` quite innficiently search for the last separator from the front
of the string.
This is surprising but necessary because in Shift-JS, `0x5c` can
be the second byte of some multi-byte characters, as such it's
not possible to ...
byroot (Jean Boussier)
07:33 AM Revision 27bb1623 (git): file.c: Optimize `rb_file_dirname_n` fixed costs
- `str_null_check` was performed twice, once by `FilePathStringValue`
and a second time by `StringValueCStr`.
- `StringValueCStr` was checking for the terminator presence, but we
don't care about that.
- `FilePathStringValue` calls `...
byroot (Jean Boussier)
03:47 AM Revision 826dbcfb (git): ZJIT: A64: Remove nop padding after conditional branches
Previously, there were a lot of nops after conditional branches. They
come from branch to LIR labels:
./miniruby --zjit-call-threshold=1 --zjit-dump-disasm -e 'Object || String'
# Insn: v14 CheckInterrupts
# RUBY_VM_CHECK_I...
alanwu (Alan Wu)
01:32 AM Revision fa910e2b (git): [ruby/mmtk] Restore MMTK_DEBUG around zeroing in obj_free
https://github.com/ruby/mmtk/commit/ae69d69768 peterzhu2118 (Peter Zhu)

01/19/2026

11:54 PM Revision 16adb930 (git): [ruby/prism] Optimize ripper translator
Creating state classes is pretty expensive.
Since they are not modifiable, we can reuse them instead.
Benchmark script:
```rb
require "ripper"
require "prism"
require "benchmark/ips"
codes = Dir["**/*.rb"].map { File.read(it) }
Benchm...
Earlopain (Earlopain _)
11:31 PM Misc #21833: Switch default hash from SipHash13 to XXH3?
On 1/12/26 3:10 PM, bdewater (Bart de Water) via ruby-core wrote:
> Issue #21833 has been updated by bdewater (Bart de Water).
>
>
> FWIW
> - https://github.com/Nicoshev/rapidhash claims to be even faster and passes the SMHash...
Anonymous
10:09 PM Revision c939330b (git): [DOC] Escape Coverage
peterzhu2118 (Peter Zhu)
09:02 PM Feature #21843 (Open): Simple Priority Scheduler
Hi,
There's a problem with Ruby's scheduler that I want to solve.
# The Problem
Since Ruby schedules threads using round-robin inside a Ractor, threads doing I/O after only running for a short time are punished. Once the I/O fin...
luke-gru (Luke Gruber)
08:17 PM Revision 6f890976 (git): JITs: Fix comment about ARM64 stack growth direction [ci skip]
alanwu (Alan Wu)
12:03 PM Revision 859920df (git): [ruby/prism] Add Prism::Source#line_to_byte_offset and replace direct accesses to offsets
https://github.com/ruby/prism/commit/ff81a29ba5 Eregon (Benoit Daloze)
12:03 PM Revision ae5efb55 (git): [ruby/prism] Simplify and optimize Prism::Node#tunnel
* By comparing byte offsets which folds 3 branches into 1.
* Also avoids allocation of Location objects.
https://github.com/ruby/prism/commit/71fcb891e0
Eregon (Benoit Daloze)
12:03 PM Revision e85fd7c8 (git): [ruby/prism] Fix docs of opening_loc/closing_loc of BlockNode
https://github.com/ruby/prism/commit/0b22d9060a Eregon (Benoit Daloze)
09:56 AM Revision aa31754e (git): Bump actions/cache in /.github/actions/setup/directories
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co...
dependabot[bot]
07:46 AM Revision 3c9ca23b (git): [ruby/prism] Remove duplicate lex tests
`RipperTest` already does this (added in https://github.com/ruby/prism/pull/3849)
Since it doesn't use the token classes, it also lists out all the excludes instead of just claiming some are passing.
https://github.com/ruby/prism/commit...
Earlopain (Earlopain _)
07:14 AM Revision df479f41 (git): [ruby/rubygems] Added another usage of pristine command
ref. https://github.com/rubygems/guides/issues/388
https://github.com/ruby/rubygems/commit/43f3768f09
hsbt (Hiroshi SHIBATA)
07:10 AM Revision fb75e99e (git): [ruby/rubygems] Add missing `.binmode` for `Gem::AtomicFileWriter`
In https://github.com/ruby/rubygems/pull/9202, I commented that `temp_file.binmode` is redundant. But I
was wrong. We need `temp_file.binmode` even when we specify
`File::BINARY`. Sorry.
https://github.com/ruby/rubygems/commit/d9f1f5c6a6
Sutou Kouhei
03:51 AM Revision 631bf19b (git): Skip Onigmo file sync. This target is only for commit sync.
hsbt (Hiroshi SHIBATA)
02:34 AM Revision ed116239 (git): Bump actions/cache from 5.0.1 to 5.0.2
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co...
dependabot[bot]
02:28 AM Bug #21841 (Closed): bootstraptest is failed with OpenSUSE leap 16.0
`ruby_3_3` branch fixed that issue. I also backported to `ruby_3_2` and create https://github.com/ruby/ruby/pull/15906 for `ruby_3_4`. hsbt (Hiroshi SHIBATA)
02:27 AM Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
ruby_3_2 commit:2051ac34b72e95de6049eb2d226e5a55024c83c7 merged revision(s) commit:d209e6f1c0a93ad3ce1cc64dd165a6b67672614d. hsbt (Hiroshi SHIBATA)
02:24 AM Bug #21842 (Closed): Encoding of rb_interned_str
Applied in changeset commit:git|b4a62a1ca949d93332ad8bce0fcc273581160cc5.
----------
[DOC] Update docs for rb_interned_str and related functions (#15897)
Related to [Bug #21842].
* rb_interned_str: document what decides whether the re...
herwin (Herwin W)
02:23 AM Revision 2051ac34 (git): merge revision(s) d209e6f1c0a93ad3ce1cc64dd165a6b67672614d: [Backport #21715]
search_nonascii(): Replace UB pointer cast with memcpy
Casting a pointer to create an unaligned one is undefined behavior in C
standards. Use memcpy to express the unaligned load instead to play by
the rules.
...
hsbt (Hiroshi SHIBATA)
02:16 AM Revision b4a62a1c (git): [DOC] Update docs for rb_interned_str and related functions (#15897)
Related to [Bug #21842].
* rb_interned_str: document what decides whether the returned string is
in US-ASCII or BINARY encoding.
* rb_interned_str_cstr: include the same description as rb_interned_str
for the encoding. This one was ...
herwin (Herwin W)

01/18/2026

09:34 PM Revision 64c14277 (git): [ruby/mmtk] Fix assertion in rb_gc_impl_ractor_cache_free for RUBY_FREE_AT_EXIT
https://github.com/ruby/mmtk/commit/e2a89d5a22 peterzhu2118 (Peter Zhu)
09:34 PM Revision b7e9e66b (git): [ruby/mmtk] Check RUBY_FL_FINALIZE on new location of object if moved
https://github.com/ruby/mmtk/commit/a31deee342 peterzhu2118 (Peter Zhu)
09:34 PM Revision 4111c546 (git): [ruby/mmtk] Replace RUBY_ASSERT with MMTK_ASSERT
https://github.com/ruby/mmtk/commit/e92baf15ef peterzhu2118 (Peter Zhu)
07:59 PM Revision b536c6a8 (git): [DOC] Remove _emphasis_ in code blocks which is not handled as emphasis anymore (#15901)
tompng (tomoya ishida)
05:25 PM Revision 37c7ee53 (git): [DOC] Replace rdoc style codeblocks with markdown style backtick codeblocks in markdown documents (#15900)
tompng (tomoya ishida)
04:15 PM Revision 43d879d3 (git): rb_file_join_fastpath: removed useless StringValueCStr
byroot (Jean Boussier)
03:47 PM Revision 19450d85 (git): [DOC] Improve docs for ObjectSpace.define_finalizer
peterzhu2118 (Peter Zhu)
03:31 PM Revision 7e0e9984 (git): rb_file_join_fastpath: optimize searching for separators
`chompdirsep` searches from the start of the string each time, which
perhaps is necessary for certain encodings (not even sure?) but for
the common encodings it's very wasteful. Instead we can start from the
back of the string and only c...
byroot (Jean Boussier)
03:31 PM Revision 6cd45490 (git): Optimize File.join common use case
`File.join` is a hotspot for common libraries such as Zeitwerk
and Bootsnap. It has a fairly flexible signature, but 99% of
the time it's called with just two (or a small number of) UTF-8 strings.
If we optimistically optimize for that ...
byroot (Jean Boussier)
02:07 PM Revision d1dc4bdb (git): [ruby/prism] Fix ripper translator for `__END__`
https://github.com/ruby/prism/commit/2792ac78ca Earlopain (Earlopain _)
08:53 AM Bug #21842: Encoding of rb_interned_str
I've made a short update of the documentation in https://github.com/ruby/ruby/pull/15897, mostly to explain what information is used to determine the encoding of the result.
I've tried to keep the line width usage similar to the origi...
herwin (Herwin W)
07:54 AM Bug #8743: Inconsistent behaviour calling public_methods on class (Plus documentation slightly ambiguous)
I've been working on some tests using `public_methods`, and was bitten by this. I think a documentation update is definitely needed. Docs shouldn't straight-up lie.
Though I personally think that Module (or Class?) should just have di...
trinistr (Alexander Bulancov)
06:55 AM Bug #21828: An incorrect warning message related to `benchmark` is shown when using `benchmark-ips`
Thanks for the fix, but I still get the same warning on Ruby 4.0.1.
```bash
$ bundle exec ruby -v script.rb
ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [x86_64-linux]
/home/y-yagi/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/be...
y-yagi (Yuji Yaginuma)

01/17/2026

02:43 PM Bug #21838 (Closed): Rails seeing degradation (20% slowdown) related to Revision 079ef92b "Implement global allocatable slots and empty pages" (from Sep 5 2024)
peterzhu2118 (Peter Zhu)
02:40 PM Revision 00a3b71e (git): [DOC] Improve docs for ObjectSpace.memsize_of_all
peterzhu2118 (Peter Zhu)
02:05 PM Revision 81e06e70 (git): [ruby/timeout] Improve Timeout.timeout documentation formatting and typos
This commit makes a few minor improvements to the documentation of the `Timeout.timeout` method.
The changes include fixing typos and enhancing formatting for better readability.
We can see the latest version of the documentation here:
...
Masafumi Koba
05:19 AM Revision 78b7646b (git): [Bug #21842] Let `rb_interned_str` return US-ASCII if possible
nobu (Nobuyoshi Nakada)
04:38 AM Revision 8ca2f648 (git): Revert "Fix rb_interned_str: create strings with BINARY (akak ASCII_8BIT) encoding"
This reverts commit 1f3c52dc155fb7fbc42fc8e146924091ba1dfa20. nobu (Nobuyoshi Nakada)
04:07 AM Revision 3e13b7d4 (git): ZJIT: Fix land race
InvokeProc and HIR effects landed without an intermediate rebase so we
got a conflict in the form of a type checker error (not handled new
opcode in a new function).
Max Bernstein
02:19 AM Revision 0e0fad1e (git): ZJIT: Specialize OPTIMIZED_METHOD_TYPE_CALL (#15859)
Closes: https://github.com/Shopify/ruby/issues/865
## Benchmark
### lobsters
- wall clock time
- before patch: Average of last 10, non-warmup iters: 809ms
- after patch: Average of last 10, non-warmup iters: 754ms
- zjit stats below...
Nozomi Hijikata
12:02 AM Bug #21842: Encoding of rb_interned_str
I think it should be US-ASCII for 7bit only strings, as well as `Symbol`s.
[GH-15894](https://github.com/ruby/ruby/pull/15894)
nobu (Nobuyoshi Nakada)

01/16/2026

10:17 PM Bug #21842: Encoding of rb_interned_str
Fixed merged (Redmine seem to be lagging behind, but will probably pick it up).
Backport PRs:
- 4.0: https://github.com/ruby/ruby/pull/15890
- 3.4: https://github.com/ruby/ruby/pull/15891
- 3.3: https://github.com/ruby/ruby...
byroot (Jean Boussier)
08:17 PM Bug #21842: Encoding of rb_interned_str
Sure: https://github.com/ruby/ruby/pull/15888 byroot (Jean Boussier)
08:02 PM Bug #21842: Encoding of rb_interned_str
From https://github.com/truffleruby/truffleruby/issues/4018#issuecomment-3549329873, it seems everyone's expectation is that it returns a BINARY String, like `rb_str_new()`.
@byroot Could you make a PR to fix it?
Eregon (Benoit Daloze)
07:02 PM Bug #21842: Encoding of rb_interned_str
Hum, good find. So the function was exposed as a result of [Feature #13381], before that the function was internal.
In that ticket we didn't discuss the default encoding, but it might be fair to assume it should have been BINARY (aka ...
byroot (Jean Boussier)
04:49 PM Bug #21842 (Closed): Encoding of rb_interned_str
This is one of the API methods to get an fstring. The documentation in the source says the following:
```c
/**
* Identical to rb_str_new(), except it returns an infamous "f"string. What is
* a fstring? Well it is a special su...
herwin (Herwin W)
10:02 PM Revision 8a586af3 (git): Don't force major GC when there are allocatable slots
[Bug #21838]
When we have allocatable slots, we can grow the heap instead of forcing
a major GC. This prevents major GC to be ran very often in certain situations.
See the ticket for more details.
On ruby-bench, we can see that this pa...
peterzhu2118 (Peter Zhu)
09:44 PM Revision 1f3c52dc (git): Fix rb_interned_str: create strings with BINARY (akak ASCII_8BIT) encoding
[Bug #21842]
The documentation always stated as much, and it's consistent with the
rb_str_* family of functions.
byroot (Jean Boussier)
08:59 PM Feature #21827: Deprecating Ripper
For IRB, I think migration pull-request is almost done and it won't take so long to completely migrate to Prism. tompng (tomoya ishida)
08:46 PM Revision c56ce8a6 (git): Remove objspace->flags.has_newobj_hook
We aren't using this anymore and the hook is called in gc.c jhawthorn (John Hawthorn)
08:19 PM Revision 87147ba5 (git): [ruby/prism] Make the ripper shim work with rdoc
The filter class is a 1:1 copy of ruby.
rdoc has 32 test failures. It seems to expect `on_sp` in some cases to render code as written.
https://github.com/ruby/prism/commit/74bb12c825
Earlopain (Earlopain _)
08:11 PM Revision 1c7e19f9 (git): rb_free_tmp_buffer: use ruby_sized_xfree
We know the buffer length, we might as well feed that information
back to the GC.
byroot (Jean Boussier)
05:52 PM Revision 3164d4e8 (git): [ruby/json] Extract json_fast_memcpy16 for readability
https://github.com/ruby/json/commit/1b276c8623 byroot (Jean Boussier)
05:52 PM Revision 456ef914 (git): [ruby/json] Use __builtin_memcpy, if available, to copy overlapping byte ranges in copy_remaining_bytes to avoid a branch to MEMCPY. Additionally use a space as padding byte instead of an 'X' so it can be represented diretly on AArch64 with a single instruction.
https://github.com/ruby/json/commit/643ee11fed samyron (Scott Myron)
05:08 PM Revision bc6c895d (git): ZJIT: Create HIR effect system (#15359)
**Progress**
I've added a new directory, `zjit/src/hir_effect`. It follows the same structure as `zjit/src/hir_type` and includes:
- a ruby script to generate a rust file containing a bitset of effects we want to track
- a modified `hir....
Jacob (Jacob Jacob)
03:15 PM Revision 91744cd2 (git): Include abi.h in the dependency of rubyspec-capiext
nobu (Nobuyoshi Nakada)
12:07 PM Revision 074a23ab (git): [ruby/prism] Add `Ripper.tokenize` to translation layer
It's public API and trivial to implement.
https://github.com/ruby/prism/commit/e77545f8b5
Earlopain (Earlopain _)
10:52 AM Revision f872901b (git): MatchData: Avoid large stack allocations in MatchData (GH-15872)
afurm (Andrii Furmanets)
09:27 AM Revision 16cd9daa (git): Rust interface is out of our scope
nobu (Nobuyoshi Nakada)
09:14 AM Feature #21795: Methods for retrieving ASTs
Rails' `_callable_to_source_string` would be a good use case for this, see https://github.com/rails/rails/pull/56624 Eregon (Benoit Daloze)
09:08 AM Bug #21816 (Closed): iseq code_location of proc changed
Eregon (Benoit Daloze)
08:22 AM Bug #21816: iseq code_location of proc changed
If I understand correctly, this is intended behavior to include the "->" stabby part in the full source definition.
I've sent a PR to rails to work around this: https://github.com/rails/rails/pull/56624
If that makes sense this can...
zzak (zzak _)
07:52 AM Revision 67d4ceb5 (git): Expand `rb_data_type_t::reserved` for future use
nobu (Nobuyoshi Nakada)
07:47 AM Revision a797561e (git): Update Typed Data dump on debuggers [ci skip]
nobu (Nobuyoshi Nakada)
05:28 AM Bug #21841: bootstraptest is failed with OpenSUSE leap 16.0
@nobu Thanks. I backport #21715 to `ruby_3_3`. I'll wait to see next build. hsbt (Hiroshi SHIBATA)
02:47 AM Bug #21841: bootstraptest is failed with OpenSUSE leap 16.0
Maybe related to #21715? nobu (Nobuyoshi Nakada)
02:17 AM Bug #21841 (Closed): bootstraptest is failed with OpenSUSE leap 16.0
I update OpenSUSE leap instance to 16.0 from 15.x. After that, bootstraptest is failing with Ruby 3.2-3.4. Ruby 4.0 and master are working fine.
Ruby 3.4: https://rubyci.s3.amazonaws.com/opensuseleap/ruby-3.4/log/20260115T223828Z.fail...
hsbt (Hiroshi SHIBATA)
05:27 AM Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
ruby_3_3 commit:d8c21d0780e0fc061a396e66d25b7b87de3108a4 merged revision(s) commit:d209e6f1c0a93ad3ce1cc64dd165a6b67672614d. hsbt (Hiroshi SHIBATA)
05:26 AM Revision d8c21d07 (git): merge revision(s) d209e6f1c0a93ad3ce1cc64dd165a6b67672614d: [Backport #21715]
search_nonascii(): Replace UB pointer cast with memcpy
Casting a pointer to create an unaligned one is undefined behavior in C
standards. Use memcpy to express the unaligned load instead to play by
the rules.
...
hsbt (Hiroshi SHIBATA)
04:15 AM Bug #21838: Rails seeing degradation (20% slowdown) related to Revision 079ef92b "Implement global allocatable slots and empty pages" (from Sep 5 2024)
peterzhu2118 (Peter Zhu) wrote in #note-4:
> Thank you for reporting this issue.
I am glad to help, even in this small way.
> ...
That is great news.
I look forward to seeing this merged and eventually released, hopefully in a ...
bluz71 (Dennis B)
02:12 AM Bug #21838: Rails seeing degradation (20% slowdown) related to Revision 079ef92b "Implement global allocatable slots and empty pages" (from Sep 5 2024)
Thank you for reporting this issue.
I debugged it and have a fix here: https://github.com/ruby/ruby/pull/15882
I distilled the reproduction down to this script:
<details>
<summary>Script</summary>
```ruby
require "bundler...
peterzhu2118 (Peter Zhu)
03:00 AM Feature #21768: Remove deprecated functions
`curb` is affected with removing `rb_iterate`. I fixed that at https://github.com/taf2/curb/pull/468 hsbt (Hiroshi SHIBATA)
02:12 AM Revision f7d3f675 (git): Win32: refine handing of missing-baseruby failure
`exit` in `cmd.exe` ignores non-option, non-digits argument, and exits with the current %ERRORLEVEL%. nobu (Nobuyoshi Nakada)
02:08 AM Revision 8c39d8d3 (git): Win32: fix baseruby at reconfig
Get rid of the built `ruby.exe` in the current directory. nobu (Nobuyoshi Nakada)
02:01 AM Revision 81420d6e (git): Win32: split `-basic-vars-` step
nobu (Nobuyoshi Nakada)
01:49 AM Bug #21723 (Closed): `binding.irb` raises a LoadError under `bundle exec` when Gemfile contains `path:` or `git:`
I created backport PR for Ruby 4.0: https://github.com/ruby/ruby/pull/15881 hsbt (Hiroshi SHIBATA)
01:45 AM Feature #21766 (Rejected): Pathname + FileUtils making sweet music together
https://github.com/ruby/pathname/issues/64 is closed now.
> it seems to be OK for a library like fileutils to be aware of it and extend it?
I prefer this proposal. I think it would be better to do the same for Pathname methods that...
hsbt (Hiroshi SHIBATA)
01:27 AM Feature #13683: Add strict Enumerable#single
Of the proposed options I still like `one!` best. It conveys both returning a single element and enforcing that there's exactly one.
headius (Charles Nutter)
12:51 AM Feature #21835 (Assigned): Unbundle bunled gems like net-ftp
hsbt (Hiroshi SHIBATA)

01/15/2026

10:57 PM Revision 5d2fd508 (git): Fix duplicate static assert names in imemo.h
peterzhu2118 (Peter Zhu)
10:57 PM Revision f7ae32ed (git): Pin ID symbols
Symbols with a corresponding ID should be pinned because they can be used
by things that don't support compaction.
peterzhu2118 (Peter Zhu)
10:57 PM Revision 6e480e67 (git): Allow symbols to move in compaction
peterzhu2118 (Peter Zhu)
09:24 PM Bug #21838: Rails seeing degradation (20% slowdown) related to Revision 079ef92b "Implement global allocatable slots and empty pages" (from Sep 5 2024)
byroot (Jean Boussier) wrote in #note-2:
> So I can somewhat repro. On my machine (macOS/M3) about 4.0 is half-way between 3.3 and 3.4.
Thank you byroot. I am most pleased that it is reproducible, especially 3.3 vs 3.4.
Note, if I...
bluz71 (Dennis B)
09:55 AM Bug #21838: Rails seeing degradation (20% slowdown) related to Revision 079ef92b "Implement global allocatable slots and empty pages" (from Sep 5 2024)
So I can somewhat repro. On my machine (macOS/M3) about 4.0 is half-way between 3.3 and 3.4.
I added:
```
pp GC.stat
pp GC.stat_heap
```
At the end of your script, given based on the description GC is likely to play a role ...
byroot (Jean Boussier)
05:26 AM Bug #21838 (Closed): Rails seeing degradation (20% slowdown) related to Revision 079ef92b "Implement global allocatable slots and empty pages" (from Sep 5 2024)
Hello,
I noticed a performance degradation with Ruby 3.4 when seeding my Rails application, which does image derivation via the Shrine Gem and `libvips` image library.
I skipped Ruby 3.4 hoping that 4.0 would magically solve my per...
bluz71 (Dennis B)
09:15 PM Revision c34c7def (git): [ruby/prism] Fix locations for invalid syntax when using `expect1_opening`
Followup to https://github.com/ruby/prism/pull/3827
It sets the start to the opening but it should instead just
continue on as usual.
Fixes https://github.com/ruby/prism/issues/3851
Notice how the AST actually contains "123" in both th...
Earlopain (Earlopain _)
09:03 PM Revision 15939e3c (git): [ruby/prism] Make irb work with the ripper shim
This is everything that `irb` uses. It works in their test-suite, but there are 20 failures when using the shim that I haven't looked into at all.
`parse` is not used by `irb`. `scan` is, and it's basically `parse` but also including er...
Earlopain (Earlopain _)
07:59 PM Feature #13683: Add strict Enumerable#single
mame (Yusuke Endoh) wrote in #note-48:
> But no one seriously considered it because we can find no use case for it.
Uh, seriously? I gave an example in #note-16 and we have 11 other similar instances in our codebase. But none that ra...
Dan0042 (Daniel DeLorme)
06:56 PM Bug #21840 (Open): Locking a mutex can lead to starvation
Continually locking a mutex `m` can lead to starvation if all other threads are on the waitq of `m`.
Let `T` be the thread that keeps on acquiring mutex `m` in a loop.
Iteration 1:
1) `T` locks mutex `m`
2) All other threads at...
luke-gru (Luke Gruber)
05:00 PM Revision ce390f19 (git): ZJIT: Remove redundant unboxing
nozomemein (Nozomi Hijikata)
05:00 PM Revision 844f072c (git): ZJIT: Inline ArrayAref
nozomemein (Nozomi Hijikata)
05:00 PM Revision 256c806a (git): ZJIT: Write the result of UnboxFixnum HIR as type spec so that we can make use of it later (e.g. fold_constants for ArrayAref)
nozomemein (Nozomi Hijikata)
05:00 PM Revision 065db7cf (git): ZJIT: Rename ArrayArefFixnum -> ArrayAref
nozomemein (Nozomi Hijikata)
04:35 PM Feature #21837: Introduce socket hooks in Fiber Scheduler interface
> What's the advantage to do it this way vs just the non-blocking + #io_wait way? (the description doesn't explain that)
This is specifically to allow using the io_uring interface to perform socket I/O in a fiber scheduler implementat...
noteflakes (Sharon Rosner)
11:56 AM Feature #21837: Introduce socket hooks in Fiber Scheduler interface
What's the advantage to do it this way vs just the `non-blocking` + `#io_wait` way? (the description doesn't explain that) Eregon (Benoit Daloze)
01:27 PM Feature #21800: `Dir.foreach` and `Dir.each_child` to optionally yield `File::Stat` object alongside the children name
> those are pretty "special" files so I think it's not a big deal to use camelCase there.
Yes, they're very unlikely to be used.
> ...
I'm fine either way. My initial prototype was using symbols: https://github.com/ruby/ruby/pull/...
byroot (Jean Boussier)
01:02 PM Feature #21800: `Dir.foreach` and `Dir.each_child` to optionally yield `File::Stat` object alongside the children name
byroot (Jean Boussier) wrote in #note-11:
> In principle in make sense, but in practice that other method returns strings, and weird ones at that:
> ...
I noticed as well but those are pretty "special" files so I think it's not a big dea...
Eregon (Benoit Daloze)
12:12 PM Feature #21800: `Dir.foreach` and `Dir.each_child` to optionally yield `File::Stat` object alongside the children name
> I think we should match File::Stat#ftype for the naming for consistency.
In principle in make sense, but in practice that other method returns strings, and weird ones at that:
> ...
If we yield symbols instead, it's already not s...
byroot (Jean Boussier)
11:51 AM Feature #21800: `Dir.foreach` and `Dir.each_child` to optionally yield `File::Stat` object alongside the children name
I think yielding Symbols are nicer, returning a plain Integer feels too low level IMO and people might misuse that e.g. `DT_UNKNOWN` is 0 on some platforms.
It's also more verbose and less clear (due to unclear C naming) for the Ruby cal...
Eregon (Benoit Daloze)
12:16 PM Bug #21820: "vm_call_cfunc: cfp consistency error" occurs during rdoc generation when installing Ruby 4.0.0 via rbenv on Ubuntu 24.04
mame (Yusuke Endoh) wrote in #note-4:
> Could you please try to build ruby 4.0.1 without rbenv?
SEGV in `make install`
<details>
<summary>log</summary>
```
[sue445@sue445-win] [01-15 20:44:10] $ make install
file2lastrev...
sue445 (Go Sueyoshi)
11:32 AM Revision 11edc286 (git): Make `Array#map` and `Array#select` more tolerant
Only when YJIT is enabled, the redefinition of `Array#<<` affects
these methods.
nobu (Nobuyoshi Nakada)
08:20 AM Revision 6afac93c (git): Restore irb to warning target
Users should add `irb` to their Gemfile.
`Gem::BUNDLED_GEMS.force_activate 'irb'` is workaround for short term.
hsbt (Hiroshi SHIBATA)
08:20 AM Revision ca9c6180 (git): Suppress bundled gem warning on `binding.irb'
This patch silences the "this won't work in the next version of Ruby"
warning displayed when irb is autoloaded via `binding.irb`.
main.rb:1: warning: irb used to be loaded from the standard library, but is not part of the default ge...
Daisuke Aritomo
07:41 AM Feature #21827: Deprecating Ripper
> the better API might allow more correctness too for what IRB does with Ripper
I would think that irb has long since dealt with the particularities of ripper. It's already implemented now, I don't think correctness would improve noti...
Earlopain (Earlopain _)
07:16 AM Revision 2d79cc9b (git): Added example for bundle/inline
hsbt (Hiroshi SHIBATA)
07:16 AM Revision a28c8561 (git): Add comments
Daisuke Aritomo
07:16 AM Revision 270c7fce (git): Fake BUNDLE_GEMFILE and BUNDLE_LOCKFILE to let checks pass
Bundler::Runtime#setup requires a real existing lockfile (see
Bundler::SharedHelpers#default_lockfile).
Daisuke Aritomo
07:16 AM Revision 943b0859 (git): [Bug #21723] Let `binding.irb` properly load irb by fixing force_activate()
This patch fixes a problem where `binding.irb` (= force_activate('irb'))
fails under `bundle exec` when the Gemfile does not contain `irb` and
does contain a gem which is (1) not installed in GEM_HOME (2) sourced
using `path:`/`git:`.
T...
Daisuke Aritomo
07:13 AM Misc #21839: DevMeeting-2026-02-12
* [Feature #19107] Allow trailing comma in method signature (k0kubun)
* We provided use cases in response to Matz's question, but no progress for 3 years. Can we clarify why we're not adding this?
k0kubun (Takashi Kokubun)
06:49 AM Misc #21839 (Open): DevMeeting-2026-02-12
# The next dev meeting
**Date: 2026/02/12 13:00-17:00** (JST)
Log: *TBD*
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at the bug tracker.
- Dev meeting is a place we can ask Matz, nobu, nurse and o...
mame (Yusuke Endoh)
06:55 AM Revision de17b84a (git): Update bundled gems list as of 2026-01-15
git[bot]
06:50 AM Misc #21777 (Closed): DevMeeting-2026-01-14
mame (Yusuke Endoh)
03:30 AM Revision 886202ba (git): Count assertions in child processes
Fix up GH-15785. nobu (Nobuyoshi Nakada)
02:36 AM Revision 189bb64a (git): [ci-skip] Shorter example for `Module#instance_method`
The previous example code was too complex and includes extra logics
that's not relevant to its main usage: `bind`.
The new example code focuses on `bind_call` so that readers can
understand how it works more easily.
okuramasafumi (Masafumi OKURA)
02:14 AM Revision 806031d2 (git): Windows: Remove workaround for LLVM windres
It was introduced as part of the Arm64-on-Windows patch:
https://github.com/ruby/ruby/pull/8995
But a few days later it was fixed on the LLVM side for llvm-18 and backported to MSYS2:
https://github.com/msys2/MINGW-packages/pull/191...
Lars Kanis
12:10 AM Revision 4a21b836 (git): ZJIT: Optimize common `invokesuper` cases (#15816)
* ZJIT: Profile `invokesuper` instructions
* ZJIT: Introduce the `InvokeSuperDirect` HIR instruction
The new instruction is an optimized version of `InvokeSuper` when we know the `super` target is an ISEQ.
* ZJIT: Expand definition of...
Kevin Menard
 

Also available in: Atom