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... -
07:40 AM Revision 0f1eea09 (git): [ruby/rubygems] Skip failing tests
- https://github.com/ruby/rubygems/commit/ee68fd8d20
-
07:40 AM Revision d9323587 (git): [ruby/rubygems] Appease the linter again
- https://github.com/ruby/rubygems/commit/92f35e9684
-
07:40 AM Revision 2efffe09 (git): [ruby/rubygems] Appease the linter
- https://github.com/ruby/rubygems/commit/aba307411a
-
07:40 AM Revision c9597416 (git): [ruby/rubygems] Add test
- https://github.com/ruby/rubygems/commit/3d8140b289
-
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 -
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_... -
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
-
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 -
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. - 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.
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... -
04:25 PM Bug #21844 (Open): Inconsistent ArgumentError message for Data::define.new
-
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... -
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` ... -
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/ -
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>`. -
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... -
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. -
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. -
09:37 PM Revision 1bc51114 (git): ZJIT: Add a smoke test for --zjit-trace-exits
- Better than nothing!
-
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... -
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. - 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... -
06:49 PM Revision 310da6cd (git): Added example for bundle/inline
- 06:49 PM Revision 3046e278 (git): Add comments
- 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). - 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... - 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. -
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 -
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 ...
-
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.
-
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. -
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... -
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` ... -
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)
-
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` ... -
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`. -
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 -
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> -
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... -
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. -
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... -
07:33 AM Revision 990cf128 (git): file.c: Inc macro now handle NULL encoding
-
07:33 AM Revision 240a58ec (git): file.c: skiproot doesn't need encoding
-
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 ... -
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 `... -
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... -
01:32 AM Revision fa910e2b (git): [ruby/mmtk] Restore MMTK_DEBUG around zeroing in obj_free
- https://github.com/ruby/mmtk/commit/ae69d69768
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... -
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... -
10:09 PM Revision c939330b (git): [DOC] Escape Coverage
-
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... -
08:17 PM Revision 6f890976 (git): JITs: Fix comment about ARM64 stack growth direction [ci skip]
-
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
-
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 -
12:03 PM Revision e85fd7c8 (git): [ruby/prism] Fix docs of opening_loc/closing_loc of BlockNode
- https://github.com/ruby/prism/commit/0b22d9060a
- 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... -
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... -
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 - 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 -
03:51 AM Revision 631bf19b (git): Skip Onigmo file sync. This target is only for commit sync.
- 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... -
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`.
-
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.
-
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... -
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.
... -
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 ...
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
-
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
-
09:34 PM Revision 4111c546 (git): [ruby/mmtk] Replace RUBY_ASSERT with MMTK_ASSERT
- https://github.com/ruby/mmtk/commit/e92baf15ef
-
07:59 PM Revision b536c6a8 (git): [DOC] Remove _emphasis_ in code blocks which is not handled as emphasis anymore (#15901)
-
05:25 PM Revision 37c7ee53 (git): [DOC] Replace rdoc style codeblocks with markdown style backtick codeblocks in markdown documents (#15900)
-
04:15 PM Revision 43d879d3 (git): rb_file_join_fastpath: removed useless StringValueCStr
-
03:47 PM Revision 19450d85 (git): [DOC] Improve docs for ObjectSpace.define_finalizer
-
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... -
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 ... -
02:07 PM Revision d1dc4bdb (git): [ruby/prism] Fix ripper translator for `__END__`
- https://github.com/ruby/prism/commit/2792ac78ca
-
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... -
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... -
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...
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)
-
02:40 PM Revision 00a3b71e (git): [DOC] Improve docs for ObjectSpace.memsize_of_all
- 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:
... -
05:19 AM Revision 78b7646b (git): [Bug #21842] Let `rb_interned_str` return US-ASCII if possible
-
04:38 AM Revision 8ca2f648 (git): Revert "Fix rb_interned_str: create strings with BINARY (akak ASCII_8BIT) encoding"
- This reverts commit 1f3c52dc155fb7fbc42fc8e146924091ba1dfa20.
- 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). - 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... -
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)
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... -
08:17 PM Bug #21842: Encoding of rb_interned_str
- Sure: https://github.com/ruby/ruby/pull/15888
-
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? -
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 ... -
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... -
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... -
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. -
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.
-
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
-
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 -
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. -
05:52 PM Revision 3164d4e8 (git): [ruby/json] Extract json_fast_memcpy16 for readability
- https://github.com/ruby/json/commit/1b276c8623
-
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
-
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.... -
03:15 PM Revision 91744cd2 (git): Include abi.h in the dependency of rubyspec-capiext
-
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 -
10:52 AM Revision f872901b (git): MatchData: Avoid large stack allocations in MatchData (GH-15872)
-
09:27 AM Revision 16cd9daa (git): Rust interface is out of our scope
-
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
-
09:08 AM Bug #21816 (Closed): iseq code_location of proc changed
-
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... -
07:52 AM Revision 67d4ceb5 (git): Expand `rb_data_type_t::reserved` for future use
-
07:47 AM Revision a797561e (git): Update Typed Data dump on debuggers [ci skip]
-
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.
-
02:47 AM Bug #21841: bootstraptest is failed with OpenSUSE leap 16.0
- Maybe related to #21715?
-
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... -
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.
-
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.
... -
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 ... -
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... -
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
-
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%.
-
02:08 AM Revision 8c39d8d3 (git): Win32: fix baseruby at reconfig
- Get rid of the built `ruby.exe` in the current directory.
-
02:01 AM Revision 81420d6e (git): Win32: split `-basic-vars-` step
-
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
-
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... -
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.
-
12:51 AM Feature #21835 (Assigned): Unbundle bunled gems like net-ftp
01/15/2026
-
10:57 PM Revision 5d2fd508 (git): Fix duplicate static assert names in imemo.h
-
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. -
10:57 PM Revision 6e480e67 (git): Allow symbols to move in compaction
-
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... -
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 ... -
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... -
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... -
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... -
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... -
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... -
05:00 PM Revision ce390f19 (git): ZJIT: Remove redundant unboxing
-
05:00 PM Revision 844f072c (git): ZJIT: Inline ArrayAref
-
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)
-
05:00 PM Revision 065db7cf (git): ZJIT: Rename ArrayArefFixnum -> ArrayAref
-
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... -
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)
-
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/... -
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... -
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... -
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... -
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... -
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. -
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. - 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... -
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... -
07:16 AM Revision 2d79cc9b (git): Added example for bundle/inline
- 07:16 AM Revision a28c8561 (git): Add comments
- 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). - 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... -
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? -
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... - 06:55 AM Revision de17b84a (git): Update bundled gems list as of 2026-01-15
-
06:50 AM Misc #21777 (Closed): DevMeeting-2026-01-14
-
03:30 AM Revision 886202ba (git): Count assertions in child processes
- Fix up GH-15785.
-
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. - 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... - 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...