Project

General

Profile

Activity

From 12/03/2025 to 12/09/2025

Today

10:37 AM Revision 99133a66 (git): [ruby/net-http] Check whether TCPSocket#initialize supports open_timeout once and without exceptions
* See discussion in https://github.com/ruby/net-http/pull/224
* This check is known to work on at least CRuby, TruffleRuby and JRuby.
* Exceptions show up with `ruby -d`/`$DEBUG == true` and would show for every Net::HTTP instance.
http...
Eregon (Benoit Daloze)
09:21 AM Bug #21717 (Feedback): Cleanup fiber scheduler after fork
mame (Yusuke Endoh)
09:20 AM Misc #21762 (Assigned): Box: Inspect improvements
mame (Yusuke Endoh)
09:17 AM Bug #21760 (Assigned): Ruby::Box: a couple of require-related problems
mame (Yusuke Endoh)
09:17 AM Bug #21761 (Assigned): NameError: uninitialized constant only when RUBY_BOX=1
mame (Yusuke Endoh)
09:13 AM Bug #21645 (Closed): Can't `require "resolve"` on Windows under Bundler without warnings
hsbt (Hiroshi SHIBATA)
09:06 AM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
Actually MN threads does similar thing.
```
$ time RUBY_MN_THREADS=1 make run
./miniruby -I../../src/trunk/lib -I. -I.ext/common -r./x86_64-linux-fake ../../src/trunk/test.rb
voluntary_ctxt_switches: 56
nonvoluntary_ctxt_switch...
ko1 (Koichi Sasada)
09:02 AM Bug #21714 (Assigned): Prism and parse.y inconsistency in `def a = a b do 1 end`
mame (Yusuke Endoh)
09:01 AM Bug #21713 (Assigned): Prism accepts pattern matching in modifier rescue followed by operators that shouldn't be allowed
mame (Yusuke Endoh)
09:00 AM Misc #21688 (Closed): Ruby::Box maturing path
zverok (Victor Shepelev)
08:57 AM Misc #21688: Ruby::Box maturing path
Can we close this? mame (Yusuke Endoh)
08:48 AM Revision 79c57d74 (git): Fixed by `misspell -w -error -source=text`
hsbt (Hiroshi SHIBATA)
08:18 AM Bug #21676 (Closed): make[2]: *** No rule to make target '../../../.././ext/-test-/namespace/yay1/yay1.h', needed by 'yay1.o'. Stop.
nobu (Nobuyoshi Nakada)
08:07 AM Feature #21637 (Feedback): Tracing global variable assignment
mame (Yusuke Endoh)
07:51 AM Misc #21768: Remove deprecated functions
I agree with John, we're very close to release, even more so if you consider a lot of people will be away and checked out over the holidays almost a week before release.
However I do absolutely agree that the C API is full of deprecated...
byroot (Jean Boussier)
07:45 AM Revision 25f277ab (git): Fix typos in gc.c and gc.rb
hi
07:17 AM Bug #21694: Crash when looking up super method from BasicObject
@k0kubun it was backported in https://github.com/ruby/ruby/pull/15322 byroot (Jean Boussier)
02:43 AM Revision 59314911 (git): [ruby/prism] Nested heredoc with newline terminator
When you have a heredoc interpolated into another heredoc where
the inner heredoc is terminated by a newline, you need to avoid
adding the newline character a second time.
https://github.com/ruby/prism/commit/8eeb5f358b
kddnewton (Kevin Newton)
02:43 AM Revision 268cbb29 (git): [ruby/prism] Fully handle unreferencing a block exit
If a block exit has a further block exit in its subtree, we need to
keep recursing.
https://github.com/ruby/prism/commit/855d81a4a8
kddnewton (Kevin Newton)
02:43 AM Revision cbf39c3b (git): [ruby/prism] Fix up call target node when invalid
When there is an invalid syntax tree, we need to make sure to fill
in the required call operator location.
https://github.com/ruby/prism/commit/937313d7f0
kddnewton (Kevin Newton)
02:43 AM Revision 71354a98 (git): [ruby/prism] Fix hash pattern location when missing nodes
https://github.com/ruby/prism/commit/0ad30561e2 kddnewton (Kevin Newton)
02:01 AM Revision 12c16f9d (git): [ruby/rubygems] Fix Bundler removing executables after creating them
When running a fresh `bundle install` with gems that contains
executables, Bundler will generate binstubs but soon after will remove
them. This is a regression introduced in https://github.com/ruby/rubygems/commit/573ffad3ea4a.
This res...
Edouard CHIN
01:48 AM Misc #21689: DevMeeting-2025-12-11
@chucke Please follow the instruction next time:
> The format is strict. We'll use this script to automatically create an markdown-style agenda. We may ignore a comment that does not follow the format.
This time I modified your com...
mame (Yusuke Endoh)
12:31 AM Misc #21689: DevMeeting-2025-12-11
* [Misc #21769] Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git (k0kubun)
* I want Ruby 4.0.0 to use `v4.0.0` as its git tag name instead of `v4_0_0`. If we release rc1, can we call it `v4.0.0-rc1` too?
* Do we also want to...
k0kubun (Takashi Kokubun)
01:41 AM Misc #21770: Stop bumping RUBY_PATCHLEVEL in release versions
I agreed this.
I already hide patchlevel from lockfile of Bundler 4.
https://github.com/ruby/rubygems/pull/7772
hsbt (Hiroshi SHIBATA)
12:24 AM Misc #21770 (Open): Stop bumping RUBY_PATCHLEVEL in release versions
## Proposal
* Stop bumping `RUBY_PATCHLEVEL` from `0` in Ruby 4.0.0+
## Motivation
* As a stable branch maintainer, I find it frustrating that reverting a commit made by `tool/merger.rb` often causes a conflict on `#define RUBY_...
k0kubun (Takashi Kokubun)
01:37 AM Revision 19172d64 (git): [ruby/rubygems] Fix indentation of the info message for default_cli_command
* It looked like:
In a future version of Bundler, running `bundle` without argument will no longer run `bundle install`.
Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly fo...
Eregon (Benoit Daloze)
01:37 AM Revision fab94ecd (git): [ruby/rubygems] Fix the config suggestion in the warning for `$ bundle`
* `install_or_cli_help` does not exist for older Bundler like Bundler 2
and so results in a confusing error on Bundler 2:
```
$ bundle
Could not find command "".
```
* See https://github.com/ruby/rubygems/pull/9136/files#r25923...
Eregon (Benoit Daloze)
01:09 AM Revision 056997cb (git): Remove needless `ruby2_keywords` field from `struct rb_args_info`
`ruby2_keywords` is set only to be `0` in parse.y.
However `args->ruby2_keywords` is initialized with `0` by `MEMZERO`
in `rb_node_args_new` function and `body->param.flags.ruby2_keywords`
is initialized with `0` by `ZALLOC` in `rb_iseq_...
yui-knk (Kaneko Yuichiro)
01:09 AM Revision 576acb95 (git): Remove `FORWARD_ARGS_WITH_RUBY2_KEYWORDS` check
Because `FORWARD_ARGS_WITH_RUBY2_KEYWORDS` definition was removed
by 4f77d8d3289ece0e3537d9273a5c745120bff59a.
yui-knk (Kaneko Yuichiro)
01:02 AM Misc #21769: Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git
I'm fine whether it's `vX.Y.Z` or `X.Y.Z` too. I'm personally used to `vX.Y.Z` used by `rake release` ([ref](https://github.com/ruby/ruby/blob/007a70a15c2911845f83872b83d39eeca7f0f607/lib/bundler/gem_helper.rb#L193)), so I just didn't ha... k0kubun (Takashi Kokubun)
12:26 AM Misc #21769: Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git
Is there a reason to prefer `vX.Y.Z` over `X.Y.Z`? The `v` tag prefix does seem more popular, though both are widely used. The historical reason for using `_` in tags also applies to the reason the `v` prefix is used. If we are switching... jeremyevans0 (Jeremy Evans)
12:54 AM Bug #19112: Ractor garbage collection breaks/disables all active tracepoints
I think there are a couple problems interacting here.
* First is that the GC hooks were being registered specifically on one Ractor, which doesn't make sense as GC could be run inside an arbitrary Ractor (and is global)
* Second is t...
jhawthorn (John Hawthorn)
12:38 AM Revision de94f88c (git): Register internal tracepoints globally
Internal tracepoints only make sense to run globally, and they already
took completely different paths.
jhawthorn (John Hawthorn)
12:38 AM Revision 55668d74 (git): Only globally clear the flag being cleared
This solution is not quite correct because it doesn't solve multiple
Ractors subscribing to the same event, but this will avoid unrelated
events clobbering the flags for other events.
This however will work corretly for subscribing to g...
jhawthorn (John Hawthorn)
12:36 AM Bug #21187: Strings concatenated with `\` getting frozen with literal hashes (PRISM only)
ruby_3_4 commit:6dc27d14a0427da7b28a6884578009a9740f69fd, commit:bc40e758307c9be3e39497b5010fbaceb14bf8c7, commit:d282e76fb6c9f56ac44b3abfc8a3fc9f10edd6f0. k0kubun (Takashi Kokubun)

12/08/2025

11:54 PM Revision 007a70a1 (git): Test that Ractor.make_shareable mutates the original Proc
Eregon (Benoit Daloze)
11:54 PM Revision 4cb3a61b (git): Fix Ractor test to not depend on the previous test
Eregon (Benoit Daloze)
11:54 PM Revision 39a3b886 (git): Fix some descriptions in bootstraptest/test_ractor.rb
Eregon (Benoit Daloze)
11:54 PM Revision 09f8b8e3 (git): Test that Ractor.shareable_proc keeps the original Proc intact
Eregon (Benoit Daloze)
11:52 PM Revision ca8630b6 (git): [ruby/rubygems] Extract and generate only bundler bin files instead of full installation.
https://github.com/ruby/rubygems/commit/a70e573973 hsbt (Hiroshi SHIBATA)
11:44 PM Misc #21769 (Open): Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git
## Proposal
* Use `vX.Y.Z` (e.g. `v4.0.0`) instead of `vX_Y_Z` (e.g. `v4_0_0`) as git tag names from Ruby 4.0.0
* Also use `-` for preview/rc releases, e.g. `v4.0.0-rc1` instead of `v4_0_0_rc1`
## Motivation
* Inconsistent ...
k0kubun (Takashi Kokubun)
11:30 PM Revision 6dc27d14 (git): Interpolation with only string literals must not be frozen
Basically a redo of https://github.com/ruby/ruby/commit/a1403fb7cbd1fe0df97c932be9814c86081783dc
but respecting the frozen string literal magic comment
Fixes [Bug #21187]
Earlopain (Earlopain _)
11:30 PM Revision bc40e758 (git): Interpolated strings must not be frozen
Strings concatenated with backslash may end up being frozen when they
shouldn't be. This commit fixes the issue. It required a change
upstream in Prism, but also a change to the Prism compiler in CRuby.
https://github.com/ruby/prism...
tenderlovemaking (Aaron Patterson)
11:30 PM Revision d282e76f (git): Bump Prism to v1.5.2
[Backport #21187] k0kubun (Takashi Kokubun)
11:04 PM Bug #21187: Strings concatenated with `\` getting frozen with literal hashes (PRISM only)
Filed https://github.com/ruby/ruby/pull/15453 k0kubun (Takashi Kokubun)
11:03 PM Bug #21648: [prism] ruby crashes for `for * in [10]; end`
ruby_3_4 commit:d0b778cd19fdda858121d8f2405da2768603c9b1 merged revision(s) commit:0b0da6c4b26f80ad6985722d3fc0f5cdee09125d. k0kubun (Takashi Kokubun)
10:18 PM Bug #21648: [prism] ruby crashes for `for * in [10]; end`
> can you mark for backport?
@Earlopain I gave you "Contributor" role on the Redmine project. You should be able to update the "Backport" field yourself going forward.
k0kubun (Takashi Kokubun)
11:03 PM Revision d0b778cd (git): merge revision(s) 0b0da6c4b26f80ad6985722d3fc0f5cdee09125d: [Backport #21648]
[PATCH] Correctly compile splats in for-loop index in prism
Fixes [Bug #21648]
This is a followup to https://github.com/ruby/ruby/pull/13597.
The added test passed but didn't emit the same instructions.
...
k0kubun (Takashi Kokubun)
11:01 PM Revision 55ea3ec0 (git): Fix strict aliasing warning in rb_int128_to_numeric
If we don't have uint128, then rb_int128_to_numeric emits a strict
aliasing warning:
numeric.c:3641:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
3641 | return rb_uin...
peterzhu2118 (Peter Zhu)
10:50 PM Misc #21768: Remove deprecated functions
To me it seems too close to the release to make this kind of breaking change. Maybe we can consider it for Ruby 4.1 instead? It would be nice if removals made it into a `-preview` release. jhawthorn (John Hawthorn)
12:38 PM Misc #21768 (Open): Remove deprecated functions
There many deprecated functions.
Why we carry them over the new major version?
Functions to be removed:
- `rb_clear_constant_cache` deprecated for 3 years
- postponed job APIs deprecated for 2 years
- old APIs to allocate a data o...
nobu (Nobuyoshi Nakada)
10:47 PM Bug #21764: encoding of warning for depreciated global variables is not set
Backporting this causes conflicts. Could you file a backport PR to `ruby_3_4` please? k0kubun (Takashi Kokubun)
10:46 PM Bug #21705: `UNIXServer.open(nil)` segfaults on Windows
ruby_3_4 commit:955decc1da6cd2441c24d22e8909a3e995973769 merged revision(s) commit:beb85e7eeee4163cd45b69645a60cdb942f72c05. k0kubun (Takashi Kokubun)
10:46 PM Revision 955decc1 (git): merge revision(s) beb85e7eeee4163cd45b69645a60cdb942f72c05: [Backport #21705]
[PATCH] [Bug #21705] Fix segfaults on Windows
It should check the type of the argument and coercion before
converting the encoding.
k0kubun (Takashi Kokubun)
10:45 PM Bug #21680: Integer#digits bug starting from Ruby 3.1
ruby_3_4 commit:fe8221af30768cbd15409d4cc52b2bb18e91667e merged revision(s) commit:f4f728b319086eea3db6e9909fb9c849c276f813. k0kubun (Takashi Kokubun)
10:44 PM Revision fe8221af (git): merge revision(s) f4f728b319086eea3db6e9909fb9c849c276f813: [Backport #21680]
[PATCH] [Bug #21680] Fix (base**power_of_two).digits(base) bug (#15144)
Fix wrong condition in base multiplying loop.
k0kubun (Takashi Kokubun)
10:43 PM Bug #21673: Segmentation Fault in IRB when refining `Kernel#puts` using `Module#refine` (Regression since Ruby 3.4)
ruby_3_4 commit:625eeae0db2749e62152d8a750706eff24a271d0 merged revision(s) commit:a4dff09be79b52288a47658964d25e5aa84fc960. k0kubun (Takashi Kokubun)
10:38 PM Revision 625eeae0 (git): merge revision(s) a4dff09be79b52288a47658964d25e5aa84fc960: [Backport #21265]
[PATCH] [Bug #21673] Fix resolving refined module-defined method
A method defined in a module has no `defined_class`, use the ICLASS
for it as the `defined_class`.
k0kubun (Takashi Kokubun)
10:36 PM Bug #21655: segfault when building 3.3.10 with GCC 15.2.1, regression from 3.3.9
ruby_3_4 commit:da66b64a18414d5ece52512eb016c1af2ede1730 merged revision(s) commit:9d44cb0b2b5520b2b299851003ca2a97bf1e2079, commit:367ddd445cdf5ccc55a0481c944746ef595f72f7, commit:48dce7874fcb571765635b32fa6a3e3a12e228f8. k0kubun (Takashi Kokubun)
10:36 PM Revision da66b64a (git): merge revision(s) 9d44cb0b2b5520b2b299851003ca2a97bf1e2079, 367ddd445cdf5ccc55a0481c944746ef595f72f7, 48dce7874fcb571765635b32fa6a3e3a12e228f8: [Backport #21655]
[PATCH] Remove rbimpl_rstring_getmem() usage as workaround for GCC 15.2.1 optimization bug. [Bug #21655]
[PATCH] include/ruby/internal/core/rstring.h: Remove rbimpl_rstring_getmem() definition.
[PATCH] simplify RSRING_G...
k0kubun (Takashi Kokubun)
10:30 PM Bug #21666: Math.lgamma(-1).should == [infinity_value, 1] fails with Fedora glibc-2.42.9000-8.fc44
ruby_3_4 commit:1adfd3ec401e7a09e1e3e61708592b202a3f8277 merged revision(s) commit:c5bd4acd30320a8e180ce9fcb24acdab4e10c73a. k0kubun (Takashi Kokubun)
10:29 PM Revision 1adfd3ec (git): merge revision(s) c5bd4acd30320a8e180ce9fcb24acdab4e10c73a: [Backport #21666]
[PATCH] [Bug #21666] Get rid of use of unspecified values k0kubun (Takashi Kokubun)
10:28 PM Bug #21694: Crash when looking up super method from BasicObject
Backporting this causes multiple conflicts. Could you file a backport PR to `ruby_3_4` please? k0kubun (Takashi Kokubun)
10:24 PM Bug #21703: RUBY_CRASH_REPORT does not work when shelling out in some cases
ruby_3_4 commit:a2ba1478e8c6a810c0fa08695a48f95ef5c29c45 merged revision(s) commit:190b017fc6c21ff7b61c2b5ece0294785e4a4ca2. k0kubun (Takashi Kokubun)
10:24 PM Revision a2ba1478 (git): merge revision(s) 190b017fc6c21ff7b61c2b5ece0294785e4a4ca2: [Backport #21703]
[PATCH] Don't use non blocking pipes for RUBY_CRASH_REPORT
[Bug #21703]
RUBY_CRASH_REPORT does not work in some cases when shelling out on Linux.
For example, given the following shell script dump.sh:
...
k0kubun (Takashi Kokubun)
10:23 PM Bug #21679: Segfault when ruby calls pthread_detach in rb_getnameinfo
ruby_3_4 commit:7482835d0b5c9f55662fb7c6586f456354e2b66e. k0kubun (Takashi Kokubun)
10:21 PM Bug #21265: Crash when proc from Symbol#to_proc called outside refinement scope
ruby_3_4 commit:ef2d4bf51bf28cfc427388a19e4a5fe9bbbe7a7a merged revision(s) commit:6e6f5d3c32a709c891ac6aa7833376907a6c81b5. k0kubun (Takashi Kokubun)
10:21 PM Revision ef2d4bf5 (git): merge revision(s) 6e6f5d3c32a709c891ac6aa7833376907a6c81b5: [Backport #21265]
[PATCH] Add test for [Bug #21265]
The crash was fixed by a4dff09be79b52288a47658964d25e5aa84fc960 ("Fix
resolving refined module-defined method"). I had a patch for this around
for a few months but never merged i...
k0kubun (Takashi Kokubun)
09:58 PM Revision 66bda731 (git): Remove unused local variables in test/ruby/test_io_buffer.rb (#15451)
etienne (Étienne Barrié)
07:48 PM Revision 90a9b642 (git): Use rb_current_ec_noinline in ractor_{lock,unlock}
We're seeing an occasional crash on CI because this ends up inlined all
the way into ractor_wait_receive. On llvm (possibly other compilers) the
thread local address of ec ends up cached (not the value of ec, the
address ec is read from)...
jhawthorn (John Hawthorn)
05:16 PM Revision e61b79b3 (git): Fix a typo in the deprecation warning message
nobu (Nobuyoshi Nakada)
05:06 PM Revision bd752290 (git): [ruby/timeout] Revert "Exclude constantly-failing test on x86_64-darwin"
This reverts commit https://github.com/ruby/timeout/commit/45816b1b2602.
https://github.com/ruby/timeout/commit/b54f91e9dd
ko1 (Koichi Sasada)
04:59 PM Revision fd45496f (git): Update ZJIT docs (#15449)
tekknolagi (Maxwell Bernstein)
04:36 PM Revision 956f8d49 (git): ZJIT: Avoid redundant SP save in codegen (#15448)
st0012 (Stan Lo)
04:11 PM Bug #21765: stop using the C runtime _read() on Windows
The current io.c code for windows is intended to avoid performance limitations of the encoding converter.
Therefore, performance is important. Here are some benchmarks before and after the patch.
(some empty lines removed manually)
``...
YO4 (Yoshinao Muramatsu)
03:44 PM Feature #21766: Pathname + FileUtils making sweet music together
I am thinking in this direction: it is not unseen for standard libraries, when required, to add methods to core objects:
```ruby
{a: 1}.to_json # NoMethodError
require 'json'
{a: 1}.to_json #=> {"a": 1}
Time.parse('12:20') # NoM...
zverok (Victor Shepelev)
01:20 AM Feature #21766: Pathname + FileUtils making sweet music together
I'm open to any and all implementation suggestions, happy to do whatever is required. I just want the feature! gurgeous (Adam Doppelt)
01:54 PM Feature #21720: Add a native Binary Heap / Priority Queue to Ruby's Standard Library (heapify, heappush, heappop)
herwin (Herwin W) wrote in #note-1:
> ```ruby
> ...
------------------------------------------------------------
### Update (response to feedback)
Thank you for pointing out the fragility of the module-style API that operates dir...
rahulk501 (Rahul Kumar)
11:28 AM Revision 66b2cc3d (git): [ruby/resolv] Check the second RegGetValue type
https://github.com/ruby/resolv/commit/3678de9e30 nobu (Nobuyoshi Nakada)
11:28 AM Revision 27d60e29 (git): [ruby/resolv] Fix warnings on cygwin
https://github.com/ruby/resolv/commit/075e76f997 nobu (Nobuyoshi Nakada)
10:28 AM Feature #21767: Consider procs which `self` is Ractor-shareable as Ractor shareable
Naturally it would need to follow the rules of `Ractor.shareable_proc` (#21557) regarding accessing captured variables:
* Any captured variable must not be reassigned
* The value of every captured variable must be shareable (not sure h...
Eregon (Benoit Daloze)
03:04 AM Feature #21767 (Open): Consider procs which `self` is Ractor-shareable as Ractor shareable
I would like to allow procs which `self` is Ractor-shareable to be automatically eligible as shareable, without an explicit `Ractor.make_shareable` call.
```ruby
class C
PROC = proc { p ARRAY }.freeze
end
Ractor.new { C::PROC....
osyoyu (Daisuke Aritomo)
10:02 AM Misc #21689: DevMeeting-2025-12-11
* [Feature #21766] Pathname + FileUtils making sweet music together (eregon)
* These methods are useful and in fact are expected by some to already exist on Pathname.
* How should we add them given they depend on FileUtils?
Eregon (Benoit Daloze)
09:41 AM Revision 159430e8 (git): ignore Thread creation error
on resource limited environment.
```
stderr output is not empty
bootstraptest.test_ractor.rb_2446_1412.rb:23:in 'Ractor.new': can't create Thread: Cannot allocate memory (ThreadError)
```
ko1 (Koichi Sasada)
09:21 AM Revision ced33367 (git): fix SEGV on clang-16/18
Maybe because of TLS/coroutine problem, CI fails on clang-16/18
```
1) Failure:
TestTimeout#test_ractor [/tmp/ruby/src/trunk_clang_18/test/test_timeout.rb:288]:
pid 307341 killed by SIGSEGV (signal 11) (core dumped)
| /tmp/ruby/src/tr...
ko1 (Koichi Sasada)
07:03 AM Revision 1de15815 (git): [ruby/rubygems] Fix native extension loading in newgem template for RHEL-based systems
Add fallback to `require` when `require_relative` fails to load native
extensions. This addresses an issue on RHEL-based Linux distributions
where Ruby scripts and built native extension shared libraries are
installed in separate directo...
yoshoku
03:11 AM Revision a82aa08f (git): Make `ruby_reset_leap_second_info` internal
It is exported only for the extension library to test, but the method
is no longer used since 29e31e72fb5a14194a78ec974c4ba56c33ad8d45.
nobu (Nobuyoshi Nakada)
03:11 AM Revision 6a1f5b68 (git): Make `ruby_reset_timezone` internal
It is used only in hash.c, when `ENV['TZ']` is set. nobu (Nobuyoshi Nakada)
03:07 AM Revision fbc5bb91 (git): Update default gems list at 4655b174d5fa71b69781c56701be63 [ci skip]
git[bot]
03:06 AM Revision 4655b174 (git): [ruby/timeout] v0.5.0
https://github.com/ruby/timeout/commit/837d5aac73 hsbt (Hiroshi SHIBATA)
02:47 AM Revision be882278 (git): Move RBIMPL_ATTR_DEPRECATED_* macros to the appropriate header file
Move these macros from include/ruby/backward.h to
include/ruby/internal/attr/deprecated.h, alongside the other similar
macros.
include/ruby/internal/intern/vm.h cannot currently use them because
include/ruby/backward.h is included too l...
rhenium (Kazuki Yamaguchi)
02:47 AM Revision f2eece71 (git): Remove the internal-only attribute from ruby_reset_timezone()
The #ifdef is currently not taken because include/ruby/backward.h is
not included at this point. The attribute is unnecessary in an internal
header, so remove it.
rhenium (Kazuki Yamaguchi)

12/07/2025

11:07 PM Misc #21154: Document or change Module#autoload?
BTW, I do not know if you know it, but while I started working on Zeitwerk to fix autoloading in Rails, I changed my mind in the mid of it and decided to do something more generic that supports multiple autoloaders in the same process ma... fxn (Xavier Noria)
10:29 AM Misc #21154: Document or change Module#autoload?
Thanks for the example @mame.
In my view, this is more a problem of circularity than a problem of autoload vs require. When you are loading a file, a require is executed and loads a file that needs a constant that was still not defined....
fxn (Xavier Noria)
09:57 PM Feature #21766: Pathname + FileUtils making sweet music together
Remember that `FileUtils` is loaded dynamically, so it would be something like
```ruby
class Pathname
def mkdir_p(...) = _fileutils(:mkdir_p, ...)
def ln(...) = _fileutils(:ln, ...)
def ln_s(...) = _fileutils(:ln_s, ...)
...
Dan0042 (Daniel DeLorme)
08:31 PM Feature #21766 (Open): Pathname + FileUtils making sweet music together
I love Pathname. I love FileUtils. Let's bring these two classes EVEN CLOSER TOGETHER by adding some tragically missing helpers. Something like this, perhaps?
``` ruby
class Pathname
def mkdir_p(...) = FileUtils.mkdir_p(@path, ......
gurgeous (Adam Doppelt)
04:51 PM Revision 4f900c35 (git): Output ivar length for T_OBJECT in obj_info
peterzhu2118 (Peter Zhu)
04:35 PM Revision a4d14213 (git): [DOC] Update bundled gems list at 379d22ce8418448ade3d410e5c76dd
git[bot]
04:35 PM Revision 379d22ce (git): Bump RDoc version to 6.17.0 (#15439)
st0012 (Stan Lo)
03:22 PM Misc #21689: DevMeeting-2025-12-11
* [Feature #8948] Frozen regex (eregon)
* This is to make all Regexps frozen and not just literals.
* I made a PR, it passes CI: https://github.com/ruby/ruby/pull/14547
* Is it OK to merge it for Ruby 4.0?
Eregon (Benoit Daloze)
03:20 PM Feature #8948: Frozen regex
PR to make all Regexps frozen and not just literals: https://github.com/ruby/ruby/pull/14547
Is it OK to merge it for Ruby 4.0?
Eregon (Benoit Daloze)
02:20 PM Revision db6071b5 (git): [ruby/pathname] Raise the previous message
Fix ruby/pathname#75.
https://github.com/ruby/pathname/commit/5ba967b274
nobu (Nobuyoshi Nakada)
02:20 PM Revision a8a188e1 (git): [ruby/pathname] Add more tests for `Pathname#initialize`
https://github.com/ruby/pathname/commit/a2edd25bc1 nobu (Nobuyoshi Nakada)
01:51 PM Revision 806f2d35 (git): [ruby/pathname] [DOC] Pathname#freeze
https://github.com/ruby/pathname/commit/4580540a2b nobu (Nobuyoshi Nakada)
01:51 PM Revision f2b250c1 (git): [ruby/pathname] Define private method `same_paths?` for Ractor-safety
https://github.com/ruby/pathname/commit/d33d18e5e2 nobu (Nobuyoshi Nakada)
12:18 PM Revision 4080abec (git): Ignore distclean failures
Just clean the directory if it exists and is empty. nobu (Nobuyoshi Nakada)
11:55 AM Revision eafaff94 (git): Re-introduce support for `io_close` hook. (#15434)
Samuel Williams
08:34 AM Revision 941e70ab (git): Sync doc/stringio in sync_default_gems.rb
peterzhu2118 (Peter Zhu)
04:44 AM Revision 68eab91b (git): Allow to sync pathname manually
Still development of the gem continues, sync as possible manually. nobu (Nobuyoshi Nakada)
01:59 AM Revision fb80f84f (git): [DOC] Fix formatting in docs for String#[]=
peterzhu2118 (Peter Zhu)

12/06/2025

11:22 PM Revision 33837abb (git): [ruby/stringio] [DOC] Tweaks for StringIO#pos=
(https://github.com/ruby/stringio/pull/194)
https://github.com/ruby/stringio/commit/3cef1e0e5f
burdettelamar (Burdette Lamar)
11:22 PM Revision 82577ac0 (git): [ruby/stringio] [DOC] Tweaks for StringIO#pos
(https://github.com/ruby/stringio/pull/193)
https://github.com/ruby/stringio/commit/90728bbbca
burdettelamar (Burdette Lamar)
11:21 PM Revision c9fe3cba (git): [ruby/stringio] [DOC] Tweaks for StringIO#lineno=
(https://github.com/ruby/stringio/pull/192)
https://github.com/ruby/stringio/commit/8b1ee03cbe
burdettelamar (Burdette Lamar)
11:21 PM Revision f298beb2 (git): [ruby/stringio] [DOC] Tweaks for StringIO#lineno
(https://github.com/ruby/stringio/pull/191)
https://github.com/ruby/stringio/commit/f2a2a5a99e
burdettelamar (Burdette Lamar)
10:51 PM Misc #21689: DevMeeting-2025-12-11
* [Feature #19979] Reconsider adding `&nil` to method declarations, to signal it won't accept a block
* Adding this feature should be possible now that the syntax moratorium is over
pabloh (Pablo Herrero)
06:08 PM Revision 588347a0 (git): Fix id2ref for multi-Ractor
The id2ref table needs to be under a VM lock to ensure there are no race
conditions. The following script crashes:
o = Object.new
ObjectSpace._id2ref(o.object_id)
10.times.map do
Ractor.new do
10_000.times do...
peterzhu2118 (Peter Zhu)
05:49 PM Revision 87bc106b (git): [ruby/stringio] [DOC] Change link to on-page
https://github.com/ruby/stringio/commit/a7c118d786 burdettelamar (Burdette Lamar)
05:26 PM Revision 47c0dae1 (git): [ruby/openssl] asn1integer_to_num: don't cast away const
ASN1_ENUMERATED_to_BN() has been const-correct for a long time in all
supported libcrytos, so we can remove this workaround.
https://github.com/ruby/openssl/commit/d0f36a7c65
Theo Buehler
05:13 PM Revision 1f0d41aa (git): [ruby/date] Call rb_gc_register_mark_object after object allocation
It's possible that both half_days_in_day and day_in_nanoseconds are Ruby
objects, which means that creating day_in_nanoseconds may trigger GC.
Since half_days_in_day is not registered as a mark object until after
day_in_nanoseconds is al...
peterzhu2118 (Peter Zhu)
04:50 PM Revision 8d3da814 (git): [ruby/openssl] Convert ossl_x509ext.c to opaque ASN1_STRING
https://github.com/ruby/openssl/commit/a41cf28bab Theo Buehler
04:50 PM Revision 38ad0806 (git): [ruby/openssl] Convert ossl_ts.c to opaque ASN1_STRING
https://github.com/ruby/openssl/commit/8945f379b3 Theo Buehler
04:50 PM Revision a07997bf (git): [ruby/openssl] Convert ossl_ns_spki.c to opaque ASN1_STRING
https://github.com/ruby/openssl/commit/0941ebbda5 Theo Buehler
04:50 PM Revision 98c151b0 (git): [ruby/openssl] Convert some of ossl_asn1.c to opaque ASN1_STRING
This uses the normal accessors but leaves out BIT STRINGS, which will
need compat implementations for ASN1_BIT_STRING_get_length() and
ASN1_BIT_STRING_set1() for older libcryptos.
https://github.com/openssl/openssl/issues/29184
https://...
Theo Buehler
04:50 PM Revision d3aa7b88 (git): [ruby/openssl] Convert ossl_ocsp.c to opaque ASN1_STRING
OpenSSL plans to make asn1_string_st opaque, the struct underlying most
ASN.1 types such as ASN1_*STRING, ASN1_ENUMERATED, ASN1_INTEGER, etc.
Most of ruby/openssl's C code can be straigtforwardly converted to use
accessors available sinc...
Theo Buehler
04:50 PM Revision 9dfb7bd7 (git): [ruby/openssl] const correct ossl_bin2hex()
This helper only reads from its in parameter. Making that const
avoids a couple of casts in an upcoming change.
https://github.com/ruby/openssl/commit/970d5764e3
Theo Buehler
04:49 PM Feature #21084: Declare objects have weak references
Hmm, yes. I'll work on rebasing the PR. peterzhu2118 (Peter Zhu)
08:12 AM Feature #21084: Declare objects have weak references
@peterzhu2118 regardless of whether it should be public or not, given the performance benefits, should we merge your PR? byroot (Jean Boussier)
04:31 PM Revision 2e828dd9 (git): Fix strict aliasing warning in ruby_swap128_int
The following warnings are emitted. We can use type punning to prevent
strict aliasing violations.
io_buffer.c:1935:23: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
1935 | r...
peterzhu2118 (Peter Zhu)
03:44 PM Revision da3b7d5e (git): [ruby/pathname] Freeze and hide internal constants
https://github.com/ruby/pathname/commit/60f5d58d73 nobu (Nobuyoshi Nakada)
03:44 PM Revision b675deee (git): [ruby/pathname] Use `File.path` for conversion to path name
This method has been defined since 1.9, as the standard conversion
procedure.
https://github.com/ruby/pathname/commit/8f582dc65d
nobu (Nobuyoshi Nakada)
03:44 PM Revision 7319db44 (git): [ruby/pathname] Define `to_path` alias directly
The constant `TO_PATH` was defined for 1.9 compatibility but the code
for it was dropped 10 years ago.
https://github.com/ruby/pathname/commit/95ad4ceb19
nobu (Nobuyoshi Nakada)
03:38 PM Revision 240afe50 (git): Suppress noisy outputs
Fix up ruby/ruby#14700. nobu (Nobuyoshi Nakada)
03:15 PM Revision e7f9abdc (git): Sync doc/stringio in sync_default_gems.rb
peterzhu2118 (Peter Zhu)
11:11 AM Revision 0346206d (git): [ruby/prism] Avoid out-of-bounds reads
Fixes https://github.com/ruby/prism/pull/3790.
https://github.com/ruby/prism/commit/173ccb84ad
Steven Johnstone
10:32 AM Revision f4f5f0a0 (git): Add error case tests for `File.path`
- for non-String argument
- for NUL-contained argument
- for ASCII-incompatible argument
nobu (Nobuyoshi Nakada)
10:11 AM Revision aae85926 (git): [ruby/timeout] Test that Timeout does not expose extra constants
https://github.com/ruby/timeout/commit/4de4b4759c Eregon (Benoit Daloze)
08:44 AM Revision 42f5654b (git): Yield to scheduler if interrupts are pending. (#14700)
Samuel Williams
07:35 AM Revision 180020e1 (git): Fix `io_pwrite` fiber scheduler hook. (#15428)
Fix io_pwrite fiber scheduler hook. Samuel Williams
07:00 AM Revision 7259c18c (git): [DOC] Update NEWS about ZJIT (#15426)
k0kubun (Takashi Kokubun)
05:39 AM Revision d490247d (git): [DOC] Link global variables to command line options
nobu (Nobuyoshi Nakada)
03:08 AM Revision 21f9a647 (git): [ruby/stringio] [DOC] Class doc for StringIO
(https://github.com/ruby/stringio/pull/178)
https://github.com/ruby/stringio/commit/6449251678
burdettelamar (Burdette Lamar)
03:05 AM Revision bd64cf00 (git): [DOC] Tweaks for String#capitalize
burdettelamar (Burdette Lamar)
03:05 AM Revision 2491a504 (git): [DOC] Tweaks for String#downcase
burdettelamar (Burdette Lamar)
03:04 AM Revision e5e4175d (git): [DOC] Tweaks for String#upcase
burdettelamar (Burdette Lamar)
03:04 AM Revision da2c6738 (git): [DOC] Tweaks for String#swapcase
burdettelamar (Burdette Lamar)
03:03 AM Revision bbef73b2 (git): [DOC] Better multibyte-character data
burdettelamar (Burdette Lamar)
03:02 AM Revision 734dab5e (git): [ruby/stringio] [DOC] Link to on-page section, not class File doc
https://github.com/ruby/stringio/commit/dc93aa51d2 burdettelamar (Burdette Lamar)
02:55 AM Revision a7dc53b9 (git): Add support for `u128`, `U128`, `s128` and `S128` integers to `IO::Buffer`. (#15399)
Samuel Williams

12/05/2025

11:40 PM Revision 8f983847 (git): Fix fields object in embedded struct
We don't set RSTRUCT_GEN_FIELDS when RCLASS_MAX_IV_COUNT(klass) != 0, so
we need to set RSTRUCT_SET_FIELDS_OBJ to 0 otherwise it may have an
invalid value and crash.
peterzhu2118 (Peter Zhu)
11:40 PM Revision 791acc56 (git): Revert "gc.c: Pass shape_id to `newobj_init`"
This reverts commit 228d13f6ed914d1e7f6bd2416e3f5be8283be865.
This commit makes default.c and mmtk.c depend on shape.h, which prevents
them from building independently.
peterzhu2118 (Peter Zhu)
10:09 PM Revision 65995c22 (git): [ruby/timeout] Exclude constantly-failing test on x86_64-darwin
* https://github.com/ruby/ruby-dev-builder/actions/runs/19973218359/job/57293388626
https://github.com/ruby/timeout/commit/45816b1b26
Eregon (Benoit Daloze)
10:00 PM Revision c4c909b5 (git): ZJIT: Include local variable names in `Get|SetLocal` insn's print value (#15423)
ZJIT: Print local variable names GetLocal and SetLocal instructions st0012 (Stan Lo)
08:49 PM Revision d396a66a (git): ZJIT: Build by default when build environment allows
"Default" means when `--enable-zjit` is absent from `./configure`
arguments.
alanwu (Alan Wu)
08:49 PM Revision f559a910 (git): ZJIT: configure.ac: Look for GNU make when detecting build environment
Building ZJIT requires GNU make at the moment.
To get access to `$gnumake`, lift the `make` flavour detection up to the
environment section, before the JIT section runs.
alanwu (Alan Wu)
08:49 PM Revision ffe99a56 (git): ZJIT: configure.ac logic to detect suitable build environment
This runs the detection, but does nothing with the result.
* Fixed version requirement in messages -- ZJIT requires >= 1.85 unlike
YJIT.
* New: Detect when rust 1.85 is available, and neither --enable-yjit nor
--enable-zjit is pas...
alanwu (Alan Wu)
08:49 PM Revision 9a271001 (git): YJIT: Fix unused_unsafe warning in `StatsAlloc`
alanwu (Alan Wu)
08:49 PM Revision dce716e2 (git): ZJIT: Update `depend` for zjit.o
alanwu (Alan Wu)
08:49 PM Revision addeafdd (git): YJIT: Fix duplicate make rule warning in combo build
alanwu (Alan Wu)
08:49 PM Revision 8296524f (git): ZJIT: Fix duplicate make rule warning in combo build
~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-default/'
~/yjit/yjit.mk:26: warning: ignoring old commands for target `~/build-default/'
~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-def...
alanwu (Alan Wu)
08:49 PM Revision 2bc9b5a8 (git): tool/update-deps: Skip ZJIT and YJIT+ZJIT build objects
alanwu (Alan Wu)
08:49 PM Revision fb72ff7b (git): CI: Avoid building ZJIT when LLVM is too old
alanwu (Alan Wu)
08:49 PM Revision 109ddd29 (git): ZJIT: Avoid binding to `rb_iseq_constant_body`
Its definition changes depending on e.g. whether there is YJIT in the
build.
alanwu (Alan Wu)
08:49 PM Revision 8132b3d1 (git): YJIT: Fix including stats for ZJIT instructions when ZJIT not in build
alanwu (Alan Wu)
08:49 PM Revision f01fd2bd (git): JITs: Update bindings to include interpreter zjit_ opcodes
Mostly YJIT. ZJIT already has the right bindings and this just tweaks
the CI configuration.
alanwu (Alan Wu)
08:49 PM Revision 02ca507a (git): JITs: rb_iseq_opcode_at_pc(): Accommodate switch-case interpreter
alanwu (Alan Wu)
08:49 PM Revision 7ecd369a (git): ZJIT: Account for when YJIT is on by default in test_zjit_enable
alanwu (Alan Wu)
08:49 PM Revision 3269ae1b (git): ZJIT: Fix -Wpedantic warning in C99 mode when built with YJIT
> insns.def:857:5: error: assigning to 'rb_zjit_func_t' (aka 'unsigned
> ...
> [-Werror,-Wpedantic]
alanwu (Alan Wu)
08:49 PM Revision ee792328 (git): ZJIT: Skip GC.auto_compact test when unsupported
alanwu (Alan Wu)
08:35 PM Revision 786f6739 (git): [ruby/prism] Correct constant pool bucket type logic
When replacing an owned constant by a different type (constant or
shared) replace with the correct type instead of defaulting to
shared.
https://github.com/ruby/prism/commit/fbe9b131a1
kddnewton (Kevin Newton)
08:21 PM Revision be12e198 (git): [ruby/prism] Avoid undefined int overflow behaviour
Fixes https://github.com/ruby/prism/pull/3786.
https://github.com/ruby/prism/commit/b72b664675
Steven Johnstone
08:20 PM Revision 834adc35 (git): [ruby/prism] Avoid out-of-bounds reads
Fixes https://github.com/ruby/prism/pull/3784.
https://github.com/ruby/prism/commit/3fe862534b
Steven Johnstone
07:50 PM Feature #20750 (Closed): Allow rb_thread_call_with_gvl to work when thread already has GVL
Applied in changeset commit:git|2b057859414d1ccfa4d88a898d27defc8c74dc1c.
----------
Allow rb_thread_call_with_gvl() to work when thread already has GVL
[Feature #20750]
Co-authored-by: Benoit Daloze <eregontp@gmail.com>
kbrock (Keenan Brock)
07:50 PM Revision 2b057859 (git): Allow rb_thread_call_with_gvl() to work when thread already has GVL
[Feature #20750]
Co-authored-by: Benoit Daloze <eregontp@gmail.com>
kbrock (Keenan Brock)
06:40 PM Revision 8c4f79d5 (git): [ruby/openssl] x509cert: handle invalid validity periods in Certificate#inspect
In a newly allocated OpenSSL X509 object, the notBefore and notAfter
fields contain an ASN1_STRING object with type V_ASN1_UNDEF rather than
an ASN1_TIME.
Commit https://github.com/ruby/openssl/commit/73484f67949a made asn1time_to_time(...
rhenium (Kazuki Yamaguchi)
06:32 PM Revision 00b91c72 (git): [ruby/timeout] Simplify logic to make GET_TIME shareable
https://github.com/ruby/timeout/commit/281b2507e7 Eregon (Benoit Daloze)
06:32 PM Revision 3e189ddb (git): [ruby/timeout] Fix logic for Ractor support
* Fix indentation to stay a multiple of 2 spaces.
https://github.com/ruby/timeout/commit/a1d784cb66
Eregon (Benoit Daloze)
06:32 PM Revision dc406af9 (git): [ruby/timeout] Fix condition and fix test to catch that broken condition
https://github.com/ruby/timeout/commit/82fb6f6925 Eregon (Benoit Daloze)
06:32 PM Revision a523e9d8 (git): [ruby/timeout] Minor tweaks
https://github.com/ruby/timeout/commit/daab9a2193 Eregon (Benoit Daloze)
06:32 PM Revision ec28bd75 (git): [ruby/timeout] support Ractor
1. Introduce State to store all status.
2. Store State instance to the Ractor local storage if possible
3. Make `GET_TIME` (Method object) shareable if possible
3 is supporeted Ruby 4.0 and later, so the Rator support is works
only on R...
ko1 (Koichi Sasada)
05:14 PM Revision 65dbd571 (git): [ruby/psych] Use Node#to_ruby parse_symbols option
https://github.com/ruby/psych/commit/907fd4fa97 etienne (Étienne Barrié)
02:21 PM Revision 930afa1c (git): Never shrink bignum on realloc
As far as I can tell, this only ever shrinks by one, and it's really not
worth the expensive realloc for that.
jhawthorn (John Hawthorn)
02:21 PM Revision b0c9286d (git): Use VWA for bignum
Previously we only allocated bignums from the 40 byte sizepool, and
embedded bignum used a fixed size.
jhawthorn (John Hawthorn)
01:59 PM Feature #12928: Use socket conect_timeout in net stdlib for open_timeout
For the record: net/http now uses `TCPSocket.open(open_timeout:)` in place of `Timeout.timeout`.
https://github.com/ruby/net-http/pull/224
osyoyu (Daisuke Aritomo)
01:48 PM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
Thank you, shugo.
"someone" he says is me. My use case is here.
I want to extract chunks from a file and pass them to a neural network model to detect the file type. The model requires two chunks: the `lstrip`ped beggining portion and ...
KitaitiMakoto (真 北市)
08:36 AM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
I'm not strongly opposed, but this kind of API that use a string to represent a collection of characters feel outdated. It is sometimes convenient, though. mame (Yusuke Endoh)
02:26 AM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
shugo (Shugo Maeda) wrote in #note-4:
> Unlike String#delete, the current implementation doesn't take multiple arguments.
> ...
I've noticed that String#count also take multiple selectors, so I've applied the same changes to String#str...
shugo (Shugo Maeda)
01:46 PM Bug #21669: Thoroughly implement void value expression check
Earlopain (Earlopain _) wrote in #note-6:
> I have an implementation in https://github.com/ruby/prism/pull/3728 (maybe needs more tests)
It doesn't reject the following cases.
```ruby
x = begin
return
"NG"
end
# Expected:...
nobu (Nobuyoshi Nakada)
01:13 PM Bug #21669: Thoroughly implement void value expression check
Earlopain (Earlopain _) wrote in #note-6:
> I have an implementation in [https://github.com/ruby/prism/pull/3728](https://github.com/ruby/prism/pull/3728) (maybe needs more tests)
Great, thanks!
> ...
Agreed. I think the evaluatio...
mame (Yusuke Endoh)
11:08 AM Bug #21669: Thoroughly implement void value expression check
Sorry, I've missed this issue.
It is done to fix parse.y for 1 and 2.
I think 1 is OK, and probably no problem in practice.
But 2 is intentionally passed, IIRC, and bootraptest has such code.
```ruby
#1526 test_syntax.rb:572:
...
nobu (Nobuyoshi Nakada)
12:34 PM Revision ea415e96 (git): [ruby/net-http] open: Never call Timeout.timeout in rescue clause
The try-open_timeout-then-fallback-to-timeout introduced in
https://github.com/ruby/net-http/commit/1903cedd8cd0 works well, but when it errors
due to any reason in Rubies which do not support `open_timeout`, it
spits the rescued Argumen...
Daisuke Aritomo
12:24 PM Revision f179885d (git): [ruby/openssl] asn1: use ASN1_TIME_to_tm() to decode UTCTime and GeneralizedTime
The current logic relies on sscanf() and error checks are almost
entirely missing. It also assumes that ASN1_STRING contents are NUL
terminated, which is undocumented and not guaranteed for all valid
ASN1_TIME objects.
Switch to using A...
rhenium (Kazuki Yamaguchi)
12:24 PM Revision bf2b9c09 (git): [ruby/openssl] asn1: reorder declarations
Move variable declarations for OpenSSL::ASN1 classes to the top of the
file. asn1time_to_time() will need eASN1Error in the next patch.
https://github.com/ruby/openssl/commit/6c0ef87897
rhenium (Kazuki Yamaguchi)
11:35 AM Revision 95ea3bd5 (git): [ruby/timeout] Only the timeout method should be public on the Timeout module
https://github.com/ruby/timeout/commit/cd51eac3ca Eregon (Benoit Daloze)
08:01 AM Misc #21689: DevMeeting-2025-12-11
* [Bug #21049] Reconsider handling of the numbered parameters and "it" parameter in `Binding#local_variables` (mame)
* An API like `Binding#numbered_parameter_get` was actually requested. I'd like to discuss how to proceed.
mame (Yusuke Endoh)
07:57 AM Bug #21298 (Closed): `ObjectSpace.allocation_class_path` returns inconsistent results depending on `TracePoint` state
https://github.com/ruby/ruby/pull/13232 had been already merged. Thanks! mame (Yusuke Endoh)
07:47 AM Revision 1cad20e2 (git): [DOC] Describe `$F`
This variation is used when `-a` option is given. nobu (Nobuyoshi Nakada)
07:31 AM Revision 1e7373ef (git): [DOC] Describe the global variables set by command line options
These variables are set by command line options, but it is deprecated
to assign them any value other than nil in ruby code.
nobu (Nobuyoshi Nakada)
07:17 AM Feature #19430 (Rejected): Contribution wanted: DNS lookup by c-ares library
Since c-ares has a compatibility issue on macOS, a full migration to it seems difficult. And DNS lookup is now interruptible by explicitly using pthread. Therefore, this is closed as not planned. mame (Yusuke Endoh)
07:14 AM Revision b35aff58 (git): [DOC] Centerize Variable, English, and Constant columns
nobu (Nobuyoshi Nakada)
06:31 AM Revision 479185da (git): Add Set C API to news
Also, don't use backticks around Set in the top level of the
Core classes updates section, as other classes/modules do not use
that format.
jeremyevans (Jeremy Evans)
05:20 AM Revision 5f6b31c2 (git): Correctly handle `Process.fork` with an active `Fiber.scheduler`. (#15385)
In the child process, nullify the current fiber scheduler and set the current fiber to blocking. ciconia (Sharon Rosner)
05:16 AM Revision e822209d (git): Update NEWS.md for Ruby 4.0.0 (#15369)
I extracted the relevant descriptions from the draft NEWS.md that
hsbt-san had Gemini generate by analyzing `git log`.
Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Co-autho...
mame (Yusuke Endoh)
02:00 AM Revision d3a9a17b (git): Skip Windows runner group warning under ruby/ruby repo
hsbt (Hiroshi SHIBATA)
01:45 AM Revision 02cddcc2 (git): Ractor.shareable_proc(&pr) should copy pr
`pr` should not change on this method. ko1 (Koichi Sasada)

12/04/2025

11:01 PM Revision d105709f (git): [ruby/rubygems] Add before(:context) hook to warn when spec files are not assigned to any Windows runner group
https://github.com/ruby/rubygems/commit/3ddb740969 hsbt (Hiroshi SHIBATA)
11:01 PM Revision 412895ae (git): [ruby/rubygems] Try to split and run three runners for Windows
I organized all examples the followings:
```
Total test time: 2468.41 seconds
Total files: 168
Group A: 42 files, 617.08 seconds
Group B: 42 files, 617.05 seconds
Group C: 42 files, 617.14 seconds
Group D: 42 files, 617.14 seconds
```
...
hsbt (Hiroshi SHIBATA)
09:58 PM Revision 6d0c9598 (git): [DOC] Cross-link between README pages
burdettelamar (Burdette Lamar)
09:51 PM Revision 8d8159e7 (git): Fix thread scheduler issue with thread_sched_wait_events (#15392)
Fix race between timer thread dequeuing waiting thread and thread
skipping sleeping due to being dequeued. We now use `th->event_serial` which
is protected by `thread_sched_lock`. When a thread is put on timer thread's waiting
list, the ...
Luke Gruber
09:25 PM Revision 7d9558f9 (git): Adjust test to avoid bug
jhawthorn (John Hawthorn)
09:25 PM Revision 1d3fe2c3 (git): Change bmethod defined_ractor to use id instead
When defining a bmethod, we recorded the current Ractor's object in the
method. However that was never marked and so could be GC'd and reused by
a future Ractor. Instead we can use the Ractor's id, which we expect to
be unique forever.
...
jhawthorn (John Hawthorn)
09:10 PM Revision de2c2bd6 (git): Take VM lock in `class_switch_superclass` (#15356)
Safe multi-ractor subclass list mutation
We need to lock around mutation and accesses of a class's subclasses
list. Unfortunately we also need to do this when creating singleton
classes, as the singleton class does need to go into `supe...
Luke Gruber
06:15 PM Revision d9aced86 (git): Add openssl reformatting to .git-blame-ignore-revs [ci skip]
rhenium (Kazuki Yamaguchi)
06:10 PM Revision 2aaea665 (git): fix typo s/sharable/shareable/
ko1 (Koichi Sasada)
05:46 PM Revision 5062c0c6 (git): [ruby/openssl] Expand tabs in C source files
Since around 2018, we have been using spaces for indentation for newly
added code[1]. The mixed use of tabs and spaces has repeatedly confused
new contributors who configured their editors to use a different tab
size than 8. Since git bl...
rhenium (Kazuki Yamaguchi)
05:32 PM Revision 6fe1c159 (git): [ruby/openssl] Revert "rewriting most of the asn1 init code in ruby"
This reverts commit https://github.com/ruby/openssl/commit/830505172882.
The commit is part of the bigger effort to rewrite OpenSSL::ASN1 in
Ruby. OpenSSL::ASN1 is relatively isolated from the rest of ruby/openssl
and is not tightly bou...
rhenium (Kazuki Yamaguchi)
05:28 PM Revision 4c893e2f (git): Method and UnboundMethod can be sharable
with `RUBY_TYPED_FROZEN_SHAREABLE_NO_REC`,
if the receiver object is shareable on Method objects.
ko1 (Koichi Sasada)
05:28 PM Revision f2cd7723 (git): (experimental) RUBY_TYPED_FROZEN_SHAREABLE_NO_REC
`T_DATA` has a flag `RUBY_TYPED_FROZEN_SHAREABLE` which means
if the `T_DATA` object is frozen, it can be sharable.
On the `Ractor.make_sharable(obj)`, rechable objects from the
`T_DATA` object will be apply `Ractor.make_shareable` recur...
ko1 (Koichi Sasada)
04:56 PM Revision e4abacc5 (git): Ractor.store_if_absent should not warn
```ruby
$VERBOSE = true
Ractor.store_if_absent :key do
end #=> warning: the block passed to 'Ractor.store_if_absent' defined at <internal:ractor>:474 may be ignored
```
ko1 (Koichi Sasada)
04:25 PM Revision 37300227 (git): Remove mismatched indentations warning (#15410)
etienne (Étienne Barrié)
04:04 PM Revision 29a12297 (git): Refine non-nil warnings for the deprecated variables
nobu (Nobuyoshi Nakada)
04:01 PM Bug #21764 (Closed): encoding of warning for depreciated global variables is not set
Applied in changeset commit:git|cf12aff0593a0aa70d957b96f03df8288c025938.
----------
[Bug #21764] Propagate the encoding of ID to warning
nobu (Nobuyoshi Nakada)
03:22 PM Bug #21764 (Closed): encoding of warning for depreciated global variables is not set
The aliased name should be encoded properly.
```console
$ ruby -v -e 'def Warning.warn(s) = p(s, s.encoding); alias $分行 $/; $分行 = "\n"'
ruby 4.0.0dev (2025-11-27T12:05:45Z master 68a7edaa81) +PRISM [arm64-darwin25]
"-e:1: warning: ...
nobu (Nobuyoshi Nakada)
03:32 PM Bug #21765: stop using the C runtime _read() on Windows
I created [PR#15408](https://github.com/ruby/ruby/pull/15408)
For comparison, there is a patch [WIP] that utilizes encoding conversion.
https://github.com/YO4/ruby/commits/avoid-windows-crt-read/
YO4 (Yoshinao Muramatsu)
03:29 PM Bug #21765 (Open): stop using the C runtime _read() on Windows
When creating an IO instance in Windows, the default data mode is text mode.
In reality, the IO encoding conversion mechanism is not used when encoding conversion is not performed. Instead, the CRLF conversion provided by the C runtime'...
YO4 (Yoshinao Muramatsu)
03:27 PM Revision cf12aff0 (git): [Bug #21764] Propagate the encoding of ID to warning
nobu (Nobuyoshi Nakada)
02:51 PM Bug #21758 (Closed): Prism fails to parse heredoc within %Q literal split by another heredoc
Applied in changeset commit:git|465a86c3417d2936c311d9571aa9b6494a83eed8.
----------
[ruby/prism] Fix `%Q` with newline delimiter and heredoc interpolation
The lexer did not jump to the `heredoc_end`, causing the heredoc end delimiter
...
Earlopain (Earlopain _)
11:45 AM Bug #21758: Prism fails to parse heredoc within %Q literal split by another heredoc
https://github.com/ruby/prism/pull/3780 Earlopain (Earlopain _)
02:50 PM Revision 465a86c3 (git): [ruby/prism] Fix `%Q` with newline delimiter and heredoc interpolation
The lexer did not jump to the `heredoc_end`, causing the heredoc end delimiter
to be parsed twice.
Normally the heredocs get flushed when a newline is encountered. But because
the newline is part of the string delimiter, that codepath i...
Earlopain (Earlopain _)
11:38 AM Bug #21763: Windows: output IO pipe ignores crlf newline conversion specified by set_encoding
I made PR [#15405](https://github.com/ruby/ruby/pull/15405)
YO4 (Yoshinao Muramatsu)
11:09 AM Bug #21763 (Open): Windows: output IO pipe ignores crlf newline conversion specified by set_encoding
On Windows, output pipes have no crlf conversion applied by default except for stdout/stderr, also it ignore set_encoding(crlf_newline: true).
```
> ruby -e "IO.pipe { |r,w| w.set_encoding('ascii-8bit', crlf_newline: true); w.puts ?a; ...
YO4 (Yoshinao Muramatsu)
10:27 AM Feature #21722: Expose rb_gc_mark_weak API for use in extensions
> @ivoanjo (Ivo Anjo) I don't know if this would work, but what about using rb_postponed_job_trigger to delay adding the object into a WeakMap? (there would also probably need to be a temporary buffer used to mark the object until it is ... ivoanjo (Ivo Anjo)
10:09 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
> I'm fine with adding MOVEOBJ, it makes sense, but I don't think it's currently necessary. ObjectSpace.trace_object_allocations handles this by subscribing both to NEWOBJ and FREEOBJ and tracking the objects in its own hash table (subsc... ivoanjo (Ivo Anjo)
09:08 AM Revision 8099e9d2 (git): [DOC] Fix a macro name
nobu (Nobuyoshi Nakada)
09:07 AM Revision b872fbe3 (git): Deprecate `rb_eval_cmd_kw`
nobu (Nobuyoshi Nakada)
09:07 AM Revision 7f41c3e7 (git): Add `rb_eval_cmd_call_kw` to shortcut
nobu (Nobuyoshi Nakada)
08:15 AM Revision f8231dac (git): Ractor.store_if_absent should not warn
```ruby
$VERBOSE = true
Ractor.store_if_absent :key do
end #=> warning: the block passed to 'Ractor.store_if_absent' defined at <internal:ractor>:474 may be ignored
```
ko1 (Koichi Sasada)
08:14 AM Revision 69173216 (git): Update default gems list at d343968ec3a899a29ff4e330dc914d [ci skip]
git[bot]
08:13 AM Revision d343968e (git): [ruby/json] Release 2.17.1
https://github.com/ruby/json/commit/e5e4fd558e byroot (Jean Boussier)
08:10 AM Revision d58a45d3 (git): [ruby/json] Fix a regression in parsing of unicode surogate pairs
Fix: https://github.com/ruby/json/issues/912
In the case of surogate pairs we consume two backslashes, so
`json_next_backslash` need to ensure it's not sending us back in the
stream.
https://github.com/ruby/json/commit/0fce370c41
byroot (Jean Boussier)
06:54 AM Misc #21154: Document or change Module#autoload?
I'd like to share a simplified example that demonstrates the autoload/require issue.
```ruby
# my_gem.rb
module MyGem
autoload :M, "my_gem/m" # (2)
end
# my_gem/m.rb
module MyGem
module M
autoload :X, "my_gem/m/x" # ...
mame (Yusuke Endoh)
06:47 AM Revision 932762f2 (git): [ruby/rubygems] Increase connection pool to allow for up to 70% speed increase:
- ### TL;DR
Bundler is heavily limited by the connection pool which manages a
single connection. By increasing the number of connection, we can
drastiscally speed up the installation process when many gems need
to be downloaded ...
Edouard CHIN
06:30 AM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
Suggested by nobu, I've added documentation and tests for character selectors: https://github.com/ruby/ruby/pull/15400/commits/a9ad44007dbb0ea543ce1eb8748edd4213083c5f
Exmaples:
```
"012abc345".strip("0-9") # "abc"
"012abc345".st...
shugo (Shugo Maeda)
03:05 AM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
I just heard someone ask for a strip function that doesn't remove NUL characters.
Since Python's `str.strip` takes an optional argument, it might be a good idea to introduce a similar feature.
I've created a pull request at <https://...
shugo (Shugo Maeda)
06:24 AM Misc #21689: DevMeeting-2025-12-11
- [Feature #21552] allow String.strip and similar to take a parameter similar to String.delete
- pull request: https://github.com/ruby/ruby/pull/15400
- Is it acceptable to take character selectors like String#delete?
- [Python's...
shugo (Shugo Maeda)
02:27 AM Revision 0af85a1f (git): ZJIT: Optimize setivar with shape transition (#15375)
Since we do a decent job of pre-sizing objects, don't handle the case where we would need to re-size an object. Also don't handle too-complex shapes.
lobsters stats before:
```
Top-20 calls to C functions from JIT code (79.4% of total ...
tekknolagi (Maxwell Bernstein)
01:25 AM Revision 3efd8c67 (git): ZJIT: Inline Kernel#class (#15397)
We generally know the receiver's class from profile info. I see 600k of these when running lobsters. tekknolagi (Maxwell Bernstein)
01:13 AM Revision 19f0df04 (git): ZJIT: Fix definite assignment to work with multiple entry blocks
Max Bernstein
01:13 AM Revision c764269f (git): ZJIT: Only use make_equal_to for instructions with output
It's used as an alternative to find-and-replace, so we should have
nothing to replace.
Max Bernstein
12:42 AM Revision 0e7e6858 (git): [ruby/psych] Add option to disable symbol parsing
https://github.com/ruby/psych/commit/4e9d08c285 Caleb Stewart
12:40 AM Revision 8f7d821d (git): [ruby/psych] Remove y Object extension in IRB
Fixes: ruby#685
This feature can easily break how you use other gems like factory_bot or prawn.
https://github.com/ruby/psych/pull/747#issuecomment-3413139525
> But I kind of think we should leave `psych/y` around. If people really wan...
Rune Philosof
12:39 AM Revision e96bbd71 (git): Remove needless parse.y `new_nil` macro
In the past parse.y and ripper had different `new_nil` definition
so that `new_nil` returns `nil` for ripper.
```c
// parse.y
#define new_nil(loc) NEW_NIL(loc)
// ripper
#define new_nil(loc) Qnil
```
However Rearchitect Ripper (89cfc1...
yui-knk (Kaneko Yuichiro)
12:39 AM Revision b79ef73a (git): Remove needless parse.y `value_expr` macro
In the past parse.y and ripper had different `value_expr` definition
so that `value_expr` does nothing for ripper.
```c
// parse.y
#define value_expr(node) value_expr_gen(p, (node))
// ripper
#define value_expr(node) ((void)(node))
```...
yui-knk (Kaneko Yuichiro)

12/03/2025

09:59 PM Revision b43e66d3 (git): YJIT: Pass class and shape ID directly instead of object
Max Bernstein
09:59 PM Revision f1670733 (git): Move imemo fields check out of shape_get_next
Not every caller (for example, YJIT) actually needs to pass the object.
YJIT (and, in the future, ZJIT) only need to pass the class.
Max Bernstein
09:59 PM Revision 612a6680 (git): Remove spurious obj != klass check in shape_get_next
This should never be true. I added an `rb_bug` in case it was and it
wasn't true in any of btest or test-all.
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
Max Bernstein
09:42 PM Feature #21722: Expose rb_gc_mark_weak API for use in extensions
The reason I know of that it's unsafe to allocate (newobj or xmalloc) inside of the NEWOBJ hook is that a lot of code expects there to be a grace period between newobj and the next allocation where it can fill in the object without issui... jhawthorn (John Hawthorn)
03:10 PM Feature #21722: Expose rb_gc_mark_weak API for use in extensions
Continuing from https://bugs.ruby-lang.org/issues/21710#note-17
ivoanjo (Ivo Anjo) wrote:
> Weakmap APIs are Ruby-level and can't be used from the NEWOBJ tracepoint.
Because that would recursively invoke the NEWOBJ tracepoint?
I though...
Eregon (Benoit Daloze)
09:37 PM Revision d7e55f84 (git): ZJIT: Use the custom iterator
This commit uses the custom instruction iterator in arm64 / x86_64
instruction splitting. Once we introduce basic blocks to LIR, the
custom iterator will ensure that instructions are added to the correct
place.
tenderlovemaking (Aaron Patterson)
09:37 PM Revision 2b23b05b (git): ZJIT: Add a specialized instruction iterator to the assembler
This commit adds a specialized instruction iterator to the assembler
with a custom "peek" method. The reason is that we want to add basic
blocks to LIR. When we split instructions, we need to add any new
instructions to the correct bas...
tenderlovemaking (Aaron Patterson)
09:16 PM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
I'm fine with adding `MOVEOBJ`, it makes sense, but I don't think it's currently necessary. `ObjectSpace.trace_object_allocations` handles this by subscribing both to `NEWOBJ` and `FREEOBJ` and tracking the objects in its own hash table ... jhawthorn (John Hawthorn)
04:57 PM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
+1 for `MOVEDOBJ` (or `MOVEOBJ` like `NEWOBJ/FREEOBJ`. It should be called just before/after moving) for object profiling purpose.
I'm not sure how to "simulate weak references"...
ko1 (Koichi Sasada)
11:06 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
> That sounds like a use case for WeakRef or ObjectSpace::WeakMap.
> ...
In retrospect I was a bit confusing there -- The key missing bit is having something that's safe to use from `NEWOBJ` tracepoint, which is what `WeakRef` and `Weak...
ivoanjo (Ivo Anjo)
09:45 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
ivoanjo (Ivo Anjo) wrote in #note-14:
> Maybe, yeah! Effectively the two requirements I believe are:
> ...
That sounds like a use case for `WeakRef` or `ObjectSpace::WeakMap`.
In #21722 you mention that would need the GVL, but don't you...
Eregon (Benoit Daloze)
09:17 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
Having `MOVEDOBJ` would be very useful for being able to use the address as identity + I think it may come in handy for caches -- I think it would solve the "a) Be able to identify or reference object without preventing its GC, even if t... ivoanjo (Ivo Anjo)
08:45 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
That makes me wonder if a `MOVEDOBJ` tracepoint would be a good solution. At least for now you can assume compaction almost never happens, and even when it happens, not so many objects would be moved.
So you'd get the benefit of using...
byroot (Jean Boussier)
08:37 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
> rb_gc_mark_weak can be an option, another may be to have a mechanism to prevent compaction, so you can simply rely on addresses.
Maybe, yeah! Effectively the two requirements I believe are:
a) Be able to identify or reference obj...
ivoanjo (Ivo Anjo)
07:21 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
Alright, I merged the fix, but as @jhawthorn mentioned, we should really figure out a way so you don't have to do this, because all we could think of when looking at the code was: "How has this ever worked?".
`rb_gc_mark_weak` can be ...
byroot (Jean Boussier)
07:15 AM Bug #21710 (Closed): Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
Applied in changeset commit:git|8c3909935e2ba9f79bf3492772c77c305a0d370b.
----------
Handle NEWOBJ tracepoints settings fields
[Bug #21710]
- struct.c: `struct_alloc`
It is possible for a `NEWOBJ` tracepoint call back to write fields...
byroot (Jean Boussier)
09:05 PM Feature #21701: Enumerator.produce accepts an optional `size` keyword argument
Ah, I missed that `Enumerator.produce(...).size` returns `Infinity`.
I think that's the problem, it should return `nil` because it doesn't know if infinite or not, as you say in many cases it is not infinite.
If that's done, I think ...
Eregon (Benoit Daloze)
08:59 PM Feature #21701: Enumerator.produce accepts an optional `size` keyword argument
I think having to provide a size for those cases to not raise is too inconvenient.
I agree with what has been said in #21654: we should not check raise for infinite loops, unless we are absolutely certain they are infinite.
A `size` of `...
Eregon (Benoit Daloze)
09:02 PM Bug #21654: Set#new calls extra methods compared to previous versions
I think what most people would agree here on is:
* If we know for sure a method will loop forever, then it seems helpful to raise.
* If we don't know for sure or have any doubt (e.g. with an Enumerator with `size`=`nil` which means u...
Eregon (Benoit Daloze)
08:37 PM Revision a773bbf0 (git): Track small malloc/free changes in thread local
jhawthorn (John Hawthorn)
08:37 PM Revision 9913d8da (git): Group malloc counters together
jhawthorn (John Hawthorn)
08:15 PM Revision 8d1a6bc4 (git): gc.c: check if the struct has fields before marking the fields_obj
If GC trigger in the middle of `struct_alloc`, and the struct has more
than 3 elements, then `fields_obj` reference is garbage.
We must first check the shape to know if it was actually initialized.
byroot (Jean Boussier)
07:53 PM Misc #21762 (Assigned): Box: Inspect improvements
1\. Currently, `Ruby::Box` provides an `#inspect` method, and its output is reasonably short yet mysterious:
```ruby
Ruby::Box.new
#=> #<Namespace:3,user,optional>
```
First, it uses old `Namespace` name instead of `Ruby::Box`. Next...
zverok (Victor Shepelev)
06:51 PM Revision 228d13f6 (git): gc.c: Pass shape_id to `newobj_init`
Attempt to fix the following SEGV:
```
ruby(gc_mark) ../src/gc/default/default.c:4429
ruby(gc_mark_children+0x45) [0x560b380bf8b5] ../src/gc/default/default.c:4625
ruby(gc_mark_stacked_objects) ../src/gc/default/default.c:4647
ruby(gc_m...
byroot (Jean Boussier)
06:37 PM Revision fd02356e (git): ZJIT: Optimize NewArray to use rb_ec_ary_new_from_values (#15391)
Goshanraj Govindaraj
06:24 PM Revision d5c7cf0a (git): [ruby/prism] Fix wrong error message for lower percent i arrays
Not so sure how to trigger it but this is definitly more correct.
https://github.com/ruby/prism/commit/1bc8ec5e5d
Earlopain (Earlopain _)
06:24 PM Revision ed31a0ca (git): [ruby/prism] Correctly handle line continuations in %w/i% interrupted by heredocs
See https://bugs.ruby-lang.org/issues/21756. Ripper fails to parse this,
but prism actually also doesn't handle it correctly.
When heredocs are used, even in lowercase percent arays there can be
multiple `STRING_CONTENT` tokens. We need...
Earlopain (Earlopain _)
06:13 PM Revision f9cd94f1 (git): wb-protect autoload_const
jhawthorn (John Hawthorn)
05:24 PM Misc #21689: DevMeeting-2025-12-11
- [Feature #21701] Enumerator.produce accepts an optional `size` keyword argument
- Enumerator#to_set now rejects infinite sequences, and the current situation of Enumerator::Producer that its size is fixed to infinity creates an incon...
knu (Akinori MUSHA)
04:54 PM Revision fcf39397 (git): Speedup TypedData_Get_Struct
While profiling `Monitor#synchronize` and `Mutex#synchronize`
I noticed a fairly significant amount of time spent in
`rb_check_typeddata`.
By implementing a fast path that assumes the object is valid
and that can be inlined, it does mak...
byroot (Jean Boussier)
04:52 PM Revision dd0dfecc (git): Next Ruby version is 4.0, not 3.5
hsbt (Hiroshi SHIBATA)
04:34 PM Revision d7dffcdb (git): [ruby/prism] Follow repo move from oracle/truffleruby to truffleruby/truffleruby
https://github.com/ruby/prism/commit/c8e1b11120 Eregon (Benoit Daloze)
04:22 PM Feature #21720: Add a native Binary Heap / Priority Queue to Ruby's Standard Library (heapify, heappush, heappop)
```ruby
Heap.heapify(array)
Heap.heappush(array, value)
Heap.heappop(array)
```
This looks like a very fragile API to me:
```ruby
Heap.heapify(array)
array << 'something random' # The heap is not encapsulated, so we can perform a...
herwin (Herwin W)
03:27 PM Revision 20fc8aff (git): Update default gems list at 94581b1ffde5e2afeba4631152955c [ci skip]
git[bot]
03:27 PM Feature #21005: Update the source location method to include line start/stop and column start/stop details
bkuhlmann (Brooke Kuhlmann) wrote in #note-18:
> Any chance this could be fixed and included in time for the Ruby 4.0.0 release?
This is already implemented in Ruby 4.0.0-preview2 for Proc, Method, and UnboundMethod, but not Binding.
jeremyevans0 (Jeremy Evans)
03:25 PM Revision 94581b1f (git): [ruby/json] Release 2.17.0
https://github.com/ruby/json/commit/4bdb2d14fe byroot (Jean Boussier)
03:21 PM Revision 208271e3 (git): [ruby/json] Fix handling of depth
https://github.com/ruby/json/commit/ccca602274 etienne (Étienne Barrié)
02:57 PM Revision b78db63b (git): fstring_concurrent_set_create: only assert the string has no ivars
The NEWOBJ tracepoint can generate an object_id, that's alright,
what we don't want is actual instance variables.
byroot (Jean Boussier)
02:57 PM Revision 5770c186 (git): Rename `rb_obj_exivar_p` -> `rb_obj_gen_fields_p`
The "EXIVAR" terminology has been replaced by "gen fields"
AKA "generic fields".
Exivar implies variable, but generic fields include more than
just variables, e.g. `object_id`.
byroot (Jean Boussier)
02:55 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
> ConditionVariable and Mutex are too slow on CRuby.
So I looked at `Mutex` and `Monitor` for now.
I found an easy win for all `TypedData` which helps a bit: https://github.com/ruby/ruby/pull/15387
Before:
```
Mutex 13...
byroot (Jean Boussier)
09:28 AM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
I ran the benchmark on TruffleRuby to get an idea how much of that slowdown is due to a slow ConditionVariable & other things, the results are interesting:
CRuby:
```
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +YJIT +PRISM [x86_64-...
Eregon (Benoit Daloze)
07:18 AM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
> To get an idea of the gain, how about benchmarking with a Thread::Queue for the AR::ConnectionPool?
Here's a benchmark of `Thread::Queue` vs Active Record's stack, vs the `TimedStack` in the popular `connection_pool` gem https://gis...
byroot (Jean Boussier)
02:13 PM Revision 05383a1d (git): [ruby/json] Fix duplicated test_unsafe_load_with_options test case
https://github.com/ruby/json/commit/7b62fac525 byroot (Jean Boussier)
01:49 PM Revision 32c7c3c1 (git): [ruby/json] Reproduce C ext behavior of ignoring mutated depth in arrays
https://github.com/ruby/json/commit/e0257b9f82 etienne (Étienne Barrié)
01:49 PM Revision 54a73a57 (git): [ruby/json] Test and restore behavior around to_json changing depth
When serializing an Array, and one of the elements of the Array requires
calling `to_json`, if the depth is changed, it will be used for the next
entries, which wasn't the case before
https://github.com/ruby/json/commit/5abd43490714, and...
etienne (Étienne Barrié)
01:48 PM Revision 4d377c8c (git): [ruby/json] Improve `JSON.load` and `JSON.unsafe_load` to allow passing options as second argument
Otherwise it's very error prone.
https://github.com/ruby/json/commit/c54de70f90
byroot (Jean Boussier)
12:48 PM Bug #21758: Prism fails to parse heredoc within %Q literal split by another heredoc
It can be even simpler:
```rb
%Q
#{<<B}
B
```
Lex output similarly contains B twice.
Earlopain (Earlopain _)
09:46 AM Revision 706d8083 (git): [ruby/rubygems] Silence Bundler UI in plugin installer specs
https://github.com/ruby/rubygems/commit/90a0af8204 hsbt (Hiroshi SHIBATA)
09:38 AM Bug #21761: NameError: uninitialized constant only when RUBY_BOX=1
It does not reproduce without Rake.
```ruby
$ RUBY_BOX=1 ruby test_box.rb
ruby: warning: Ruby::Box is experimental, and the behavior may change in the future!
See doc/language/box.md for known issues, etc.
Constants defined:
R...
yahonda (Yasuo Honda)
09:37 AM Bug #21761: NameError: uninitialized constant only when RUBY_BOX=1
Here are original issue found.
# Steps to reproduce
```
git clone https://github.com/rails/rails
cd rails/activerecord
rm ../Gemfile.lock
bundle install
RUBY_BOX=1 bundle exec rake test
```
# Actual behavior
```
$ RUBY_BOX...
yahonda (Yasuo Honda)
09:36 AM Bug #21761 (Assigned): NameError: uninitialized constant only when RUBY_BOX=1
This issue is originally found when I tested Ruby::Box against Rails main branch, I think I have created a repro.
### Steps to reproduce
1. Install Ruby master branch
2. Follow these steps below.
```
git clone https://github.c...
yahonda (Yasuo Honda)
08:31 AM Bug #21756: Ripper fails to parse pathological heredoc
For the prism part of the issue https://github.com/ruby/prism/pull/3778 Earlopain (Earlopain _)
07:14 AM Revision 8c390993 (git): Handle NEWOBJ tracepoints settings fields
[Bug #21710]
- struct.c: `struct_alloc`
It is possible for a `NEWOBJ` tracepoint call back to write fields
into a newly allocated object before `struct_alloc` had the time
to set the `RSTRUCT_GEN_FIELDS` flags and such.
Hence we can't...
byroot (Jean Boussier)
07:13 AM Bug #21760 (Assigned): Ruby::Box: a couple of require-related problems
I am not sure whether all the problems have the same nature, but putting them together for now.
**1. Enabling box breaks `gem`+`require`**
Minimal reproducible example:
`test.rb`:
```ruby
gem 'faraday', '= 2.14.0'
require '...
zverok (Victor Shepelev)
05:36 AM Bug #21757: Splatted args array is mutated when passing unexpected kwargs
I submitted a pull request to fix this: https://github.com/ruby/ruby/pull/15383 jeremyevans0 (Jeremy Evans)
05:16 AM Revision 4762f429 (git): [DOC] typo fix in ruby/file.c
B. Burt
04:45 AM Bug #21759 (Open): `test_fork.rb:78` is failing with `RUBY_MN_THREADS=1`
The following failure of `make btest` is happend with `RUBY_MN_THREADS=1`.
```
#289 test_fork.rb:78:
def now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
Thread.new do
loop { sleep 0.0001 }
end
...
hsbt (Hiroshi SHIBATA)
02:53 AM Revision b8a79884 (git): Avoid leaking fd in uminus_no_embed test
jhawthorn (John Hawthorn)
02:43 AM Revision 65cfd5e1 (git): Update default gems list at 1af7550114a0401229eda42de24a82 [ci skip]
git[bot]
02:42 AM Revision 1af75501 (git): [ruby/rubygems] Bump Rubygems version to 4.0.0
https://github.com/ruby/rubygems/commit/9d744beb56 hsbt (Hiroshi SHIBATA)
02:42 AM Revision d6107f4a (git): [ruby/rubygems] Bump Bundler version to 4.0.0
https://github.com/ruby/rubygems/commit/a55c485226 hsbt (Hiroshi SHIBATA)
02:41 AM Revision 6e723bee (git): [DOC] About Float Imprecision (#15293)
burdettelamar (Burdette Lamar)
02:39 AM Revision b2f11065 (git): [DOC] Harmonize #+ methods
burdettelamar (Burdette Lamar)
02:35 AM Revision f4466ec8 (git): Bump actions/checkout in /.github/actions/setup/directories
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](http...
dependabot[bot]
02:31 AM Revision bf144d8c (git): Bump actions/checkout from 6.0.0 to 6.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v6.0.1)
---
updated-dependen...
dependabot[bot]
02:19 AM Revision 28d9493b (git): [ruby/json] Fix macro arguments
`ALWAYS_INLINE()` and `NOINLINE()` are defined with one argument.
https://github.com/ruby/json/commit/8fb727901e
nobu (Nobuyoshi Nakada)
01:18 AM Revision dfdc5d40 (git): Check and raise semantics errors on nested variables captures in patterns
This commit makes these codes to be invalid.
```ruby
case 0
in [a] | 1
end
case 0
in { a: b } | 1
end
case 0
in [{ a: [{ b: [{ c: }] }] }] | 1
end
```
yui-knk (Kaneko Yuichiro)
 

Also available in: Atom