Project

General

Profile

Activity

From 12/29/2025 to 01/04/2026

Today

03:53 AM Revision ca0fece5 (git): [DOC] Tweak an example in language/box.md
Although the example code comments indicate that it returns `false`,
a non-matching result for `=~` is actually `nil`.
```ruby
Foo.foo.blank? #=> false
"foo".blank? #=> false
```
https://github.com/ruby/ruby/blob/v4.0.0-preview3/doc/...
koic (Koichi ITO)
03:52 AM Revision d8d41d74 (git): [DOC] Use `Ruby::Box#require_relative` in box.md examples
Based on the example, it appears that `foo.rb` and `main.rb` are expected to be in the same directory.
Since Ruby 1.9, the current directory is not included in `$LOAD_PATH` by default.
As a result, running `box.require('foo')` as shown i...
koic (Koichi ITO)
01:26 AM Revision 5064af7e (git): [ruby/mmtk] Process obj_free candidates in parallel
Redos commit 544770d which seems to have accidentally been undone in b27d935. peterzhu2118 (Peter Zhu)

01/03/2026

07:58 PM Misc #21777: DevMeeting-2026-01-14
* [Feature #21264] Extract Date library from Ruby repo in the future (jeremyevans0)
* Do we want to extract `date` to bundled gems?
* I'm fine keeping it as stdlib, and if it needs a maintainer, I volunteer to maintain it.
* If ...
jeremyevans0 (Jeremy Evans)
09:22 AM Misc #21777: DevMeeting-2026-01-14
* [Feature #21800] `Dir.foreach` and `Dir.each_child` to optionally yield `File::Stat` object alongside the children name (byroot)
* It's common for development tools to need to recursively scan the file system, but it's slower than i...
byroot (Jean Boussier)
07:55 PM Feature #21264: Extract Date library from Ruby repo in the future
I've been thinking more about this. If we want to move `date` from stdlib to bundled gems, I still think it would be best to have a subset of the current `Date` as be a core class. `Date` is very widely used, but the vast majority of usa... jeremyevans0 (Jeremy Evans)
03:53 PM Bug #21818: Thread backtraces cannot be communicated over Ractor ports
I have another PR that allow Backtrace objects to be duped, hence to send them across Ractors: https://github.com/ruby/ruby/pull/15795 byroot (Jean Boussier)
11:25 AM Bug #21818: Thread backtraces cannot be communicated over Ractor ports
> I'm not sure if there is a way to allow an object to be copied without defining an allocator function.
So I experimented with this a bit. It wouldn't be hard at all to disable `Class#allocate` while still allowing `rb_obj_dup` etc t...
byroot (Jean Boussier)
10:28 AM Bug #21818: Thread backtraces cannot be communicated over Ractor ports
> https://github.com/ruby/ruby/pull/15790 fixes the make_shareable.
Actually, might be more tricky than that. `Backtrace` object have two lazily instantiated mutable arrays (`backtrace` and `backtrace_locations`). So if we mark them ...
byroot (Jean Boussier)
03:43 PM Revision a0c483fc (git): Also output GC thread backtrace in rb_mmtk_gc_thread_bug
peterzhu2118 (Peter Zhu)
03:43 PM Revision 5b87294d (git): Add rb_gc_print_backtrace
peterzhu2118 (Peter Zhu)
10:11 AM Feature #21822 (Open): Expose Return Value in the ensure Block

I'd like to propose a simple feature that allows easy access to the return value inside an ensure block.
```ruby
begin
# ...
ensure => ret
# ret is nil if an exception is raised
LOGGER.debug "return value: #{ret}"
en...
artemb (Artem Borodkin)
10:10 AM Feature #21821: Add Stack and SizedStack classes
> I think it will depend on what you achieve with Stack.
Yes, the point is to use it in cases where synchronization is needed, hence Array is not suitable. Typically connection pools: https://github.com/mperham/connection_pool/blob/8b...
byroot (Jean Boussier)
09:35 AM Feature #21821: Add Stack and SizedStack classes
byroot (Jean Boussier) wrote:
> Currently `Queue` and `SizedQueue` are technically defined under `Thread` and aliased in `Object`.
> ...
I think it will depend on what you achieve with `Stack`.
If you want to use it for inter thread...
nobu (Nobuyoshi Nakada)
09:12 AM Feature #21821 (Open): Add Stack and SizedStack classes
### Context
`Queue` and `SizedQueue` are very useful and performant constructs, however they only allow for FIFO queues.
Some use cases do call for LIFO queues AKA stacks.
For instance, in the case of connection pool, it's often p...
byroot (Jean Boussier)
09:12 AM Revision 65f9c4a0 (git): Drop memberless Data/Struct#inspect trailing space
Anonymous memberless Structs and Data were returning `#<struct >` and
`#<data >` with a trailing space. Now they return `#<struct>` and
`#<data>` to match attrless class behavior and look a bit more compact.
shan (Shannon Skipper)
09:06 AM Feature #21788: Promote Thread::Monitor to a core class
> the point is MonitorMixin seems well done and core-worthy.
Yeah, I don't think I agree with this. I never use it because including it expose a bunch of `mon_*` public methods that nobody ever use.
At the end of the day 99% of Monit...
byroot (Jean Boussier)
08:30 AM Revision b6463d59 (git): [ruby/json] Directly write to the output buffer when converting UTF32 to UTF8.
https://github.com/ruby/json/commit/a51317c949 Scott Myron
06:45 AM Bug #21819 (Closed): A Data object should be frozen even if it has no members
Applied in changeset commit:git|d7a6ff8224519005d2deeb3f4e98689a8a0835ad.
----------
[Bug #21819] Data objects without members should also be frozen
nobu (Nobuyoshi Nakada)
06:11 AM Bug #21819: A Data object should be frozen even if it has no members
[GH-15792](https://github.com/ruby/ruby/pull/15792) nobu (Nobuyoshi Nakada)
02:19 AM Bug #21819 (Closed): A Data object should be frozen even if it has no members
Data objects with at least one member are currently automatically frozen on construction, and shareable if all members are shareable. However, a Data object with no members is not frozen on construction. I would expect such an object sim... dazuma (Daniel Azuma)
06:03 AM Revision d7a6ff82 (git): [Bug #21819] Data objects without members should also be frozen
nobu (Nobuyoshi Nakada)
04:28 AM Revision a8a989b6 (git): Test net-imap with ruby/net-imap#593
Delete test/net/imap/test_data_lite.rb, because the target of this
test file has been deleted by [ruby/net-imap#543].
[ruby/net-imap#543]: https://github.com/ruby/net-imap/pull/593
nobu (Nobuyoshi Nakada)
03:20 AM Bug #21820 (Open): "vm_call_cfunc: cfp consistency error" occurs during rdoc generation when installing Ruby 4.0.0 via rbenv on Ubuntu 24.04
This is transferred from https://github.com/rbenv/ruby-build/discussions/2594#discussioncomment-15394211
# My environment
``` shell
[sue445@sue445-win] [12-31 23:34:49] $ lsb_release -a
No LSB modules are available.
Distributor ID...
sue445 (Go Sueyoshi)
12:02 AM Revision 2f4119ea (git): [ruby/mmtk] Use rb_mmtk_gc_thread_bug for rb_mmtk_call_object_closure
https://github.com/ruby/mmtk/commit/308936296a peterzhu2118 (Peter Zhu)
12:02 AM Revision 60d9b10d (git): [ruby/mmtk] Propagate crash of GC thread to mutator thread
This allows the mutator thread to dump its backtrace when a GC thread crashes.
https://github.com/ruby/mmtk/commit/40ff9ffee7
peterzhu2118 (Peter Zhu)

01/02/2026

11:07 PM Revision 16feb46f (git): Convert Queue and SizedQueue to rb builtin
A large part of `thread_sync.c` was migrated already, might as well
go all the way. It also allow to remove a bunch of Rdoc commands.
byroot (Jean Boussier)
09:58 PM Bug #21818: Thread backtraces cannot be communicated over Ractor ports
https://github.com/ruby/ruby/pull/15790 fixes the `make_shareable`. As for sending, I'm not sure if there is a way to allow an object to be copied without defining an allocator function. byroot (Jean Boussier)
09:49 PM Bug #21818: Thread backtraces cannot be communicated over Ractor ports
> Is this intentional?
I don't think so, more of an oversight. Looking at the implementation, I don't see a reason why it couldn't be marked as FROZEN_SHAREABLE.
byroot (Jean Boussier)
07:02 PM Bug #21818 (Open): Thread backtraces cannot be communicated over Ractor ports
It looks like Thread::Backtrace is confined to the Ractor that produced it: it cannot be copied or moved to another Ractor, nor can it be made shareable. This makes it difficult for a Ractor to communicate exceptions (e.g. the reason for... dazuma (Daniel Azuma)
08:42 PM Revision e7695ba3 (git): [ruby/mmtk] Check for T_NONE during marking
https://github.com/ruby/mmtk/commit/c3e338bb25 peterzhu2118 (Peter Zhu)
05:58 PM Revision 31fb970c (git): [ruby/mmtk] Assert target is not pinned during normal tracing
https://github.com/ruby/mmtk/commit/58210c88ed peterzhu2118 (Peter Zhu)
03:59 PM Revision c47a8052 (git): Add a test case for complex argument forward reference
Using `eval` it's possible to reference a later argument, and
this requires careful initialization of the stack.
byroot (Jean Boussier)
03:59 PM Revision 15968534 (git): Skip initializing optional arguments to `nil`
They are optional because they have a default value, so I don't
understand why we'd need to initialize them to nil.
byroot (Jean Boussier)
01:54 PM Revision b9819ad0 (git): Register a dupped identity hash as pinning
peterzhu2118 (Peter Zhu)
12:51 PM Revision 177949c8 (git): Speedup Queue initialization
Rather than to push items one by one we can directly memcpy. byroot (Jean Boussier)
08:43 AM Revision 11165495 (git): [ruby/rubygems] Bump the rb-sys group across 2 directories with 1 update
Bumps the rb-sys group with 1 update in the /test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib directory: [rb-sys](https://github.com/oxidize-rb/rb-sys).
Bumps the rb-sys group with 1 update in the /test/rubygems/t...
dependabot[bot]
06:55 AM Revision 0ec5678c (git): Update bundled gems list as of 2026-01-02
git[bot]
04:13 AM Revision dd34d627 (git): Extract git version only
The version message may contain other info such as the distribution.
e.g.:
```console
$ /usr/bin/git --version
git version 2.50.1 (Apple Git-155)
```
nobu (Nobuyoshi Nakada)
02:40 AM Revision 0e9d6989 (git): Prefer dedicated assertions
nobu (Nobuyoshi Nakada)
01:17 AM Bug #21817 (Assigned): Ruby::Box crashes with refinement + bind_call + Symbol#to_proc combination
nobu (Nobuyoshi Nakada)

01/01/2026

02:03 PM Revision acda63de (git): [ruby/mmtk] Format imports to be each on a new line
https://github.com/ruby/mmtk/commit/42adba630e peterzhu2118 (Peter Zhu)
12:30 PM Revision 26a5bcd6 (git): [ruby/prism] Fix spacing in the generated #each_child_node
https://github.com/ruby/prism/commit/91f60cb736 Eregon (Benoit Daloze)
09:20 AM Revision 8ce61f90 (git): Thread::Queue use a ring buffer
Thread::Queue spends a significant amount of time in array functions,
checking for invariants we know aren't a problem, and whether the backing
array need to reordered.
By using a ring buffer we can remove a lot of overhead (~23% faster...
byroot (Jean Boussier)
02:57 AM Revision 41292562 (git): Use STR_SET_SHARED in str_duplicate_setup_heap
str_duplicate_setup_heap is missing a call to rb_gc_register_pinning_obj
that STR_SET_SHARED correctly calls.
peterzhu2118 (Peter Zhu)
01:00 AM Revision ea05c23e (git): Extract `RBIMPL_TYPEDDATA_PRECONDITION`
nobu (Nobuyoshi Nakada)

12/31/2025

11:49 PM Bug #21817 (Assigned): Ruby::Box crashes with refinement + bind_call + Symbol#to_proc combination
## Description
When running with `RUBY_BOX=1`, a combination of refinement on Binding class, `bind_call`, and `Symbol#to_proc` causes a crash with the error: `[BUG] BUG: Local ep without cme/box, flags: 66660087`
## Reproduction ...
ahogappa (sho hirano)
05:47 PM Revision 7cf6cc83 (git): Register imemo_ment as a pinning object
It sometimes pins itself when it is in the overloaded_cme table. peterzhu2118 (Peter Zhu)
02:56 PM Revision b27d9353 (git): Use `is_obj_encoding` instead of `is_data_encoding`
The argument to `is_data_encoding` is assumed to be `T_DATA`. nobu (Nobuyoshi Nakada)
02:22 PM Revision dbfedeb3 (git): [ruby/mmtk] Split ProcessObjFreeCandidates to parallel and non-parallel
This makes it easier to visualize in profilers which one is non-parallel.
https://github.com/ruby/mmtk/commit/ba68b2ef3b
peterzhu2118 (Peter Zhu)
02:22 PM Revision 544770d5 (git): [ruby/mmtk] Process obj_free candidates in parallel
This commit allows objects that are safe to be freed in parallel to do so.
A decrease in object freeing time can be seen in profiles.
The benchmarks don't show much difference.
Before:
-------------- -------------------- ---------- ...
peterzhu2118 (Peter Zhu)
12:44 PM Revision 99249cc5 (git): [ruby/json] Fix non-portable code
A plain `char` may be `signed` or `unsigned` depending on the
implementation. Also, bitwise ORing of `signed` values ​​is not
guaranteed to be `signed`. To ensure portability, should logical-OR
each comparison, but casting to `signed c...
nobu (Nobuyoshi Nakada)
10:16 AM Feature #21721 (Rejected): Allow `Queue` and `SizedQueue` to be used as LIFO queues
byroot (Jean Boussier)
10:16 AM Feature #21721 (Closed): Allow `Queue` and `SizedQueue` to be used as LIFO queues
Alright. I'll close this for now, and consider opening a feature request for `Thread::Stack`. byroot (Jean Boussier)
10:07 AM Revision c97f5d59 (git): [ruby/json] Simplify unescape_unicode
https://github.com/ruby/json/commit/976ba36629
Co-Authored-By: Jean Boussier <jean.boussier@gmail.com>
Scott Myron
09:54 AM Revision 61d45c85 (git): [ruby/json] Keep track of the the number of additional backslashes to avoid an extra memchr searching the remaining characters when no more backslashes exist.
https://github.com/ruby/json/commit/d21d9362fa Scott Myron
08:54 AM Revision 094145fb (git): [DOC] Move typed-data related macros
The flags for `rb_data_type_t::flags` are public constants for
defining `rb_data_type_t`. The embedded data flag and mask are
internal implementation detail.
nobu (Nobuyoshi Nakada)
08:00 AM Feature #8948: Frozen regex
matz (Yukihiro Matsumoto) wrote in #note-35:
> I still do not see enough benefit in putting in incompatible changes. Even if we can rewrite all the gems, we will still have incompatibility issues in user applications.
It seems extrem...
Eregon (Benoit Daloze)
03:33 AM Feature #8948: Frozen regex
Eregon (Benoit Daloze) wrote in #note-34:
> @matz Is it OK to merge https://github.com/ruby/ruby/pull/14547 now for 4.1?
I still do not see enough benefit in putting in incompatible changes. Even if we can rewrite all the gems, we wi...
matz (Yukihiro Matsumoto)
05:13 AM Bug #21816: iseq code_location of proc changed
Probably it's because of commit:c970d2941d56a862bb9bb3b808cb588c2982f436.
That is the indent is not related, but the behavior change.
nobu (Nobuyoshi Nakada)
03:53 AM Bug #21816 (Open): iseq code_location of proc changed
TBH, I'm not really sure if that title matches the problem here, but I can produce this issue with the following test:
```ruby
# bug.rb
# note the indentation of the callable
callable = -> { puts "Hello, World!" }
iseq = Rub...
zzak (zzak _)
02:29 AM Revision d95bebe0 (git): Make `RTYPEDDATA_EMBEDDABLE_P` internal-use only
It should not be exposed because it is so implementation specific that
it is only used in gc.c even within the entire Ruby source tree.
nobu (Nobuyoshi Nakada)
02:27 AM Revision c352808f (git): Introduce typed-data embeddable predicate macros
The combination of `&` and `&&` is confusing. nobu (Nobuyoshi Nakada)

12/30/2025

09:44 PM Misc #21804: Getting setup-ruby Earlier
I left some thoughts in the PR, but will post here to keep discussion in one place.
> Thanks for taking the time to open this PR to move the discussion forward, even though you’re understandably skeptical of the approach. I share your...
p-linnane (Patrick Linnane)
09:32 PM Misc #21804: Getting setup-ruby Earlier
Earlopain (Earlopain _) wrote in #note-6:
> But I think the bigger issue here is that windows builds are not first-party. So even if the release process gets adapted, issues like what [@mdalessio (Mike Dalessio)](/users/443) wrote above...
Eregon (Benoit Daloze)
09:17 PM Misc #21804: Getting setup-ruby Earlier
Eregon (Benoit Daloze) wrote in #note-2:
> So I think this is something to add to the post-release checklist:
@hsbt Would you be willing to do those steps when releasing a new version? Is there a public release checklist somewhere?
Othe...
Eregon (Benoit Daloze)
08:52 PM Misc #21804: Getting setup-ruby Earlier
Earlopain (Earlopain _) wrote in #note-6:
> I don't really see the point of automerging PRs when someone still has to create the release manually. Merging the PRs is not much effort, someone just needs to do it.
I meant the release w...
Eregon (Benoit Daloze)
07:58 PM Misc #21804: Getting setup-ruby Earlier
I don't really see the point of automerging PRs when someone still has to create the release manually. Merging the PRs is not much effort, someone just needs to do it.
Having this happen as part of release management sounds reasonable...
Earlopain (Earlopain _)
03:51 PM Misc #21804: Getting setup-ruby Earlier
> Maybe it'd make sense and possibly safe enough to automatically merge PRs by ruby-builder-bot, after they pass CI of course ... if someone is interested, please make a PR to setup-ruby.
I've opened https://github.com/ruby/setup-ruby...
mdalessio (Mike Dalessio)
03:04 PM Misc #21804: Getting setup-ruby Earlier

> https://github.com/ruby/setup-ruby/pull/844 got merged the same day, what would you expect?
A counter-example, though, is that the PR for windows support (https://github.com/ruby/setup-ruby/pull/847) took 3 days to get merged.
I thi...
mdalessio (Mike Dalessio)
12:13 PM Misc #21804: Getting setup-ruby Earlier
Maybe it'd make sense and possibly safe enough to automatically merge PRs by `ruby-builder-bot`, after they pass CI of course.
I'm not sure how feasible that is (e.g. is there a GHA event triggered when CI has passed?), but if someone is...
Eregon (Benoit Daloze)
12:05 PM Misc #21804: Getting setup-ruby Earlier
https://github.com/ruby/setup-ruby/pull/844 got merged the same day, what would you expect?
Concretely I currently merge setup-ruby PRs and I have told @hsbt in the past he can merge (+ release) for new added versions.
More people co...
Eregon (Benoit Daloze)
08:38 PM Misc #21777: DevMeeting-2026-01-14
* [Feature #8948] Frozen regex (eregon)
* Can we merge it now for 4.1? Then there is plenty of time for the few gems that rely on mutable Regexp to adapt.
* We can also revert it if it turns out to be too disrupting.
Eregon (Benoit Daloze)
08:37 PM Feature #8948: Frozen regex
@matz Is it OK to merge https://github.com/ruby/ruby/pull/14547 now for 4.1?
Then there is plenty of time for the few gems that rely on mutable Regexp to adapt.
BTW I noticed someone else also did a PR for this, so there seems to be ...
Eregon (Benoit Daloze)
06:02 PM Revision 9d37155c (git): [ruby/mmtk] Use MMTK_HEAP_COUNT for SIZE_POOL_COUNT
https://github.com/ruby/mmtk/commit/290a2aec4e peterzhu2118 (Peter Zhu)
05:24 PM Revision d40e056c (git): Skip the hang-up test on Windows
nobu (Nobuyoshi Nakada)
05:24 PM Revision 3086d582 (git): Run also test-tool on mingw
nobu (Nobuyoshi Nakada)
03:59 PM Feature #21084 (Closed): Declare objects have weak references
peterzhu2118 (Peter Zhu)
02:49 PM Feature #21084: Declare objects have weak references
Thanks, good find! I have a fix here: https://github.com/ruby/ruby/pull/15772 peterzhu2118 (Peter Zhu)
05:44 AM Feature #21084 (Open): Declare objects have weak references
I don't think this works correctly with generational GC. This crashes reliably on HEAD (works fine on 4.0.0)
``` ruby
wmap = ObjectSpace::WeakMap.new
GC.disable # only manual GCs
GC.start
GC.start
retain = []
50.times do
...
jhawthorn (John Hawthorn)
03:59 PM Revision b7bf8c20 (git): Add RVALUE_OLD_AGE to GC::INTERNAL_CONSTANTS for MMTk
peterzhu2118 (Peter Zhu)
03:59 PM Revision f2833e35 (git): Fix generational GC for weak references
Fixes issue pointed out in https://bugs.ruby-lang.org/issues/21084#note-7.
The following script crashes:
wmap = ObjectSpace::WeakMap.new
GC.disable # only manual GCs
GC.start
GC.start
retain = []
50.times do
...
peterzhu2118 (Peter Zhu)
03:02 PM Bug #21784 (Closed): Proc#source_location start column seems strange for -> {}
Applied in changeset commit:git|c970d2941d56a862bb9bb3b808cb588c2982f436.
----------
[Bug #21784] Fix the Proc#source_location start_column for stabby lambdas
* Consistent with plain `blocks` and `for` blocks and methods
where the so...
Eregon (Benoit Daloze)
03:02 PM Bug #21783 (Closed): {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
Applied in changeset commit:git|cd66d15858a06406d1de854f3e9690d3557a9864.
----------
[Bug #21783] Fix documentation of {Method,UnboundMethod,Proc}#source_location
Eregon (Benoit Daloze)
03:02 PM Feature #6012 (Closed): Proc#source_location also return the column
Applied in changeset commit:git|d82fc3360d7cfa7e1e1a4dddb668b4c38808538a.
----------
Reapply "[Feature #6012] Extend `source_location` for end position
* This reverts commit 065c48cdf11a1c4cece84db44ed8624d294f8fd5.
* This functionalit...
Eregon (Benoit Daloze)
03:02 PM Revision c05e1060 (git): Exclude rbs tests which need updates for {Method,UnboundMethod,Proc}#source_location
* See https://github.com/ruby/ruby/pull/15580 Eregon (Benoit Daloze)
03:02 PM Revision a7fec4d6 (git): Update version guards in ruby/spec
Eregon (Benoit Daloze)
03:02 PM Revision c970d294 (git): [Bug #21784] Fix the Proc#source_location start_column for stabby lambdas
* Consistent with plain `blocks` and `for` blocks and methods
where the source_location covers their entire definition.
* Matches the documentation which mentions
"where the definition starts/ends".
* Partially reverts d357d50f0a7440...
Eregon (Benoit Daloze)
03:02 PM Revision cd66d158 (git): [Bug #21783] Fix documentation of {Method,UnboundMethod,Proc}#source_location
Eregon (Benoit Daloze)
03:02 PM Revision d82fc336 (git): Reapply "[Feature #6012] Extend `source_location` for end position
* This reverts commit 065c48cdf11a1c4cece84db44ed8624d294f8fd5.
* This functionality is very valuable and has already taken 14 years
to agree on the API.
* Let's just document it's byte columns (in the next commit).
* See https://bugs....
Eregon (Benoit Daloze)
02:55 PM Bug #21815 (Closed): Backport GH-15737
nobu (Nobuyoshi Nakada)
02:52 PM Bug #21815 (Closed): Backport GH-15737
[GH-15737] needs to be backported to the 4.0 branch.
[GH-15737]: https://github.com/ruby/ruby/pull/15737
nobu (Nobuyoshi Nakada)
02:45 PM Bug #21814 (Closed): 0.pow(2,-9999999999999999990) should be zero
Applied in changeset commit:git|19e539c9ee1701b34189fa0c1feb942adeb0e326.
----------
[Bug #21814] Fix negative bignum modulo
If modulo is zero, do not apply bias even if the divisor is zero.
`BIGNUM_POSITIVE_P` is true even on bignum ...
nobu (Nobuyoshi Nakada)
02:15 PM Bug #21814: 0.pow(2,-9999999999999999990) should be zero
[GH-15771](https://github.com/ruby/ruby/pull/15771) nobu (Nobuyoshi Nakada)
07:30 AM Bug #21814 (Closed): 0.pow(2,-9999999999999999990) should be zero
When I try `0.pow(2,-9999999999999999990)`, irb prints `-9999999999999999990`, but I think no matter what you divide zero by, the modulo should be zero.
Matz.
matz (Yukihiro Matsumoto)
02:00 PM Revision 19e539c9 (git): [Bug #21814] Fix negative bignum modulo
If modulo is zero, do not apply bias even if the divisor is zero.
`BIGNUM_POSITIVE_P` is true even on bignum zero.
nobu (Nobuyoshi Nakada)
01:31 PM Revision 966dbba8 (git): Box: skip checking the current box is the root box
Because checking the current box is not a cheap process. Satoshi Tagomori
09:33 AM Revision 27d6c966 (git): Add 4.0 to the spec_guards workflow
nobu (Nobuyoshi Nakada)
09:33 AM Revision 3f616d57 (git): Update ruby/setup-ruby action to v1.276.0
nobu (Nobuyoshi Nakada)
08:48 AM Feature #21796: unpack variant that returns the final offset
This might be useful for `A`, `a`, and `Z` as well.
Updated the PR [GH-15647] to use `^` with the tests.
[GH-15647]: https://github.com/ruby/ruby/pull/15647
nobu (Nobuyoshi Nakada)
08:06 AM Revision d5af8d78 (git): Box: allocate classes as boxable when it happens in the root box
Without this change, classes (including iclass) are allocated
as un-boxable classes after initializing user boxes (after starting
script evaluation). Under this situation, iclasses are created as
un-boxabled class when core modules are i...
Satoshi Tagomori
06:24 AM Feature #21797: Make Etc.nprocessors cgroup-aware on Linux
Thank you for the summary!
I'll open a separate ticket for auto-adjusting `RUBY_MAX_CPU`.
Come to think of it, `RUBY_MAX_CPU` may have different requirements from `Etc.nprocessors` (defaulting to max # of processors may be suboptimal...
osyoyu (Daisuke Aritomo)
12:22 AM Feature #21813 (Open): Add [:forward, :...] symbol tuple to indicate forwarding arguments when calling `Method#parameters`
When accessing `Method#parameters` for a method using forwarding parameters, an unexpected behavior arises:
```ruby
def foo(*, **, &)
binding.eval "print(#{(method(__method__).parameters.dig(0,1))})" # Works fine
end
foo(1,2,3...
pabloh (Pablo Herrero)

12/29/2025

04:42 PM Bug #21812 (Assigned): Kernel#sleep without arguments returns immediately when subprocess exits in another thread (regression in Ruby 4.0)
Thanks for the nice catch.
`git bisect` points to commit:8d8159e7d87e4fd1594ce2fad3d2653e47fb1026. The changes in that commit seem relevant to this issue.
@luke-gru Could you take a look?
mame (Yusuke Endoh)
04:12 PM Bug #21812 (Assigned): Kernel#sleep without arguments returns immediately when subprocess exits in another thread (regression in Ruby 4.0)
**Description**
In Ruby 4.0.0, Kernel#sleep without arguments returns 0 immediately when a subprocess (spawned via backticks in another thread) exits. This is a regression from Ruby 3.4.8 where sleep blocks indefinitely as expected.
...
jaimevelaz (Jaime Velaz)
02:14 PM Revision 65634d8d (git): [ruby/prism] Optimize ruby visitor
`compact_child_nodes` allocates an array. We can skip that step by simply yielding the nodes.
Benchmark for visiting the rails codebase:
```rb
require "prism"
require "benchmark/ips"
files = Dir.glob("../rails/**/*.rb")
results = file...
Earlopain (Earlopain _)
02:12 PM Revision 14fbcf0e (git): [ruby/prism] Report missing end errors at opening token
This commit adds an `expect1_opening` function that expects a token and
attaches the error to the opening token location rather than the current
position. This is useful for errors about missing closing tokens, where
we want to point to ...
thomasmarshall (Thomas Marshall)
02:12 PM Revision 8afd4fad (git): [ruby/prism] Add unterminated construct tests
https://github.com/ruby/prism/commit/166764f794 thomasmarshall (Thomas Marshall)
02:03 PM Revision 782d959f (git): Implement moving Immix in MMTk
This commit implements moving Immix in MMTk, which allows objects to move
in the GC.
The performance of this implementation is not yet amazing. It is very
similar to non-moving Immix in many of them and slightly slower in others.
The be...
peterzhu2118 (Peter Zhu)
02:03 PM Revision 7902ae34 (git): Add rb_gc_move_obj_during_marking
peterzhu2118 (Peter Zhu)
02:03 PM Revision 01cd9c9f (git): Add rb_gc_register_pinning_obj
peterzhu2118 (Peter Zhu)
02:03 PM Revision 56147001 (git): Move MEMO_NEW to imemo.c and rename to rb_imemo_memo_new
peterzhu2118 (Peter Zhu)
12:41 PM Bug #21801: compile failed at 4.0.0 preview 3 and snapshot issue
It may be worth noting that the filename x64-msvcrt-ruby400.dll indicates the use of a 64-bit msvcrt.dll runtime environment.
When trying to build master in a 32-bit msvcrt environment, I encountered a similar issue.
While I cannot d...
YO4 (Yoshinao Muramatsu)
07:01 AM Bug #21801: compile failed at 4.0.0 preview 3 and snapshot issue
nobu (Nobuyoshi Nakada) wrote in #note-2:
> darkspy (gerty ken) wrote:
> ...
now i tried cross compile from mingw64 in linux for windows target. the ruby 4 still can not run:
test.rb:
$stdout.sync = true
puts "test"
ruby test.rb
...
darkspy (gerty ken)
11:26 AM Revision da89f7f5 (git): Prefer `ALLOCV` over `ALLOCA` for unknown size
`ALLOCA` with too large size may result in stack overflow.
Incidentally, this suppresses the GCC false maybe-uninitialized
warning in `product_each`.
Also shrink `struct product_state` when `sizeof(int) < sizeof(VALUE)`.
nobu (Nobuyoshi Nakada)
09:41 AM Revision 26088dcd (git): [DOC] State that `rb_unexpected_type` is private
nobu (Nobuyoshi Nakada)
09:40 AM Revision 56a6a21f (git): Return `NULL` in a `void *` function
nobu (Nobuyoshi Nakada)
09:40 AM Revision 0f64da96 (git): Make `rb_check_typeddata` and `rbimpl_check_typeddata` identical
nobu (Nobuyoshi Nakada)
09:20 AM Revision 72627d85 (git): Declare `rb_data_typed_t` parameters and return values as nonull
nobu (Nobuyoshi Nakada)
08:22 AM Bug #21811 (Closed): Backport GH-15763
https://github.com/ruby/ruby/pull/15763 nobu (Nobuyoshi Nakada)
08:21 AM Revision 4e0bb58a (git): fix underflow
Luke Jahnke
05:54 AM Revision 38701a4d (git): Remove deprecated support for to_set taking arguments
jeremyevans (Jeremy Evans)
05:03 AM Feature #21797: Make Etc.nprocessors cgroup-aware on Linux
> What would be the value of nprocessor in this case?, e.g. if cpu_quotais 0.5, what does nprocessors return? cpu_quota.ceil?
I think it depends on the decision, but either floor or ceil should be fine (for reference, Go’s `GOMAXPROCS...
moznion (Taiki Kawakami)
01:33 AM Revision cb01b902 (git): rtypeddata.h: Add missing `RBIMPL_CAST`
In public headers, casts should be enclosed in `RBIMPL_CAST` for
compilation in C++.
nobu (Nobuyoshi Nakada)
 

Also available in: Atom