Project

General

Profile

Activity

From 11/15/2025 to 11/21/2025

Today

02:49 PM Bug #21696: Performance degradation for long running processes in Ruby 4.0.0-preview2
Thanks for running the tests!
On my machine (x64 Linux/AMD Ryzen 7 5800X) Roda works fine with the Gemfile from the repository. Yes, most gems are (very) old, I have pinned these in order to have a stable set of gems so comparing resu...
easydwh (Ivo Herweijer)
01:33 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
@cfis, thank you for your comments.
The benefits of source code compatibility with other platforms and the shared use of Windows C runtime resources by ruby and C extensions
enforce a single C runtime for the Windows port.
In this ...
YO4 (Yoshinao Muramatsu)
08:43 AM Revision 5f5da2c2 (git): Fix stdatomic case in rbimpl_atomic_u64_fetch_add
This was failing on crossruby, likely because HAVE_GCC_ATOMIC_BUILTINS
was true, but HAVE_GCC_ATOMIC_BUILTINS_64 was false. We probably should
have feature detection of 64-bit stdatomics like we do for GCC, but for
now let's keep rbimpl_...
jhawthorn (John Hawthorn)
08:34 AM Revision b9a213f7 (git): Fix timezone of `yesterday`
Set the `TZ environment variable. `git log` does not recognize UTC
offset in `--before` option, unless full datetime is given.
nobu (Nobuyoshi Nakada)
08:34 AM Revision d4e1f9e1 (git): Win: quote equal sign in command line
`cmd.exe` splits the command line also by equal signs, not only by
space characters.
nobu (Nobuyoshi Nakada)
08:32 AM Revision eb11b40b (git): [ruby/rubygems] bin/rubocop -a
https://github.com/ruby/rubygems/commit/fbf6fb667e hsbt (Hiroshi SHIBATA)
06:49 AM Revision bcc7b204 (git): Use assert_match for uplevel option
hsbt (Hiroshi SHIBATA)
06:49 AM Revision 1d160ed0 (git): Fixed warning for String comparison of Gem::Version
hsbt (Hiroshi SHIBATA)
06:26 AM Feature #21701 (Open): Enumerator.produce accepts an optional `size` keyword argument
Enumerator::Producer#size currently always returns `Float::INFINITY`, and it is not specifiable.
However, a produce sequence is known to be at least finite in many cases, and you can even tell or compute the exact size in some cases.
...
knu (Akinori MUSHA)
04:34 AM Revision 451c1209 (git): [ruby/rubygems] Check for file existence before deletion from cache
(https://github.com/ruby/rubygems/pull/9095)
* Rescue when deleting a non-existent cached gem file
When a gem was in the cache, but another process deletes it first, this
delete command fails.
To work around this, I'm rescuing from Er...
Philip Arndt
04:20 AM Revision ee002a5e (git): [ruby/rubygems] Respect `BUNDLE_VERSION` config at Gem::BundlerVersionFinder
If we use "system" variable in BUNDLE_VERSION on Bundler configuration,
we can use bundler version provided by system installation.
But the current logic returns the first activated version of bundler
like 2.7.2. It makes to confuse use...
hsbt (Hiroshi SHIBATA)
04:03 AM Revision 917e77be (git): [ruby/rubygems] Deprecate comparing Gem::Version objects with strings
Comparing version objects is a huge bottleneck in dependency solvers
(like inside Bundler). I would like to make comparing version objects
cheaper. Right now we support comparing version objects with strings by
trying to coerce the str...
tenderlovemaking (Aaron Patterson)
04:03 AM Revision 8b116ee8 (git): [ruby/rubygems] create a gem version instead of comparing with a string
https://github.com/ruby/rubygems/commit/c1e3d4d63b tenderlovemaking (Aaron Patterson)
03:13 AM Revision 9aa09b46 (git): [ruby/rubygems] Fixed RuboCop offense in Rakefile generated by `bundle gem`
```
Offenses:
Rakefile:18:1: C: [Correctable] Layout/EmptyLines: Extra blank line detected.
Diff:
@@ -11,4 +11,5 @@
ext.lib_dir = "lib/test_gem"
end
+
task default: :compile
https://github.com/ruby/rubygems/commit/8c414729df
sue445 (Go Sueyoshi)
03:13 AM Revision a26f8235 (git): [ruby/rubygems] Add go_gem/rake_task for Go native extention gem skeleton
https://github.com/ruby/rubygems/commit/64f92d2da0 sue445 (Go Sueyoshi)
01:51 AM Revision 9d04fb52 (git): CI: cmake in scoop seems unused
nobu (Nobuyoshi Nakada)
01:19 AM Revision 9764306c (git): Accurate GC.stat under multi-Ractor mode
John Hawthorn
12:52 AM Revision 07ddb0ed (git): ZJIT: Read `iseq->body->param` directly instead of through FFI
Going through a call to a C function just to read a bitfield was a
little extreme. We did it to be super conservative since bitfields
have historically been the trigger of many bugs and surprises. Let's
try directly accessing them with c...
alanwu (Alan Wu)
12:52 AM Revision 7a09df45 (git): Name the `iseq->body->param` struct and update bindings for JITs
This will make reading the parameters nicer for the JITs. Should be
no-op for the C side.
alanwu (Alan Wu)
12:30 AM Revision aa9e15cb (git): Fix multiple bugs in `IO::Buffer.map` and update its documentation. (#15264)
- Buffer's size did not account for offset when mapping the file, leading to possible crashes.
- Size and offset were not checked properly, leading to many situations raising EINVAL errors with generic messages.
- Documentation was wrong.
Alexander Bulancov

11/20/2025

11:38 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
Thanks for taking a look at this and coming up with an implementation, this is great.
I haven't really played around with it much but I did read the code and I have a few thoughts:
* There's 1 deferred wait thread per ractor, which isn...
luke-gru (Luke Gruber)
01:24 AM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
@jpl-coconut Please do! This seems like a really good demonstration of the issue and a good start on addressing it. The change is a lot smaller than I expected it to be ❤️. We would only make performance improvements like this to the `ma... jhawthorn (John Hawthorn)
11:11 PM Revision 29d8a50d (git): [ruby/rubygems] Keep legacy windows platform, not removed them
https://github.com/ruby/rubygems/commit/f360af8e3b hsbt (Hiroshi SHIBATA)
11:10 PM Revision e15b4e1c (git): Bump default compiler to clang-20 in CI
clang-18 has a bug that causes the latest Ractor btest to crash. peterzhu2118 (Peter Zhu)
11:10 PM Revision 3ec44a99 (git): Add a Ractor test case that causes MMTk to deadlock
This was a test case for Ractors discovered that causes MMTk to deadlock.
There is a fix for it in https://github.com/ruby/mmtk/pull/49.
peterzhu2118 (Peter Zhu)
11:01 PM Revision 010b23a7 (git): [ruby/rubygems] Add support for BUNDLE_LOCKFILE environment variable
This specifies the lockfile location. This allows for easy support
of different lockfiles per Ruby version or platform.
https://github.com/ruby/rubygems/commit/b54d65bc0a
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Co-authored-by: ...
jeremyevans (Jeremy Evans)
11:01 PM Revision 1562803e (git): [ruby/rubygems] Add support for bundle install --no-lock
This allows for the same behavior as including `lockfile false`
in the Gemfile. This allows you to get the behavior without
modifying the Gemfile, which is useful if you do not control the
Gemfile.
This is similar to the --no-lock optio...
jeremyevans (Jeremy Evans)
11:01 PM Revision 82d8d24e (git): [ruby/rubygems] Add support for lockfile in Gemfile
This allows you to specify the lockfile to use. This is useful if
you want to use different lockfiles for different ruby versions or
platforms. You can also skip writing the lockfile by using a false
value.
https://github.com/ruby/rubyg...
jeremyevans (Jeremy Evans)
10:48 PM Feature #21700: `IO::Buffer.map`: offset argument is "broken" and needs to be made more useful
This makes sense to me. However it might mean we need to return a slice (which IMHO is probably okay). The alternative is to expose the internal implementation and force the user to deal with all that shit. We should also document clearl... ioquatix (Samuel Williams)
08:25 PM Feature #21700: `IO::Buffer.map`: offset argument is "broken" and needs to be made more useful
> Currently, offset doesn't change the buffer's size if unspecified, leading to crashes. I will be making a PR addressing this but still.
The pull request in question: https://github.com/ruby/ruby/pull/15264
trinistr (Alexander Bulancov)
07:43 PM Feature #21700 (Open): `IO::Buffer.map`: offset argument is "broken" and needs to be made more useful
*This was supposed to be a bug report, but it turned into a feature request halfway through.*
`IO::Buffer.map` supports `size` and `offset` arguments to localize buffer to a specific part of mapped file. While `size` works fine, speci...
trinistr (Alexander Bulancov)
10:35 PM Revision fb28d474 (git): ZJIT: Change the output on redefined method tests to verify the new definition is used
Kevin Menard
10:35 PM Revision 447989e5 (git): ZJIT: Update test names to use the same convention as the HIR tests
Kevin Menard
10:35 PM Revision 36f1ab96 (git): ZJIT: Add tests for `opt_newarray_send` with target methods redefined
Kevin Menard
10:35 PM Revision 7d2f9ab9 (git): ZJIT: Handle display formatting for all defined bops
Kevin Menard
10:35 PM Revision b06dd644 (git): ZJIT: Compile the VM_OPT_NEWARRAY_SEND_HASH variant of opt_newarray_send
Kevin Menard
10:35 PM Revision 604fc059 (git): ZJIT: Rename array length reference to make the code easier to follow
Kevin Menard
10:30 PM Revision 24473808 (git): Run rb_gc_before_fork after before_exec
before_exec stops the timer thread, which requires locking the Ractor
scheduler lock. This may deadlock if rb_gc_before_fork locks the VM.
peterzhu2118 (Peter Zhu)
10:08 PM Revision 55938a45 (git): [DOC] Sort some methods in What's Here
burdettelamar (Burdette Lamar)
10:07 PM Revision d5368fc5 (git): [DOC] Tweaks for String#valid_encoding?
burdettelamar (Burdette Lamar)
10:06 PM Revision 826e91a7 (git): [DOC] Harmonize mod methods
burdettelamar (Burdette Lamar)
10:06 PM Revision ff1d23ec (git): Use a serial to keep track of Mutex-owning Fiber
Previously this held a pointer to the Fiber itself, which requires
marking it (which was only implemented recently, prior to that it was
buggy). Using a monotonically increasing integer instead allows us to
avoid having a free function a...
jhawthorn (John Hawthorn)
10:06 PM Revision d1b11592 (git): [DOC] Tweaks for String#upto
burdettelamar (Burdette Lamar)
10:05 PM Revision 8b71234a (git): [ruby/rubygems] Change the logger instance for this spec:
- With the logger change that is now threadsafe, such code no longer
behaves the same:
```ruby
Bundler.ui.silence do
Bundler.ui.level = 'info'
Bundler.ui.info("foo")
# This used to output something. Now it doesn't.
...
Edouard CHIN
10:05 PM Revision 409c004a (git): [ruby/rubygems] Make the Bundler logger thread safe:
- The Logger is not thread safe when calling `with_level`.
This now becomes problematic because we are using multiple
threads during the resolution phase in order to fetch git gems.
https://github.com/ruby/rubygems/commit/380653ae74
Edouard CHIN
10:05 PM Revision bd60600d (git): [ruby/rubygems] Run git operations in parallel to speed things up:
- ### Problem
When you have a Gemfile that contains git gems, each repository will
be fetched one by one. This is extremelly slow.
A simple Gemfile with 5 git gems (small repositories) can take up
to 10 seconds just to fetch the...
Edouard CHIN
10:05 PM Revision 9b87a0b9 (git): Fix missing write barrier on namespace classext
Found by wbcheck
It seems like here the classext was associated with the class, but it
already had Ruby objects attached.
rb_gc_writebarrier_remember works around that issue, but I suspect if we
enabled autocompaction the values copied...
jhawthorn (John Hawthorn)
10:04 PM Revision a4a99a24 (git): [DOC] TWeaks for String#upcase!
burdettelamar (Burdette Lamar)
10:03 PM Revision 59e04892 (git): [DOC] Tweaks for String#upcase (#15244)
burdettelamar (Burdette Lamar)
10:02 PM Revision cb9c7a6a (git): [ruby/rubygems] Improve error messages and handling in tests
This is a first pass to improve the way errors are handled and raised in
bundler's tests. The goal is to clean up tests and modernize them -
these were some obvious areas that could be cleaned up.
- Instead of raising "ZOMG" in the load...
eileencodes (Eileen Uchitelle)
08:09 PM Revision ba47c2f0 (git): [ruby/prism] Add tests to `regexp_encoding_option_mismatch`
related to #2667
https://github.com/ruby/prism/commit/44f075bae4
thdaraujo (Thiago Araujo)
08:06 PM Revision 0b4420bf (git): [ruby/prism] Use memmove for overlapping memory ranges
Fixes https://github.com/ruby/prism/pull/3736.
https://github.com/ruby/prism/commit/1f5f192ab7
Steven Johnstone
07:47 PM Revision a8f269a2 (git): ZJIT: Deduplicate successor and predecessor sets (#15263)
Fixes https://github.com/Shopify/ruby/issues/877
I didn't consider the ability to have the successor or predecessor sets having duplicates when originally crafting the Iongraph support PR, but have added this to prevent that happening i...
aidenfoxivey (Aiden Fox Ivey)
05:23 PM Revision 48027256 (git): [ruby/json] Remove unused symbols
https://github.com/ruby/json/commit/9364d0c761 etienne (Étienne Barrié)
04:32 PM Revision f8cb9f32 (git): ZJIT: Put optional interpreter cache on both GetIvar and SetIvar
Max Bernstein
04:32 PM Revision 0b6daad6 (git): ZJIT: Fix pointer types for SetInstanceVariable
Max Bernstein
02:54 PM Bug #21396 (Closed): Set#initialize should call Set#add on items passed in
Applied in changeset commit:git|41b8e440e7f2c5d3d1c1a9644de4bdc06a343724.
----------
Support backwards compatibility for Set subclasses
For subclasses from Set, require `set/subclass_compatible`, and
extend the subclass and include a m...
jeremyevans (Jeremy Evans)
02:54 PM Bug #21375 (Closed): Set[] does not call #initialize
Applied in changeset commit:git|41b8e440e7f2c5d3d1c1a9644de4bdc06a343724.
----------
Support backwards compatibility for Set subclasses
For subclasses from Set, require `set/subclass_compatible`, and
extend the subclass and include a m...
jeremyevans (Jeremy Evans)
02:54 PM Revision 41b8e440 (git): Support backwards compatibility for Set subclasses
For subclasses from Set, require `set/subclass_compatible`, and
extend the subclass and include a module in it that makes it more
backwards compatible with the pure Ruby Set implementation used
before Ruby 4.
The module included in the ...
jeremyevans (Jeremy Evans)
08:56 AM Revision a24922a6 (git): Remove stale declaration
`rb_zjit_option_enabled_p` seems no longer used/defined since
ruby/ruby#f84bbb423836d9d0d018b8ab71ecceb5868fd5be.
nobu (Nobuyoshi Nakada)
08:42 AM Revision d755052a (git): Remove wrong test
`realloc` is not guaranteed to return the same address when shrinking. nobu (Nobuyoshi Nakada)
07:59 AM Revision 2c42f7c6 (git): [ruby/resolv] Move minimal registry access to the extension
Now win32/registry depends on fiddle, and its conversion is complex
and too generic for the purpose of resolv.
https://github.com/ruby/resolv/commit/bd24870d2d
nobu (Nobuyoshi Nakada)
04:54 AM Feature #21675: Advent of Pattern Matching
We briefly discussed this at the monthly dev meeting. While we haven't reached a consensus on whether the scope of pattern matching should be expanded in general, I would like to share one specific concern that came up during the discuss... mame (Yusuke Endoh)
02:42 AM Revision 4c752508 (git): Update default gems list at 0653a01ada3c3c286de128074b58b3 [ci skip]
git[bot]
02:41 AM Revision 0653a01a (git): [ruby/rubygems] Bump up to 4.0.0.beta1
https://github.com/ruby/rubygems/commit/9be811c01a hsbt (Hiroshi SHIBATA)
02:07 AM Feature #19979: Allow methods to declare that they don't accept a block via `&nil`
Given that the next release will be Ruby 4.0, and that the Syntax moratorium should be over.
Do you think it's possible you could reconsider adding this feature?
pabloh (Pablo Herrero)
01:07 AM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
Currently, my goal is to rewrite the C++ code I have into C. To achieve this, I am creating a set of macros in Ruby on top of C that run at compile time, and the output of these macros is C code. Here is an example of what I am doing, ... fredlinhares (Frederico Linhares)
12:03 AM Revision 167c3dba (git): Omit a test on s390x linux tripping over a git bug
This test has been reliably failing on recent trunk versions.
See: <https://github.com/ruby/ruby/actions/runs/19519712433/job/55880266450#step:14:120>
alanwu (Alan Wu)

11/19/2025

11:28 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
How can I help move the discussion forward? Is it better if I create a PR and we discuss there? jpl-coconut (Jacob Lacouture)
11:25 PM Feature #20408 (Closed): Add heap_live_slots to GC.stat_heap
Applied in changeset commit:git|fa02d7a01f5e7516de8eb3c7f92ec75c50c06e3f.
----------
Implement heap_live_slots in GC.stat_heap
[Feature #20408]
peterzhu2118 (Peter Zhu)
11:25 PM Revision f5f69d41 (git): Implement heap_final_slots in GC.stat_heap
[Feature #20408] peterzhu2118 (Peter Zhu)
11:25 PM Revision 83bf0542 (git): Implement heap_free_slots in GC.stat_heap
[Feature #20408] peterzhu2118 (Peter Zhu)
11:25 PM Revision fa02d7a0 (git): Implement heap_live_slots in GC.stat_heap
[Feature #20408] peterzhu2118 (Peter Zhu)
11:14 PM Revision 2cd792a1 (git): ZJIT: Fix assertion failure when profiling VM_BLOCK_HANDLER_NONE
As can be seen in vm_block_handler_verify(), VM_BLOCK_HANDLER_NONE is
not a valid argument for vm_block_handler(). Store nil in the profiler
when seen instead of crashing.
alanwu (Alan Wu)
11:14 PM Revision 4107a410 (git): ZJIT: Re-link the test binary when only miniruby changes
alanwu (Alan Wu)
11:00 PM Revision 2ed287da (git): ZJIT: Add Iongraph compatibility (#14999)
## Components
This PR adds functionality to visualize HIR using the [Iongraph](https://spidermonkey.dev/blog/2025/10/28/iongraph-web.html) tool first created for use with Spidermonkey.
## Justification
Iongraph's viewer is (as mention...
aidenfoxivey (Aiden Fox Ivey)
10:54 PM Revision 63a6290c (git): [DOC] Update yjit.md to use a different email
Stan Lo
10:38 PM Revision d487e396 (git): ZJIT: [DOC] Comment copy-editing
alanwu (Alan Wu)
10:37 PM Revision ba2b97a9 (git): Update to ruby/spec@6e62695
Eregon (Benoit Daloze)
10:34 PM Bug #21696: Performance degradation for long running processes in Ruby 4.0.0-preview2
I ran the benchmarks, but unfortunately some of the gems are out of date for anyone looking into this. The Gemfile needs:
```ruby
gem "sqlite3" # instead of "1.4.2"
gem "nio4r", "2.7.5" # instead of "2.5.8"
```
I also had to create a c...
luke-gru (Luke Gruber)
10:27 PM Revision 4e1f20fe (git): [ruby/error_highlight] Fix prism_spot_def_for_name for singletons
Previously calling a singleton method with invalid arguments would give:
RuntimeError: Incompatible locations
This is because `join` wants the operator to come before the location
https://github.com/ruby/error_highlight/commit/449...
jhawthorn (John Hawthorn)
10:12 PM Feature #20750: Allow rb_thread_call_with_gvl to work when thread already has GVL
kbrock (Keenan Brock) wrote:
> I'm hoping we can make `ruby_thread_has_gvl_p` a public method and no longer experimental.
This has been done as part of #20877 in https://github.com/ruby/ruby/pull/11975/commits/979c05185270d088b4531a6...
Eregon (Benoit Daloze)
08:58 PM Revision 4a1af72a (git): ZJIT: Count all calls to C functions from generated code (#15240)
lobsters:
```
Top-20 calls to C functions from JIT code (79.9% of total 97,004,883):
rb_vm_opt_send_without_block: 19,874,212 (20.5%)
rb_vm_setinstancevariable: 9,774,841 (10...
tekknolagi (Maxwell Bernstein)
08:47 PM Revision 28908a95 (git): Fix provided features spec with --repeat 2
Eregon (Benoit Daloze)
08:03 PM Misc #21699 (Open): Updating CAPI docs
Hello.
How often are the CAPI docs hosted at https://docs.ruby-lang.org/capi/en/master/ refreshed?
It looks like it's been more than 2 weeks since they were last refreshed.
Last revision 4a3d8346a6d0e068508631541f6bc43e8b154ea1 is...
stevo (Steve Savio)
05:31 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Hi YO4 - thank you for your last comment - I appreciate it. I too need to strive for better communication, because clearly I am not communicating very well. I hope we can all assume the best intentions in others, and realize communicatio... cfis (Charlie Savage)
02:52 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Looking back now, I realize my recent comments were not good communication.
My comments were overly aggressive.
Particularly noteworthy the final statement was made in a manner that seemed to represent the community, cutting off @cif...
YO4 (Yoshinao Muramatsu)
03:40 PM Bug #21698: Should simple ArgumentError refer to Object?
Thanks for clarification 👍 vo.x (Vit Ondruch)
02:01 PM Bug #21698: Should simple ArgumentError refer to Object?
Displaying the method owner class was decided in #19117. The fact that it was not displayed for `"wrong number of arguments"` errors was simply a bug due to an oversight.
We were aware at the time of #19117 that this change would be i...
mame (Yusuke Endoh)
01:16 PM Bug #21698: Should simple ArgumentError refer to Object?
#19117 was closed more then a year ago, therefore I'd assume it was part of Ruby 3.4. But I am pointing out change between Ruby 3.4 and 4.0discussing. But there are also exceptions such as #20275, so maybe this is the case for another on... vo.x (Vit Ondruch)
12:17 PM Bug #21698 (Closed): Should simple ArgumentError refer to Object?
It's just #19117 and it's intentional.
That feature is missing a NEWS entry though, @mame could you add one?
Eregon (Benoit Daloze)
11:38 AM Bug #21698 (Closed): Should simple ArgumentError refer to Object?
Having this simple test file:
~~~
$ cat test.rb
def foo(x, y)
end
foo(1)
~~~
This is the Ruby 3.4 behavior:
~~~
$ ruby --disable-gems test.rb
test.rb:1:in 'foo': wrong number of arguments (given 1, expected 2) (Argumen...
vo.x (Vit Ondruch)
01:51 PM Revision 7840ef2f (git): Win32: Allow some mingw implemeations to use old msvcrt
nobu (Nobuyoshi Nakada)
11:36 AM Revision f3f3a40c (git): The C-API specs cache should be invalidated when C-API specs .c & .h files are changed
Eregon (Benoit Daloze)
11:36 AM Revision 85cd08e4 (git): Update to ruby/spec@2e11d2a
headius (Charles Nutter)
11:36 AM Revision bbb4c7b8 (git): Update to ruby/mspec@bd8efcf
headius (Charles Nutter)
07:49 AM Bug #21697 (Open): `nmake up` will update broken `revision.h`
hsbt (Hiroshi SHIBATA)
07:20 AM Bug #21697 (Closed): `nmake up` will update broken `revision.h`
Applied in changeset commit:git|8986115e0a2a989f2b2ea5945f02c7a13989d640.
----------
[Bug #21697] Keep revision.h outside VCS
nobu (Nobuyoshi Nakada)
03:02 AM Bug #21697 (Open): `nmake up` will update broken `revision.h`
In 4.0.0-preview2 package, `nmake up` generate the broken `revision.h`.
I could reproduce this:
```
PS C:\Users\hsbt\Downloads> Invoke-WebRequest https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.zip -OutFile ruby-4.0.0...
hsbt (Hiroshi SHIBATA)
07:48 AM Feature #21311: Namespace on read (revised)
Is there any reason this feature couldn't be released as a gem? It seem like it has evolved far beyond it's original intention (including name change to "Box"), and I worry that it's inclusion in core will lead to inconsistent usage and ... johnnyshields (Johnny Shields)
07:43 AM Revision 169d6c7c (git): [ruby/rubygems] Use method_defined?(:method, false)
https://github.com/ruby/rubygems/commit/6cc7d71dac hsbt (Hiroshi SHIBATA)
07:41 AM Revision 339c1731 (git): Revert "[Bug #21697] Keep revision.h outside VCS"
This reverts commit 8986115e0a2a989f2b2ea5945f02c7a13989d640.
`RELEASE_DATE` including `YEAR`, `MONTH`, `DAY` are mandatory, while
`REVISION` is not.
nobu (Nobuyoshi Nakada)
07:19 AM Revision 8986115e (git): [Bug #21697] Keep revision.h outside VCS
nobu (Nobuyoshi Nakada)
07:05 AM Revision e31dc5f1 (git): Fix a typo
nobu (Nobuyoshi Nakada)
02:57 AM Revision 1443f89d (git): [DOC] Tweaks for String#unicode_normalize
burdettelamar (Burdette Lamar)
02:56 AM Revision 31900119 (git): [DOC] Tweaks for String#dump and String#undump
burdettelamar (Burdette Lamar)
02:52 AM Revision 3ee08c8d (git): Bump actions/checkout in /.github/actions/setup/directories
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 5.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 a6cecda1 (git): [ruby/etc] Win32: Drop support for older MSVC
Ruby 2.7 supports MSVC 12.0/_MSC_VER 1800 or later.
https://github.com/ruby/etc/commit/6f4404ec88
nobu (Nobuyoshi Nakada)
02:31 AM Revision 685903e5 (git): [ruby/etc] Bump up the required ruby version to 2.7
https://github.com/ruby/etc/commit/d047bb6856 nobu (Nobuyoshi Nakada)
02:08 AM Revision f040b94c (git): [ruby/mmtk] Ensure not blocking for GC in rb_gc_impl_before_fork
In rb_gc_impl_before_fork, it locks the VM and barriers all the Ractors
before calling mmtk_before_fork. However, since rb_mmtk_block_for_gc is
a barrier point, one or more Ractors could be paused there. However,
mmtk_before_fork is not ...
peterzhu2118 (Peter Zhu)
02:08 AM Revision 69b1c567 (git): [ruby/mmtk] Add VM barrier in rb_gc_impl_before_fork
We need the VM barrier in rb_gc_impl_before_fork to stop the other Ractors
because otherwise they could be allocating objects in the fast path which
could be calling mmtk_add_obj_free_candidate. Since mmtk_add_obj_free_candidate
acquires...
peterzhu2118 (Peter Zhu)
02:03 AM Revision 1f2913e7 (git): Win32: Drop support for older than MSVC 14.0/_MSC_VER 1900
Visual C++ 2015 (14.0):
- _MSC_VER: 1900
- MSVCRT_VERSION: 140
nobu (Nobuyoshi Nakada)
02:03 AM Revision 77431235 (git): Win32: Drop support for older than MSVC 12.0/_MSC_VER 1800
Visual C++ 2013 (12.0):
- _MSC_VER: 1800
- MSVCRT_VERSION: 120
nobu (Nobuyoshi Nakada)
02:03 AM Revision 25f9e678 (git): Win32: Drop support for older than MSVC 10.0/_MSC_VER 1600
Visual C++ 2010 (10.0):
- _MSC_VER: 1600
- MSVCRT_VERSION: 100
nobu (Nobuyoshi Nakada)
02:03 AM Revision 3dd39134 (git): Win32: Drop support for older than MSVC 9.0/_MSC_VER 1500
Visual C++ 2008 (9.0):
- _MSC_VER: 1500
- MSVCRT_VERSION: 90
nobu (Nobuyoshi Nakada)
02:03 AM Revision cdb9893c (git): Win32: Drop support for older than MSVC 8.0/_MSC_VER 1400
Visual C++ 2005 (8.0):
- _MSC_VER: 1400
- MSVCRT_VERSION: 80
nobu (Nobuyoshi Nakada)
02:01 AM Revision 1979f8c0 (git): [ruby/prism] Add docs for super nodes
https://github.com/ruby/prism/commit/69abcdbb18 Alexander Momchilov
01:37 AM Revision 3b953917 (git): [ruby/rubygems] Warn users that `bundle` now display the help:
- In https://github.com/ruby/rubygems/commit/31d67ecc056fb5a9193bc66a6e69e21576a87702
we enforced the new behaviour where running `bundle` no longer
installs gems but displays the help.
Users now have a way to configure their prefe...
Edouard CHIN
01:27 AM Revision 83b0cfe1 (git): [ruby/rubygems] Handle BUNDLER_VERSION being set to an empty string
This is useful, in case you're using Docker, and an upstream
Dockerfile sets BUNDLER_VERSION to something you don't want.
It's impossible to unset it... only override to be the empty
string.
https://github.com/ruby/rubygems/commit/ffa3e...
Cody Cutrer
01:02 AM Revision 1f299dd3 (git): Fix crash in optimal size for large T_OBJECT
Previously any T_OBJECT with >= 94 IVARs would crash during compaction
attempting to make an object too large to embed.
jhawthorn (John Hawthorn)
12:47 AM Revision 4423facb (git): [ruby/rubygems] Add `--ext=go` to `bundle gem`
(https://github.com/ruby/rubygems/pull/8183)
* Add new gem templates
* Add `--ext=go` in `bundle gem`
* Add setup-go to .github/workflows/main.yml
* Embed go version in go.mod
* Use go in bundler CI
* Add example method to template...
Go Sueyoshi
12:36 AM Revision 0f89fa97 (git): ZJIT: Inline BasicObject#! (#15201)
tekknolagi (Maxwell Bernstein)

11/18/2025

11:50 PM Revision 32b8f97b (git): ZJIT: Delete outdated optional param test [ci skip]
Name contradictory now, and we have other tests testing the same thing. alanwu (Alan Wu)
10:47 PM Revision 6f6a9ead (git): [ruby/rubygems] Replace instance method look up in plugin installer
`Gem::Installer.instance_methods(false).include?(:generate_plugins)` is
63x slower than `Gem::Installer.method_defined?(:generate_plugins)` in a
microbenchmark. The latter is a direct lookup, whereas the former will
create an array, whic...
eileencodes (Eileen Uchitelle)
10:45 PM Revision d5d12efd (git): [ruby/json] parser.c: Remove unued JSON_ParserStruct.parsing_name
https://github.com/ruby/json/commit/ab5efca015 byroot (Jean Boussier)
10:32 PM Revision f3f3e768 (git): Extract `KW_SPECIFIED_BITS_MAX` for JITs (GH-15039)
Rename to `VM_KW_SPECIFIED_BITS_MAX` now that it's in `vm_core.h`. Jacob (Jacob Jacob)
09:57 PM Revision cbe65ebb (git): ZJIT: Skip empty counter sections in stats
shan (Shannon Skipper)
09:57 PM Revision 65660037 (git): ZJIT: Avoid `NaN%` ratio appearing in stats
shan (Shannon Skipper)
07:50 PM Bug #21375: Set[] does not call #initialize
jeremyevans0 (Jeremy Evans) wrote in #note-10:
> I've submitted a PR that implements backwards compatibility for Set subclasses, without affecting Set itself: https://github.com/ruby/ruby/pull/15228
Thank you, I think it's a good sol...
Eregon (Benoit Daloze)
03:24 AM Bug #21375: Set[] does not call #initialize
I've submitted a PR that implements backwards compatibility for Set subclasses, without affecting Set itself: https://github.com/ruby/ruby/pull/15228
@Eregon can you try it with concurrent-ruby and see if it resolves your issue?
jeremyevans0 (Jeremy Evans)
07:24 PM Revision ff2d2fc1 (git): YJIT: omit single ractor mode assumption for `proc#call` (#15092)
The comptime receiver, which is a proc, is either shareable or from this
ractor so we don't need to assume single-ractor mode. We should never get
the "defined with an un-shareable Proc in a different ractor" error.
Luke Gruber
06:58 PM Feature #21693: Allow calling any callable object as a method
You're very close to valid Ruby with
```
class Greeter
def call(name)
puts "Hello, #{name}!"
end
end
hello = Greeter.new
hello.("World")
```
(Note the 1-character difference here.) Doing `hello.("World")` will a...
kddnewton (Kevin Newton)
05:36 PM Feature #21693: Allow calling any callable object as a method
It would be a gigantic incompatibility so there is no chance for that specific syntax, as your example would call method `hello` before and no longer with your proposal.
Just
```ruby
p = 42
p(43)
```
would break for example with th...
Eregon (Benoit Daloze)
05:54 PM Revision ce73b6c0 (git): ZJIT: Pass the result of GuardNotFrozen to StoreField and WriteBarrier
Eregon (Benoit Daloze)
05:54 PM Revision 79633437 (git): ZJIT: Rename the operand of Insn::GuardNotFrozen from val to recv
* When writing to an object, the receiver should be checked if it's frozen,
not the value, so this avoids an error-prone autocomplete.
Eregon (Benoit Daloze)
05:54 PM Revision 0e10dfde (git): ZJIT: Inline setting Struct fields
* Add Insn::StoreField and Insn::WriteBarrier Eregon (Benoit Daloze)
05:31 PM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
What are you proposing exactly? A "tool" is very vague.
Do you mean a JIT compiler for Ruby written in Ruby? Something else?
Are you interested in speeding up ERB specifically, or Ruby in general?
Why do you think it would achieve bet...
Eregon (Benoit Daloze)
02:09 AM Feature #21695: Optimizing Ruby performance with Ruby itself instead of Rust
I am interested. What kind of API do you need? Since bare memory allocation could break the whole app (leads to DoS), it's not that easy to disclose general purpose memory allocation (that's the reason YJIT, RJIT etc. has their own alloc... matz (Yukihiro Matsumoto)
04:35 PM Revision f84bbb42 (git): ZJIT: add support for lazy `RubyVM::ZJIT.enable`
This implements Shopify#854:
- Splits boot-time and enable-time initialization,
tracks progress with `InitializationState` enum
- Introduces `RubyVM::ZJIT.enable` Ruby method for
enabling the JIT lazily, if not already enabled
- I...
chancancode (Godfrey Chan)
03:34 PM Revision c38486ff (git): ZJIT: Validate types for all instructions
* This can catch subtle errors early, so avoid a fallback case and
handle every instruction explicitly.
Eregon (Benoit Daloze)
12:51 PM Bug #21696: Performance degradation for long running processes in Ruby 4.0.0-preview2
ufuk (Ufuk Kayserilioglu) wrote in #note-1:
> Did 3.5-preview1 have the same behaviour? If not, could you bisect between the two releases to find the commit that changed the behaviour?
Just ran the test, only for the Roda app. Result...
easydwh (Ivo Herweijer)
12:06 PM Bug #21696: Performance degradation for long running processes in Ruby 4.0.0-preview2
Did 3.5-preview1 have the same behaviour? If not, could you bisect between the two releases to find the commit that changed the behaviour? ufuk (Ufuk Kayserilioglu)
12:01 PM Bug #21696 (Open): Performance degradation for long running processes in Ruby 4.0.0-preview2
When running my RubyMeasureResponsetime tool (https://github.com/easydatawarehousing/ruby_measure_responsetime) on Ruby 4.0.0-preview2, a slow but steady performance degradation is measurable.
Both the Rails and the Roda based test appl...
easydwh (Ivo Herweijer)
12:49 PM Revision 522b7d82 (git): [ruby/openssl] ssl: fix test_pqc_sigalg on RHEL 9.7
RHEL 9.7 ships OpenSSL 3.5.1 with ML-DSA support, but it is disabled
for TLS by default, according to the system configuration file:
/etc/crypto-policies/back-ends/opensslcnf.config
Specify SSLContext#sigalgs to override the default lis...
rhenium (Kazuki Yamaguchi)
12:46 PM Bug #21669: Thoroughly implement void value expression check
I have an implementation in https://github.com/ruby/prism/pull/3728 (maybe needs more tests)
How about waiting on Ruby 4.1 for this? We can then introduce it early in the development cycle to find potential compatibility concerns. pre...
Earlopain (Earlopain _)
12:35 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
The discussion you cited seemed to me to be ignoring the actual problem by pinning the cause solely on ruby's behavior.
You used it to solidify your argument within the ruby community, and even tried to borrow Microsoft's authority to d...
YO4 (Yoshinao Muramatsu)
05:51 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Hi @YO4 - thank you for your reply. I absolutely agree a cooperative approach is best. I am saddened / quite surprised to hear that you think I have criticized someone. I certainly had no intention to do that. If I did then I apologize.
...
cfis (Charlie Savage)
03:33 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Ruby has made significant efforts to achieve cross-platform support at the C level.
This includes compensating for the lack of C runtime libraries.
The statement you quoted is taken out of context and that seems unfair.
The override...
YO4 (Yoshinao Muramatsu)
10:38 AM Revision f168a6d0 (git): [ruby/rubygems] Handle to reverse order result in Ruby 3.2
https://github.com/ruby/rubygems/actions/runs/19458155903/job/55676075439?pr=3857
```
-Did you mean 'methods' or 'method'?
+Could not find gem 'methosd'.
+Did you mean 'method' or 'methods'?
```
https://github.com/...
hsbt (Hiroshi SHIBATA)
10:38 AM Revision e78a96b7 (git): [ruby/rubygems] Spelling with the latest version of did_you_mean
https://github.com/ruby/rubygems/commit/d604c1d1cb hsbt (Hiroshi SHIBATA)
10:38 AM Revision c87b36ab (git): [ruby/rubygems] bin/rubocop -a
https://github.com/ruby/rubygems/commit/fee8dd2f08 hsbt (Hiroshi SHIBATA)
10:38 AM Revision e3c483b5 (git): [ruby/rubygems] Removed unused SimilarityDetector
https://github.com/ruby/rubygems/commit/40ace48651 hsbt (Hiroshi SHIBATA)
10:38 AM Revision 2c169e15 (git): [ruby/rubygems] More tests
https://github.com/ruby/rubygems/commit/210fa87f65 Austin Pray
10:38 AM Revision 55afec32 (git): [ruby/rubygems] fix tests
https://github.com/ruby/rubygems/commit/1dc669a0ab Austin Pray
10:38 AM Revision dd6ccb44 (git): [ruby/rubygems] Progressively enhance if DidYouMean is available
https://github.com/ruby/rubygems/commit/a02353fb96 Austin Pray
10:38 AM Revision 6aa16246 (git): [ruby/rubygems] Rubocop
https://github.com/ruby/rubygems/commit/a6bc30a827 Austin Pray
10:38 AM Revision f3e8bc87 (git): [ruby/rubygems] use DidYouMean::SpellChecker for gem suggestions
replaces Bundler::SimilarityDetector with DidYouMean::SpellChecker
https://github.com/ruby/rubygems/commit/959bea1506
Austin Pray
09:47 AM Revision a1c76c7e (git): Fixed conflict of vendor_gems.rb
hsbt (Hiroshi SHIBATA)
09:27 AM Bug #21692: Basic gems like `date` require a compiler
This might be related to the `--prefer-local` issue:
https://github.com/ruby/rubygems/issues/8750
I suspect there is some problem with the arches of the gems. But I might be wrong.
vo.x (Vit Ondruch)
02:09 AM Bug #21692: Basic gems like `date` require a compiler
Ah, it seems this happens on Ubuntu 24.04, without a `Gemfile.lock`, and when the `Gemfile` does not list the indirect dependencies.
I found three workarounds.
### 1\. Add a `Gemfile.lock`
If a proper `Gemfile.lock` is present, ...
mame (Yusuke Endoh)
08:43 AM Revision 85abc59c (git): [DOC] Add documentation about Ruby's VM stack
Stan Lo
08:20 AM Revision f272aabb (git): [ruby/json] Use #if instead of #ifdef when checking for JSON_DEBUG so debugging code is not generated when JSON_DEBUG=0.
https://github.com/ruby/json/commit/4f1adb10d3 Scott Myron
07:17 AM Revision 54c07383 (git): [ruby/resolv] Fix syntax error on older versions
https://github.com/ruby/resolv/commit/599f78c451 nobu (Nobuyoshi Nakada)
06:52 AM Revision ccdf83f1 (git): Update bundled gems list as of 2025-11-18
git[bot]
05:55 AM Revision 27770210 (git): Downgrade net-http 0.7.0 because JRuby is not working
hsbt (Hiroshi SHIBATA)
05:55 AM Revision 59461d12 (git): Use released version of net-http-0.8.0
hsbt (Hiroshi SHIBATA)
05:54 AM Revision 0af941db (git): [ruby/rubygems] Update resolv-0.6.3
https://github.com/ruby/rubygems/commit/778426fb73 hsbt (Hiroshi SHIBATA)
05:54 AM Revision 32716e76 (git): [ruby/rubygems] Update optparse-0.8.0
https://github.com/ruby/rubygems/commit/4e02243f66 hsbt (Hiroshi SHIBATA)
05:54 AM Revision 8cfed304 (git): [ruby/rubygems] Update fileutils-1.8.0
https://github.com/ruby/rubygems/commit/f8fe7a5208 hsbt (Hiroshi SHIBATA)
05:53 AM Revision 6ccc4199 (git): [ruby/rubygems] Update timeout-0.4.4
https://github.com/ruby/rubygems/commit/b6deff99c9 hsbt (Hiroshi SHIBATA)
05:53 AM Revision e1303756 (git): [ruby/rubygems] Update URI-1.1.1
https://github.com/ruby/rubygems/commit/07f2daf51e hsbt (Hiroshi SHIBATA)
05:53 AM Revision bfefb205 (git): [ruby/rubygems] Use released version of net-http-persistent-4.0.6
https://github.com/ruby/rubygems/commit/b237f759b0 hsbt (Hiroshi SHIBATA)
04:53 AM Revision 5ccaeee2 (git): [ruby/rubygems] Undeprecate `Gem::Version.new(nil)`
It seems like we were trying to deprecate passing `nil` to
Gem::Version.new. This breaks existing code, and I don't think there is
a good reason to deprecate this usage.
I believe what we want to prevent is the following code:
```ruby...
tenderlovemaking (Aaron Patterson)
03:20 AM Bug #21396: Set#initialize should call Set#add on items passed in
Eregon (Benoit Daloze) wrote in #note-13:
> jeremyevans0 (Jeremy Evans) wrote in #note-11:
> ...
I submitted a pull request that implements what @knu suggested: https://github.com/ruby/ruby/pull/15228
It allows subclasses to use the...
jeremyevans0 (Jeremy Evans)
02:34 AM Revision b5d0aac9 (git): Bump actions/checkout from 5.0.0 to 5.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v5...v5.0.1)
---
updated-dependen...
dependabot[bot]
02:32 AM Revision 0ce6eed7 (git): Unskip test_alternative_pattern_nested for MMTk
peterzhu2118 (Peter Zhu)
02:32 AM Revision fa8799ca (git): Fix EnvUtil.current_parser for modular GC
The regexp used in EnvUtil.current_parser did not allow square brackets
for feature names. Modular GC uses square brackets for the GC name (such
as +GC[mmtk]).
peterzhu2118 (Peter Zhu)
12:19 AM Revision 02279f01 (git): [ruby/rubygems] Removed deprecated -C option from gem build
https://github.com/ruby/rubygems/commit/3471646d43 hsbt (Hiroshi SHIBATA)

11/17/2025

10:57 PM Revision 093dbbbd (git): [ruby/rubygems] Removed unused deprecate loading
https://github.com/ruby/rubygems/commit/a49d315ecd hsbt (Hiroshi SHIBATA)
10:52 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Hi @mame - Thank you for your response and I am sorry that you feel that way, that was not my intention. I very much appreciate your help and our discussion. Maybe we can try again?
I see the problem is that Ruby exports overridden C ru...
cfis (Charlie Savage)
09:21 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
I feel your communication on this ticket suffers from what is known as the [XY problem](https://en.wikipedia.org/wiki/XY_problem). You are focusing on your proposed solution ("remove the override"), without first detailing the original p... mame (Yusuke Endoh)
07:14 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
I agree having one UCRT is best. But the very first sentence in the paragraph I linked to says:
> Every executable image (EXE or DLL) can have its own statically linked CRT, or can dynamically link to a CRT. The version of the CRT stati...
cfis (Charlie Savage)
07:00 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
I commend YO4-san for their insight into the debug/release build discrepancy.
I'm now convinced the root cause is loading multiple runtimes. Therefore, I agree with @nobu's fix: we should prohibit loading multiple runtime versions, no...
mame (Yusuke Endoh)
04:37 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
@nobu - When developing an extension it can be very helpful to use a debug build. A runtime check would prohibit that, unless you also make a debug version of ruby. But that seems like a lot of unnecessary overhead.
In addition, it wo...
cfis (Charlie Savage)
04:09 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
cfis (Charlie Savage) wrote in #note-21:
> Summary - don't pass memory/crt objects across boundaries. By overriding `fclose` and other UCRT functions Ruby causes this to happen.
Yes for the former half.
It is the reason we embed the CRT...
nobu (Nobuyoshi Nakada)
02:19 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Ah yes, you are correct @YO4.
I used MSVC 2026 to build both Ruby and the extension (a dll). By default Ruby builds with /Md. This is the generated `Makefile.sub` in the win32 directory:
```
!if !defined(RUNTIMEFLAG)
RUNTIMEFLAG = -M...
cfis (Charlie Savage)
09:28 PM Revision 7482835d (git): Avoid spawning thread for trivial getnameinfo calls
When calling getnameinfo we spawn a thread because it may do a slow,
blocking reverse-DNS lookup. Spawning a thread is relatively fast (~20µs
on my Linux machine) but still an order of magnitude slower than when
getnameinfo is simply tra...
jhawthorn (John Hawthorn)
08:01 PM Feature #21695 (Open): Optimizing Ruby performance with Ruby itself instead of Rust
I am using ERB on top of C for a game I am making now. We can use the tool to improve the productivity, memory safety, and runtime speed for Ruby. It can also replace a Rust JIT compiler for better results. The only problem is that it... fredlinhares (Frederico Linhares)
07:01 PM Bug #21694 (Open): Crash when looking up super method from BasicObject
Initially reported on Reddit by easydwh https://old.reddit.com/r/ruby/comments/1ozhupr/is_a_ruby_segmentation_fault_a_bug_if_you_are/
Repro:
```ruby
class BasicObject
def basic_call_no_super
super
end
end
"test".bas...
byroot (Jean Boussier)
06:53 PM Bug #21692: Basic gems like `date` require a compiler
mame (Yusuke Endoh) wrote in #note-1:
> I think what you want is `bundle install --prefer-local`. (I wonder why this option is not the default.)
Unfortunately this does not seem to work for me.
```
$ gem list | grep date
date (default:...
getajobmike (Mike Perham)
06:11 PM Bug #21692: Basic gems like `date` require a compiler
I think what you want is `bundle install --prefer-local`. (I wonder why this option is not the default.) mame (Yusuke Endoh)
05:12 PM Bug #21692 (Open): Basic gems like `date` require a compiler
I'm trying to use Ruby in a high security environment which does not allow a compiler to be installed. This was easy years ago when all of standard library was included with Ruby itself and I could use `apt install ruby`. But as the stan... getajobmike (Mike Perham)
06:46 PM Revision c0256d1d (git): [DOC] Update GC.stat and GC.stat_heap documentation
I noticed some of the keys have been gone or renamed for a while. byroot (Jean Boussier)
06:29 PM Feature #21693 (Open): Allow calling any callable object as a method
Callable objects are popular in Ruby. A very common pattern of Service objects with a single public `call` method can be found in many Rails apps, too.
I propose to extend syntax so that adding `()` to any object that has a `call` met...
cheba (Alexander Mankuta)
06:01 PM Revision f9e31f43 (git): [ruby/time] Defer default year for zone_offset until needed
While parsing ISO 8601 timestamps like `2025-11-13T19:34:23.681726000Z`
I noticed that a lot of time was spent to compute a default `year`
argument to `zone_offset`. For ISO 8601, that year is never used, as
all valid time zone designato...
Sander Verdonschot
03:53 PM Revision 371a295e (git): Fix improper termlen fill in `str_duplicate_setup_embed`.
When term len != 1 (for example: Encoding::UTF32BE), term fill is wrong size. Luke Gruber
03:14 PM Revision 9de66a8c (git): [ruby/prism] Remove now obsolete todos
https://github.com/ruby/prism/commit/b00d098f9a Earlopain (Earlopain _)
03:11 PM Revision d66b37e3 (git): Remove alternation pattern matching handling from the prism compiler
Since https://github.com/ruby/ruby/pull/15212 these are proper syntax
errors, so no need to handle this explicitly anymore.
Also updated the example in the docs for this
Earlopain (Earlopain _)
01:30 PM Revision a0ef2366 (git): remove old code
naruse (Yui NARUSE)
01:27 PM Bug #21168: Prism doesn't require argument parentheses (in some cases) when a block is present but parse.y does
PR: https://github.com/ruby/ruby/pull/15217 yui-knk (Kaneko Yuichiro)
01:20 PM Bug #21691 (Open): On Windows some of binary read functions of IO are not functional
When using the binary read method of IO on a file containing “\r\n”, it should read “\r”, but some methods do not function correctly on Windows.
```ruby
File.binwrite("crlf.txt", "\r\n")
methods = {
readn: proc { |f| f.read(1) },...
YO4 (Yoshinao Muramatsu)
12:47 PM Bug #21687: IO#pos goes wrong after EOF character(ctrl-z) met.
I made PR [#15216](https://github.com/ruby/ruby/pull/15216) for main issue.
After some investigation, it appears the case with #note-1 is mainly related to the behavior of eof(), so it seems appropriate to address it in #21634.
YO4 (Yoshinao Muramatsu)
12:39 PM Revision 4fa6e993 (git): strnlen is not used now
naruse (Yui NARUSE)
12:34 PM Revision 3bbd45dd (git): Fix `RUBY_API_VERSION_NAME` fallback definition
nobu (Nobuyoshi Nakada)
11:15 AM Misc #21690 (Open): Inconsistent `rb_popcount64()` definition
The `rb_popcount64()` function is defined both in `internal/bits.h` and `parser_bits.h`, but the definition of these functions is different on the `#else` branch.
```c
// internal/bits.h
static inline unsigned int
rb_popcount64(uin...
daniel.domjan (Dániel Domján)
09:22 AM Bug #21375: Set[] does not call #initialize
I should also mention for the concurrent-ruby case that using `::Set` on Ruby 4+ is not an option because it's not thread-safe enough:
https://github.com/ruby-concurrency/concurrent-ruby/issues/1093#issuecomment-3540742547
Eregon (Benoit Daloze)
08:46 AM Bug #21375: Set[] does not call #initialize
This change also breaks concurrent-ruby: https://github.com/ruby-concurrency/concurrent-ruby/actions/runs/19414490796/job/55540724035
https://github.com/ruby-concurrency/concurrent-ruby/issues/1093
The code relying on it seems pretty re...
Eregon (Benoit Daloze)
09:03 AM Bug #21396: Set#initialize should call Set#add on items passed in
jeremyevans0 (Jeremy Evans) wrote in #note-11:
> knu (Akinori MUSHA) wrote in #note-10:
> ...
Yes, this sounds like a good way, it avoids breaking code and keeps performance optimal for Set.
The only downside is some extra complexity ...
Eregon (Benoit Daloze)
08:54 AM Misc #21689: DevMeeting-2025-12-11
* [Bug #21375] Set[] does not call #initialize (eregon)
* This broke concurrent-ruby and there is no good fix.
* I believe Set[] should call #initialize, it's simple and avoids a major breaking change. The performance impact seems in...
Eregon (Benoit Daloze)
02:05 AM Misc #21689 (Open): DevMeeting-2025-12-11
# The next dev meeting
**Date: 2025/12/11 13:00-17:00** (JST)
Log: *TBD*
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at the bug tracker.
- Dev meeting is a place we can ask Matz, nobu, nurse and o...
mame (Yusuke Endoh)
08:06 AM Revision c32eb727 (git): The prev_ver of 4.0.0 is 3.4.0
naruse (Yui NARUSE)
07:08 AM Revision 3d8dfbf5 (git): Skip TestCommitEmail if git is not available.
https://github.com/ruby/actions/actions/runs/19420968008/job/55558315338
```
1) Error:
TestCommitEmail#test_sendmail_encoding:
Test::Unit::ProxyError: No such file or directory - git
/home/runner/work/actions/actions/ruby-...
hsbt (Hiroshi SHIBATA)
02:30 AM Revision 8d010582 (git): Handle deeply nested capture variables syntax err
When there are nested capture variables inside of a pattern match
that has an alternation pattern, it is a syntax error. Currently it
only adds a syntax error when it is at the top level of the pattern.
kddnewton (Kevin Newton)
02:28 AM Bug #20907: Fiber scheduler does not correctly re-lock mutex if `Mutex#sleep` is interrupted.
Cross referencing: https://github.com/socketry/async/issues/424 ioquatix (Samuel Williams)
02:04 AM Misc #21647 (Closed): DevMeeting-2025-11-13
mame (Yusuke Endoh)

11/16/2025

11:49 PM Revision 4870fbd0 (git): vm_dump.c: unbreak unwind on powerpc (#14650)
Sergey Fedorov
11:23 PM Revision bdeee701 (git): Avoid allocating intermediate string in zone_str
jhawthorn (John Hawthorn)
09:27 PM Revision 3cd30814 (git): [DOC] Tweaks for String#unicode_normalize!
burdettelamar (Burdette Lamar)
09:26 PM Revision 17f3588a (git): [DOC] Tweaks for String#unicode_normalized?
burdettelamar (Burdette Lamar)
09:26 PM Revision 43e26d02 (git): [DOC] Tweaks for String#unpack
burdettelamar (Burdette Lamar)
09:24 PM Revision 00521434 (git): [DOC] Tweaks for String#unpack1
burdettelamar (Burdette Lamar)
02:52 PM Bug #21634: Combining read(1) with eof? causes dropout of results unexpectedly on Windows.
@nobu, I had not correctly understood the 'rt' case in #note-2.
In the case where 'universal_newline: true' attribute, Ctrl-Z is not interpreted as an EOF, so I believe the behavior you pointed out is correct.
```
> ruby -ve "open('eo...
YO4 (Yoshinao Muramatsu)
02:31 PM Misc #21688 (Open): Ruby::Box maturing path
A quick couple of questions in the light of upcoming Ruby 4.0 release and `Ruby::Box` being available there (even if as an experimental feature):
1. Should the documentation of the class be available as RDoc? I mean, as standard class...
zverok (Victor Shepelev)
02:07 PM Bug #21687: IO#pos goes wrong after EOF character(ctrl-z) met.
Here is additional issue.
When an intermediate EOF character met, reading operation reports EOF but sometimes IO#eof? does not.
```ruby
require 'tempfile'
Tempfile.open do |f|
str = "0123456789\x1A"
f.write(str + "x"*(1024_0 ...
YO4 (Yoshinao Muramatsu)
08:23 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
If `rb_win32_fclose` calls ucrt's `fflush`/`fclose`, it's questionable why it doesn't work. Is it truly calling the same ucrts?
The screenshot suggests the C++ code is built in Debug build. From the C++ code, the the ucrt debug DLL migh...
YO4 (Yoshinao Muramatsu)
05:40 AM Bug #21686: In combination with IO#ungetbyte, the write position may become unpredictable.
As proposed in this issue, resolving this problem required determining a solution strategy across multiple methods with considering compatibility.
While I'm only an external contributor and not a core team member, I'll boldly say that...
YO4 (Yoshinao Muramatsu)

11/15/2025

09:24 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
Thank you @mame an @nobu for looking into this.
@mame I don't know why the override doesn't work. The calling C++ code is from `Microsoft Visual Studio\18\Insiders\VC\Tools\MSVC\14.50.35717\include\__msvc_filebuf.hpp`:
``` cpp
_EXPO...
cfis (Charlie Savage)
07:59 PM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
cfis (Charlie Savage) wrote in #note-15:
> When I step through with a debugger, this line forces an early return from the function. So fclose is never called.
> ...
Thank you for debugging. The early return (not calling `fclose` when `...
mame (Yusuke Endoh)
05:58 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
I gave a try to @nobu's code above (https://bugs.ruby-lang.org/issues/21498#note-9).
That results in a linker error:
``` bash
linking shared-object -test-/gvl/call_without_gvl.so
Creating library call_without_gvl-x64-mswin64_140.l...
cfis (Charlie Savage)
05:21 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
I have attached the "good" file and the "bad" file. The good file is generated by rewriting the extension to not use fclose, and thus not have the call go through `rb_w32_fclose`. The bad file is generated by using flcose which does end ... cfis (Charlie Savage)
04:50 AM Bug #21498: Windows - Ruby Overrides C Library APIs thus breaking them
When I step through with a debugger, this line forces an early return from the function. So fclose is never called.
https://github.com/ruby/ruby/blob/master/win32/win32.c#L6627
``` cpp
if (fflush(fp)) return -1;
```
cfis (Charlie Savage)
09:02 PM Revision bacd3562 (git): Remove dead IBF_OBJECT_INTERNAL
peterzhu2118 (Peter Zhu)
06:39 PM Bug #21686: In combination with IO#ungetbyte, the write position may become unpredictable.
#20919 may be related. If the PR for this issue is accepted, it likely determines how that issue should be addressed. There's already a PR that is several months old associated with it. javanthropus (Jeremy Bopp)
04:30 PM Bug #21686: In combination with IO#ungetbyte, the write position may become unpredictable.
I made [PR #15204](https://github.com/ruby/ruby/pull/15204)
## Changed and Unchanged
The behavior of this PR is listed below.
Since IO#ungetc has a different file position behavior when combined with encoding conversion, IO#getbyt...
YO4 (Yoshinao Muramatsu)
03:58 PM Bug #21686 (Open): In combination with IO#ungetbyte, the write position may become unpredictable.
In the current implementation, using `IO#ungetbyte` can cause `IO#pos` to become negative.
Writing to the same file descriptor in this state will result in unexpected write positions.
```ruby
require 'tempfile'
Tempfile.open do |...
YO4 (Yoshinao Muramatsu)
04:59 PM Bug #21687 (Open): IO#pos goes wrong after EOF character(ctrl-z) met.
In Windows environment, when opening a file with the "r", encountering an EOF character (Ctrl-Z, "\x1A") during reading causes the IO to report END-OF-FILE.
```ruby
require 'tempfile'
Tempfile.open do |f|
str = "0123456789\x1A"...
YO4 (Yoshinao Muramatsu)
01:50 PM Revision 9e8a661f (git): [ruby/stringio] [DOC] Fix #seek link
(https://github.com/ruby/stringio/pull/174)
Method #seek deserves (and will get) documentation independent of that
in class IO.
Meanwhile, the link should go someplace sensible and useful.
https://github.com/ruby/stringio/commit/d0265...
burdettelamar (Burdette Lamar)
01:49 PM Revision abf30563 (git): [ruby/stringio] [DOC] Doc for StringIO.size
(https://github.com/ruby/stringio/pull/171)
https://github.com/ruby/stringio/commit/95a111017a
burdettelamar (Burdette Lamar)
01:48 PM Revision b5c92696 (git): [ruby/stringio] [DOC] Tweaks for StringIO#each_line
(https://github.com/ruby/stringio/pull/165)
Adds to "Position": pos inside a character.
Makes a couple of minor corrections.
---------
https://github.com/ruby/stringio/commit/ff332abafa
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
burdettelamar (Burdette Lamar)
03:23 AM Revision 577cf5e3 (git): [DOC] Remove an obsolete file
It has been merged into `doc/ruby/options.md` with
`field_processing.md` at ruby/ruby#10138.
nobu (Nobuyoshi Nakada)
02:04 AM Revision 70b49b65 (git): refactor io_each_codepoint
YO4 (Yoshinao Muramatsu)
01:18 AM Revision f1765cd4 (git): [Doc] Remove leftover references to namespace from box.md
And fix the indentation a little bit, since `box` is one character
longer than `ns`.
herwin (Herwin W)
12:34 AM Revision d7369f02 (git): ZJIT: Add individual tests for complex arg pass counters
Make it easier to see what happens when one is changed. rwstauner (Randy Stauner)
 

Also available in: Atom