Project

General

Profile

Activity

From 11/28/2025 to 12/04/2025

Today

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 _)
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?
- Should i...
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 (Open): 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 (Open): 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 (Open): 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)

12/02/2025

10:35 PM Revision a211abbc (git): Cache array length in `rb_ary_join` (#15362)
When all elements are strings, we never have to recalculate the length
of the array because there are no conversion methods that are called, so
the length will never change. This speeds up the fast path by ~10%.
```ruby
a = ["1"*10, "2"...
Luke Gruber
10:24 PM Revision a63147ee (git): [ruby/strscan] [DOC] Avoid being interpreted as a link
(https://github.com/ruby/strscan/pull/180)
Since `[](n)` is being interpreted as a Markdown link, it cannot be
displayed as a method call.
I have corrected this by escaping the brackets so that they are
interpreted as strings rather tha...
ksss (Yuki Kurihara)
10:14 PM Revision e0746cc4 (git): [ruby/prism] Consolidate macro definitions
https://github.com/ruby/prism/commit/cc0ca08757 kddnewton (Kevin Newton)
10:14 PM Revision a1ea824b (git): [ruby/prism] Remove PM_OPTIONAL_LOCATION_NOT_PROVIDED_VALUE macro
https://github.com/ruby/prism/commit/1988615ce1 kddnewton (Kevin Newton)
10:14 PM Revision a55040ca (git): [ruby/prism] Further specialize PM_NODE_INIT
https://github.com/ruby/prism/commit/7ab6d9df47 kddnewton (Kevin Newton)
10:14 PM Revision 56ee55b1 (git): [ruby/prism] Introduce PM_NODE_FLAGS macro
https://github.com/ruby/prism/commit/a20afe1674 kddnewton (Kevin Newton)
10:14 PM Revision 68617fb6 (git): [ruby/prism] Specialize PM_NODE_INIT to reduce calls to location
https://github.com/ruby/prism/commit/3e0b5c9eb7 kddnewton (Kevin Newton)
10:14 PM Revision 8d2f73d7 (git): [ruby/prism] Introduce PM_NODE_UPCAST macro for readability
https://github.com/ruby/prism/commit/7eb169513a kddnewton (Kevin Newton)
10:03 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
Eregon (Benoit Daloze) wrote in #note-10:
> FWIW it sounds quite bad contention-wise to use a global queue/stack (EDIT: and a stack is worse than a queue re contention) for connections, at least for the case `#connections >= #threads`.
...
jeremyevans0 (Jeremy Evans)
09:25 PM 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?
For the micro benchmark it probably doesn't matter much semantically if LIFO or FIFO I guess since only 1 thread, but that way we can hav...
Eregon (Benoit Daloze)
04:49 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
I'm in favor of a LIFO-alternative to `Thread::Queue` and `Thread::SizedQueue` in core. However, it should not have queue in the name, as queue implies FIFO behavior. It should have stack in the name, as stack implies LIFO behavior. `Thr... jeremyevans0 (Jeremy Evans)
04:43 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
> I'm not sure how big of a bottleneck this is though, can you share the profile?
If you wish to investigate yourself:
- https://github.com/rails/rails/issues/55728
- https://github.com/rails/rails/pull/55736
byroot (Jean Boussier)
04:18 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
byroot (Jean Boussier) wrote:
> Define different classes for LIFO queues
> ...
Queue is actually defined under `Thread` so that's not that big of a concern.
If we add this I'd want a separate class for sure to not make many compromise...
Eregon (Benoit Daloze)
03:57 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
> isn't that complicated
It isn't trivial either, but more importantly, it's not very performant. It used not to be important because checkout and checkin would only happen once per request. But async users demanded that we'd go throu...
byroot (Jean Boussier)
03:47 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
Also I think one can't even do `BiasableQueue` (at least not that way) if that LIFO Queue was in core. Eregon (Benoit Daloze)
03:45 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
Thanks for the link, that's helpful to discuss this.
> So I'd be happy to get rid of all that code.
https://github.com/rails/rails/blob/f5b981e6390a2574e63cf0889c421cdd4e446df0/activerecord/lib/active_record/connection_adapters/abs...
Eregon (Benoit Daloze)
03:32 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
> How about making your own then with Array + Mutex + ConditionVariable?
As explained, that's what I currently have: https://github.com/rails/rails/blob/f5b981e6390a2574e63cf0889c421cdd4e446df0/activerecord/lib/active_record/connect...
byroot (Jean Boussier)
03:22 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
byroot (Jean Boussier) wrote:
> I tried to use `git blame` to see if there was a justification for this
I think it's because many people AFAIK call FIFO a "Queue" and LIFO a "Stack".
From the description I get you're not simply using A...
Eregon (Benoit Daloze)
07:11 PM Bug #21756: Ripper fails to parse pathological heredoc
Ah, yeah. It's not expecting disjointed strings in arrays where interpolation is not allowed. That doesn't hold with line continuations and heredocs. I'm working on a fix, should not be so difficult.
Edit: Sorry, I totally missed the di...
Earlopain (Earlopain _)
05:15 PM Bug #21756: Ripper fails to parse pathological heredoc
Looks like there is one more separate issue here. Prism and parse.y execution result differs.
~~~ruby
p <<-A, %w[a\
A
b c]
# Prism: ["a\n", "b", "c"]
# parse.y: ["a\nb", "c"]
~~~
Changing `%w` to `%W`, Prism and parse.y are the...
tompng (tomoya ishida)
11:11 AM Bug #21756 (Open): Ripper fails to parse pathological heredoc
```rb
# test.rb
pp <<-A, %w[j\
i
A
j]
```
```sh
$ RBENV_VERSION=ruby-dev ruby -rripper -ve "Ripper.lex(File.read('test.rb'), raise_errors: true)"
ruby 4.0.0dev (2025-11-28T10:49:46Z master dcb9e17f46) +PRISM [x86_64-linux]
/h...
Earlopain (Earlopain _)
06:36 PM Bug #21723: `binding.irb` raises a LoadError under `bundle exec`
Here is a patch: https://github.com/ruby/ruby/pull/15373 osyoyu (Daisuke Aritomo)
05:27 PM Revision 3aa674ad (git): [ruby/psych] Properly set the message of Exceptions on TruffleRuby
* From https://github.com/truffleruby/truffleruby/commit/1f81db82d2969ff7c5de0dacdecb38252664f42c
https://github.com/ruby/psych/commit/dbabe7aac6
Eregon (Benoit Daloze)
05:27 PM Revision d3907245 (git): [ruby/psych] Fix usage of rb_struct_initialize() to pass an Array of members values and not a Hash
* rb_struct_initialize() does not accept a Hash, and it's very brittle
to pass `[{...}]` and to rely on that C function using rb_keyword_given_p().
It basically worked accidentally, by having **members in the caller of the caller.
...
Eregon (Benoit Daloze)
05:11 PM Bug #21757: Splatted args array is mutated when passing unexpected kwargs
Thank you for the report. This is a bug in the allocationless anonymous splat optimization in Ruby 3.4, still present in the master branch. I'll work on a fix. jeremyevans0 (Jeremy Evans)
04:26 PM Bug #21757 (Open): Splatted args array is mutated when passing unexpected kwargs
The bug is very simple to provoke.
``` ruby
proc = ->(*) { } # we do NOT expect any keyword arguments.
args = [1, 2]
proc.(*args, bug: true)
pp args #=> [1, 2, {bug: true}]
```
The `args` array now has a third element ...
apotonick (Nick Sutterer)
05:08 PM Bug #21758 (Open): Prism fails to parse heredoc within %Q literal split by another heredoc
Prism fails to parse this code
~~~ruby
<<A; %Q
A
#{<<B}
B
~~~
Parse error:
~~~
a.rb:4: syntax error found (SyntaxError)
2 | A
3 | #{<<B}
> 4 | B
| ^ unexpected constant, expecting end-of-input
~~~
`B` at line 4...
tompng (tomoya ishida)
04:20 PM Revision 17bcd71e (git): [ruby/prism] Clean up test excludes
Mostly not having to list version-specific excludes when testing against ripper/parse.y
Also don't test new syntax additions against the parser gems. The version support
for them may (or may not) be expanded but we shouldn't bother whil...
Earlopain (Earlopain _)
04:20 PM Revision c06c2203 (git): [ruby/prism] Fix the ripper translator to parse as the current ruby
Otherwise, it uses the latest prism version
https://github.com/ruby/prism/commit/86406f63aa
Earlopain (Earlopain _)
03:59 PM Revision cc929bff (git): [ruby/json] Don't call to_json on the return value of as_json for Float::NAN
https://github.com/ruby/json/commit/28c57df8f7 etienne (Étienne Barrié)
02:49 PM Revision 9eafeaed (git): Box: Free rb_classext_t struct for a box when the box is GCed
Satoshi Tagomori
02:49 PM Revision 84bc1f03 (git): Box: Mark boxes when a class/module is originally defined in it.
When a class/module defined by extension libraries in a box, checking
types of instances of the class needs to access its data type (rb_data_type_t).
So if a class still exists (not GCed), the box must exist too (to be marked).
Satoshi Tagomori
02:49 PM Revision 75f8a116 (git): Box: Fix data type name
Satoshi Tagomori
02:49 PM Revision 03ed220c (git): Box: load_wrapping is not needed now
Top level constants are defined on the Object class's constant table,
and those constants can be referred as box::CONST_NAME from outside box.
So load_wrapping() is not needed now.
Satoshi Tagomori
01:39 PM Feature #21005: Update the source location method to include line start/stop and column start/stop details
Any chance this could be fixed and included in time for the Ruby 4.0.0 release? bkuhlmann (Brooke Kuhlmann)
12:06 PM Bug #21645: Can't `require "resolve"` on Windows under Bundler without warnings
I think this is fixed with https://github.com/ruby/resolv/pull/110 Earlopain (Earlopain _)
09:35 AM Revision e515fa7a (git): ZJIT: Improve documentation and make it easy to generate the types graph
Eregon (Benoit Daloze)
08:25 AM Revision 456ba321 (git): [ruby/rubygems] Make BUNDLE_LOCKFILE environment variable have precedence over lockfile method in Gemfile
It would be simpler to do `options[:lockfile] ||= ENV["BUNDLE_LOCKFILE"]`,
but that doesn't work as `options` is frozen.
Fixes https://github.com/ruby/rubygems/pull/9117
https://github.com/ruby/rubygems/commit/6e3603a0e9
jeremyevans (Jeremy Evans)
07:00 AM Revision 0e22108d (git): [ruby/optparse] Remove `const_set` and instead use explicit assignments
https://github.com/ruby/optparse/commit/6e2709a5fd sampersand2 (Sam Westerman)
03:39 AM Revision 7df97983 (git): [ruby/rubygems] Improve banner message for the default command.
Co-authored-by: Benoit Daloze <eregontp@gmail.com>
https://github.com/ruby/rubygems/commit/463488b439
Co-authored-by: Patrik Ragnarsson <patrik@starkast.net>
hsbt (Hiroshi SHIBATA)
02:49 AM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
Is there a way to resolve this? I just want to make Pathname (and Ruby) better :) gurgeous (Adam Doppelt)
12:55 AM Revision e2d17655 (git): CI: Distclean mswin
Use the given `make-command` instead of the hard-coded `make` command.
TODO: Use it for `make up` as well, in the future.
nobu (Nobuyoshi Nakada)
12:55 AM Revision b563be30 (git): Win32: Clean empty directories
nobu (Nobuyoshi Nakada)
12:55 AM Revision 0be626e7 (git): Win32: Clean timestamp directory for platform
nobu (Nobuyoshi Nakada)
12:55 AM Revision a9961701 (git): Win32: Remove bundled gems directories
nobu (Nobuyoshi Nakada)
12:55 AM Revision b17f6a2a (git): Win32: Clean miniprelude
nobu (Nobuyoshi Nakada)
12:55 AM Revision 0e222991 (git): Win32: Remove DLL files linked by `prepare-vcpkg`
nobu (Nobuyoshi Nakada)
12:55 AM Revision b2b67456 (git): Win32: Support removing wildcards in middle of path
nobu (Nobuyoshi Nakada)
12:55 AM Revision c4fb79ca (git): Win32: Clean generated sources
nobu (Nobuyoshi Nakada)
12:55 AM Revision ec80e92a (git): Win32: Refine outputs
- Suppress logos from sub makes.
- Set the prompt for `for` command when `echo` is on.
nobu (Nobuyoshi Nakada)
12:55 AM Revision fa513886 (git): Win32: Append `-p` option to `RMDIRS`
`rmdirs.bat` may require this option explicitly to remove parent
directories, in the future.
nobu (Nobuyoshi Nakada)
12:55 AM Revision a6c5d290 (git): Win32: Clean prism
- intermediate source files
- timestamp files
- build directories
nobu (Nobuyoshi Nakada)
12:55 AM Revision 00d05dfc (git): Win32: Remove extra suffix for sub-make
nobu (Nobuyoshi Nakada)
12:55 AM Revision b0b8eb6a (git): Win32: Fix removing symlink
Try `rd` first for symlink to a directory; `del` attemps to remove all
files under the target directory, instead of the symlink itself.
nobu (Nobuyoshi Nakada)
12:55 AM Revision bb76e65f (git): Win32: Add `DLEXT` for clean-spec
nobu (Nobuyoshi Nakada)
12:55 AM Revision 9cdee9db (git): Win32: Fix rm.bat removing non existent file
nobu (Nobuyoshi Nakada)
12:55 AM Revision 01fd3488 (git): Win32: Fix @ in middle of commands
`@` is not a command, and cannot be placed after `||`. nobu (Nobuyoshi Nakada)
12:42 AM Revision 07ea9a38 (git): ZJIT: Optimize GetIvar for non-T_OBJECT
* All Invariant::SingleRactorMode PatchPoint are replaced by
assume_single_ractor_mode() to fix https://github.com/Shopify/ruby/issues/875
for SingleRactorMode patchpoints.
Eregon (Benoit Daloze)

12/01/2025

11:56 PM Revision 2dfb8149 (git): Clean generated transcoders
nobu (Nobuyoshi Nakada)
11:19 PM Revision d0bb505a (git): ZJIT: Split Lea memory reads on x86_64
Max Bernstein
11:19 PM Revision b9f1976f (git): ZJIT: Add HIR test for VM_OPT_NEWARRAY_SEND_PACK_BUFFER
Max Bernstein
11:19 PM Revision 985a4d97 (git): ZJIT: Open-code String#getbyte
Don't call a C function. Max Bernstein
11:19 PM Revision 74e9f717 (git): ZJIT: Mark String#ascii_only? as leaf
Max Bernstein
11:19 PM Revision 6db83a00 (git): ZJIT: Specialize Integer#>>
Same as Integer#>>. Also add more strict type checks for both Integer#>>
and Integer#<<.
Max Bernstein
11:19 PM Revision a2519639 (git): Add BOP_GTGT
This will help JITs (and maybe later the interpreter) optimize
Integer#>>.
Max Bernstein
11:19 PM Revision 8aed3110 (git): ZJIT: Specialize String#<< with Fixnum
Append a codepoint. Max Bernstein
11:19 PM Revision 91432a6b (git): ZJIT: Add late pass to fold AnyToString
This otherwise would miss annotations of C methods. Max Bernstein
11:19 PM Revision fd7d17ab (git): ZJIT: Don't use GuardTypeNot
Use actual receiver type. This gives us better method lookup. Max Bernstein
11:19 PM Revision 8ce78821 (git): ZJIT: Mark Integer#to_s as returning StringExact
Max Bernstein
11:02 PM Revision 4161c78a (git): Add remembered flag to heap dump
This should be less common than than many of the other flags, so should
not inflate the heap too much. This is desirable because reducing the
number of remembered objects will improve minor GC speeds.
jhawthorn (John Hawthorn)
10:02 PM Revision e68fcf11 (git): [ruby/strscan] [DOC] Fix broken link to helper methods
(https://github.com/ruby/strscan/pull/179)
### Helper methods link is broken at master branch
To reproduce
1. go to [StringScanner
docs](https://docs.ruby-lang.org/en/master/StringScanner.html)
2. Click to link at line
> See example...
Berkan Ünal
09:51 PM Revision a8b49ab4 (git): Test CC invalidation for singleton classes of objects (#15360)
I made a recent change where all the tests passed but it turns out it
was still wrong. We didn't have any tests for CC invalidation on
singletons of objects that aren't classes or modules.
Luke Gruber
06:02 PM Revision f9200134 (git): ZJIT: Fix erroneous version number for Iongraph (#15357)
As per
https://github.com/mozilla-spidermonkey/iongraph/blob/8d5e531305320216f86a24bfc9bc136a3627e832/src/iongraph.ts#L147,
correct version number for the web-based tool is 1, rather than 2.
aidenfoxivey (Aiden Fox Ivey)
06:01 PM Revision 5f92d6da (git): ZJIT: Standardize method dispatch insns' `recv` field (#15334)
ZJIT: Standardize C call related insn fields
- Add `recv` field to `CCall` and `CCallWithFrame` so now all method dispatch
related instructions have `recv` field, separate from `args` field.
This ensures consistent pointer arithmeti...
st0012 (Stan Lo)
05:55 PM Revision e02eda19 (git): Speedup RBASIC_FIELDS_COUNT (#15273)
We know the argument is not a class, module or special const, so we can
skip these checks.
Luke Gruber
05:45 PM Revision 28b2e2ed (git): YJIT: Abort expandarray optimization if method_missing is defined
Fixes: [Bug #21707]
[AW: rewrote comments]
Co-authored-by: Alan Wu <alanwu@ruby-lang.org>
rwstauner (Randy Stauner)
05:44 PM Revision 3b09e559 (git): vm_cc_new: don't assume `cme` is present. (#15322)
[Bug #21694]
`vm_search_super_method` explictly calls `vm_cc_new` with `cme=NULL`
when there is no super class.
byroot (Jean Boussier)
05:14 PM Revision c58970b5 (git): ZJIT: Optimize variadic cfunc `Send` calls into `CCallVariadic` (#14898)
ZJIT: Optimize variadic cfunc Send calls into CCallVariadic st0012 (Stan Lo)
03:28 PM Feature #20437: Could the licensing conditions be made less ambiguous?
matz (Yukihiro Matsumoto) wrote in #note-8:
> I think“Ruby's License” is something described in COPYING, i.e., it is inseparable from BSD-2clause. Historically it was combination with GPL, so some description should be updated.
> ...
T...
vo.x (Vit Ondruch)
03:28 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
byroot (Jean Boussier) wrote:
> * * Similarly, I find this less flexible than to decide the order during enqueue/dequeue
It sounds like too much flexibility to me.
nobu (Nobuyoshi Nakada)
09:29 AM Feature #21721 (Open): Allow `Queue` and `SizedQueue` to be used as LIFO queues
### Context
Since `Queue` and `SizedQueue` gained a proper timeout mechanism, I've been wanting to use them to implement simpler and more efficient connection pools. However for connection pools you ideally want a LIFO queue because i...
byroot (Jean Boussier)
03:16 PM Bug #21723 (Open): `binding.irb` raises a LoadError under `bundle exec`
In Ruby 4.0, `binding.irb` raises a LoadError when some unknown condition is met.
```ruby
# main.rb
binding.irb
```
```
main.rb:1: warning: irb used to be loaded from the standard library, but is not part of the default gems si...
osyoyu (Daisuke Aritomo)
02:46 PM Revision 8dc5822b (git): [ruby/prism] PM_NODE_INIT
Hide the initialization of the base node inside the node
initializer lists by a macro. As such, consistently enforce flags
are set properly.
https://github.com/ruby/prism/commit/c7b3d66d84
kddnewton (Kevin Newton)
02:25 PM Feature #21722: Expose rb_gc_mark_weak API for use in extensions
Thanks for the hint, Peter! I had not spotted https://bugs.ruby-lang.org/issues/21084 :)
Based on your notes it looks like exposing a `rb_gc_declare_weak_references` is a much better choice 👍
ivoanjo (Ivo Anjo)
02:12 PM Feature #21722: Expose rb_gc_mark_weak API for use in extensions
Hi, author of `rb_gc_mark_weak` here.
I think it would be good to have such an API available. However, I don't think the current API is it. This is because the API is very tricky to use with incremental marking. Since incremental mark...
peterzhu2118 (Peter Zhu)
10:31 AM Feature #21722 (Open): Expose rb_gc_mark_weak API for use in extensions
In https://bugs.ruby-lang.org/issues/21710 it came up that
1. On top of [deprecating _id2ref](https://bugs.ruby-lang.org/issues/15408) on Ruby 4.0, [it's a bad idea to be using object_id from the NEWOBJ tracepoint](https://bugs.ruby-l...
ivoanjo (Ivo Anjo)
01:55 PM Bug #21716: YJIT panic: "all PendingBranchRefs should be unique" in net/http response reading (infinite unwind loop)
alanwu (Alan Wu) wrote in #note-2:
> The rust unwinder seems to be working fine, and the infinite loop seems to be from ruby's own DWARF parser and unwinder in addr2line.c. Can you confirm that before the repeated stack trace lines there...
nonster (Nony Dutton)
10:31 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
Created https://bugs.ruby-lang.org/issues/21722 to ask if `rb_gc_mark_weak` could be made a public symbol ivoanjo (Ivo Anjo)
10:14 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
> And since rb_gc_mark_weak isn't public API, there's no decent way to have weakrefs in a C extensions (except if you assume/enforce no compaction, then you can use just the address).
Ahhhhh I totally had missed that one. Ever since I...
ivoanjo (Ivo Anjo)
04:49 AM Revision bc9ea585 (git): Add `rb_ec_close` function to manage execution context cleanup. (#15253)
Samuel Williams
04:19 AM Revision 8eea9a50 (git): Nullify scheduler during `terminate_atfork_i`. (#15354)
Samuel Williams
02:35 AM Revision 4c56001d (git): [ruby/prism] Fix up newlines in newline-delimited-literals
When you have a %-literal that is delimited by newlines, and you
are also interpolating a heredoc into that literal, then both
concepts will attempt to add the same newline to the newline list.
https://github.com/ruby/prism/commit/c831a...
kddnewton (Kevin Newton)
01:44 AM Revision bcdad7f2 (git): [ruby/prism] Properly remove references
https://github.com/ruby/prism/commit/17b246fd6a kddnewton (Kevin Newton)

11/30/2025

10:15 PM Revision f92ff9a8 (git): Remove an excess semicolon in a macro
nobu (Nobuyoshi Nakada)
12:39 PM Revision a0cd81e0 (git): Remove stale check
Any objects with `call` method can be accepted as trap handlers, and
the check for `Proc` type is useless since ruby/ruby@29f5911cf545.
nobu (Nobuyoshi Nakada)
12:03 PM Revision 9aa9cf8e (git): Fix switch fall-through in copy_ext_file_error
fd0 (Daisuke Fujimura)
05:31 AM Revision d7cfd275 (git): Set DESTDIR if relative loading
When relative loading, `prefix` makes no sense actually. Use the
given (or default) path as `DESTDIR` instead.
This change affects only when the relative loading is enabled and the
destdir is not given, and does not change the final in...
nobu (Nobuyoshi Nakada)
05:14 AM Revision 806e554c (git): Compare with the upper bound of the loop variable
Fix sign-compare warning nobu (Nobuyoshi Nakada)
04:49 AM Feature #21720 (Open): Add a native Binary Heap / Priority Queue to Ruby's Standard Library (heapify, heappush, heappop)

**Title:** Add a native Binary Heap / Priority Queue to Ruby's Standard Library (`heapify`, `heappush`, `heappop`)
**Problem**
Ruby currently lacks a native binary heap / priority queue data structure in the standard library.
Us...
rahulk501 (Rahul Kumar)
04:24 AM Revision 3bd9583a (git): [ruby/prism] Update unicode tables to match that of CRuby
The unicode version has been updated upstream, which means new
codepoints mapped to alpha/alnum/isupper flags. We need to update
our tables to match.
I'm purposefully not adding a version check here, since that is
such a large amount of...
kddnewton (Kevin Newton)
03:52 AM Bug #21717: Cleanup fiber scheduler after fork
Ruby already has an API for this: `Process._fork`
If your Fiber scheduler needs to be reset after a fork, I would recommend hooking into this.
Dan0042 (Daniel DeLorme)
02:14 AM Bug #21705: `UNIXServer.open(nil)` segfaults on Windows
ruby_3_3 commit:1974ccabbfdc73e78e758a6ad7ea8542e2119432 merged revision(s) commit:beb85e7eeee4163cd45b69645a60cdb942f72c05. nagachika (Tomoyuki Chikanaga)
02:08 AM Revision c4b5fa41 (git): [ruby/prism] Ensure implicit parameter nodes are destroyed.
When we are about to destroy a node because of a syntax error, we
need to check if it is potentially containing an implicit
parameter in its subtree.
https://github.com/ruby/prism/commit/1531433e02
kddnewton (Kevin Newton)
02:08 AM Revision b1314f15 (git): [ruby/prism] Fully destroy call operator write arguments
If we are about to delete a call operator write argument, it needs
to be removed from the list of block exits as well.
https://github.com/ruby/prism/commit/ebc91c2e39
kddnewton (Kevin Newton)
01:36 AM Revision 1974ccab (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.
nagachika (Tomoyuki Chikanaga)
12:46 AM Bug #21680: Integer#digits bug starting from Ruby 3.1
ruby_3_3 commit:bc21e4d40daeb962699340162547e0fb2b50107f merged revision(s) commit:f4f728b319086eea3db6e9909fb9c849c276f813. nagachika (Tomoyuki Chikanaga)
12:45 AM Revision bc21e4d4 (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.
nagachika (Tomoyuki Chikanaga)

11/29/2025

09:00 PM Revision e3bc1852 (git): [ruby/prism] Revert "Fix invalid Ruby code example in ClassNode comment"
https://github.com/ruby/prism/commit/b960079559 kddnewton (Kevin Newton)
08:48 PM Bug #21711: Prism and parse.y parses private endless method definition with block differently
This seems like just a bug in Prism. kddnewton (Kevin Newton)
08:47 PM Bug #21712: Prism and parse.y inconsistency in command call with block and `.()`
Actually I didn't finish reading the ticket before I assigned to Prism. Should we put this to the next dev meeting if Prism's behavior is preferred? kddnewton (Kevin Newton)
07:48 PM Revision 748dc9ac (git): [ruby/prism] Fix out-of-bounds read in parser_lex_magic_comment
https://github.com/ruby/prism/commit/e24e701f3a
Co-authored-by: Steven Johnstone <steven.james.johnstone@gmail.com>
kddnewton (Kevin Newton)
07:48 PM Revision 7c2eb946 (git): [ruby/prism] Fix label interpolated string
https://github.com/ruby/prism/commit/e3e2b1ed04 kddnewton (Kevin Newton)
07:48 PM Revision f0f2a45f (git): [ruby/prism] Fix out-of-bounds read after utf-8 BOM
https://github.com/ruby/prism/commit/198080c106
Co-authored-by: Steven Johnstone <steven.james.johnstone@gmail.com>
kddnewton (Kevin Newton)
07:47 PM Revision f2a6cb2d (git): [ruby/prism] Handle invalid string pattern key
When a pattern match is using a string as a hash pattern key and is
using it incorrectly, we were previously assuming it was a symbol.
In the case of an error, that's not the case. So we need to add a
missing node in this case.
https://...
kddnewton (Kevin Newton)
07:01 PM Revision 48a73303 (git): [ruby/prism] Optimize `Prism::Source#find_line`
This is more concise and ruby does a better job performance-wise.
This used to be `bsearch_index` already but https://github.com/ruby/prism/commit/6d8358c08395438d5924777c1fc3001a5ebf0aa3 changed it.
https://github.com/ruby/prism/pull/1...
Earlopain (Earlopain _)
06:53 PM Revision 8a0ae3a7 (git): [ruby/tempfile] [DOC] Monofont some text in Tempfile.create
https://github.com/ruby/tempfile/commit/7fa7436baa peterzhu2118 (Peter Zhu)
06:53 PM Revision d9093eab (git): [ruby/tempfile] [DOC] Fix monofont for Tempfile.create
https://github.com/ruby/tempfile/commit/96361e9e42 peterzhu2118 (Peter Zhu)
05:05 PM Revision bae06ce2 (git): [ruby/openssl] Remove dummy declarations for mOSSL and eOSSLError
These declarations were added to every source file because older
versions of RDoc did not resolve ancestor tree across files. Since
RDoc 6.9.0 supports this, this workaround is no longer needed.
https://redirect.github.com/ruby/rdoc...
rhenium (Kazuki Yamaguchi)
04:41 PM Revision c8bfbd57 (git): [ruby/openssl] ts: fix docs for attrs on OpenSSL::Timestamp::Factory
Move attribute documentation out of the class-level section and into
the appropriate sections so that they attach correctly.
https://github.com/ruby/openssl/commit/61410acc50
rhenium (Kazuki Yamaguchi)
03:32 PM Bug #21719 (Open): Thread deadlock with explicit require of a base clase in Linux Ruby 3.4
I originally [reported the issue](https://github.com/fxn/zeitwerk/issues/321) in Zeitwerk, but we then figured out that it seems to be related to Ruby.
Basically, I'm having a threads deadlock when using requires with autoloadable cla...
jcuello@fu.do (Juan Manuel Cuello)
03:15 PM Revision e13ad222 (git): Re-enable clang-18
The issue might have been fixed in 8bf333a. peterzhu2118 (Peter Zhu)
04:30 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
> IMO the long term expectation should be that NEWOBJ callbacks do not allocate (new newobj, no xmalloc) or modify the Ruby objects they are given in any way
While I generally agree with this, I suspect it's unworkable for use cases a...
byroot (Jean Boussier)
04:02 AM Bug #21652: Marshal#dump documentation out-of-date/unclear regarding Data class
ruby_3_3 commit:278b731ab92608e75d882036a71eb5825631ef69 merged revision(s) commit:d17ce4bd05dc05d48f5f4bc75171fcebda1678ed. nagachika (Tomoyuki Chikanaga)
04:01 AM Bug #21673: Segmentation Fault in IRB when refining `Kernel#puts` using `Module#refine` (Regression since Ruby 3.4)
ruby_3_3 commit:62135b9da4872b370d6fb579fc4a415e8f641c7d merged revision(s) commit:a4dff09be79b52288a47658964d25e5aa84fc960. nagachika (Tomoyuki Chikanaga)
04:01 AM Bug #21655: segfault when building 3.3.10 with GCC 15.2.1, regression from 3.3.9
ruby_3_3 commit:61a9c450f45b318d43de987e80b9b1dcd5b4d007 merged revision(s) commit:9d44cb0b2b5520b2b299851003ca2a97bf1e2079, commit:367ddd445cdf5ccc55a0481c944746ef595f72f7, commit:48dce7874fcb571765635b32fa6a3e3a12e228f8. nagachika (Tomoyuki Chikanaga)
04:01 AM Bug #21666: Math.lgamma(-1).should == [infinity_value, 1] fails with Fedora glibc-2.42.9000-8.fc44
ruby_3_3 commit:c4b88915540eb4603cbd8a3f72733ece85ad1799 merged revision(s) commit:c5bd4acd30320a8e180ce9fcb24acdab4e10c73a. nagachika (Tomoyuki Chikanaga)
03:31 AM Revision c4b88915 (git): merge revision(s) c5bd4acd30320a8e180ce9fcb24acdab4e10c73a: [Backport #21666]
[PATCH] [Bug #21666] Get rid of use of unspecified values nagachika (Tomoyuki Chikanaga)
03:30 AM Revision 61a9c450 (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...
nagachika (Tomoyuki Chikanaga)
03:28 AM Revision 62135b9d (git): merge revision(s) a4dff09be79b52288a47658964d25e5aa84fc960: [Backport #21673]
[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`.
nagachika (Tomoyuki Chikanaga)
03:14 AM Revision 278b731a (git): merge revision(s) d17ce4bd05dc05d48f5f4bc75171fcebda1678ed: [Backport #21652]
[PATCH] [Bug #21652] [DOC] Update unmarshalable object list
The `Data` mentioned here was the old `T_DATA` class, not the current
extended `Struct`.
nagachika (Tomoyuki Chikanaga)
03:12 AM Bug #21529: Deprecate the /o modifier and warn against using it
I can't find any commits for the documentation. I'd like to reset Backport field to reduce a noise. nagachika (Tomoyuki Chikanaga)
02:06 AM Revision 82b91ec7 (git): [ruby/rubygems] Also use String#include? for RUBY_PLATFORM
https://github.com/ruby/rubygems/commit/5fd95f38d3 hsbt (Hiroshi SHIBATA)
01:43 AM Revision 0f80d0ee (git): [DOC] Fix backticks in InstructionSequence docs
peterzhu2118 (Peter Zhu)
01:27 AM Revision 005fba07 (git): [DOC] Tweaks for Module#<=>
burdettelamar (Burdette Lamar)
01:24 AM Revision 688350da (git): [DOC] Avoid term 'derived'; use 'subclass'
burdettelamar (Burdette Lamar)
01:02 AM Revision 34290048 (git): Fixup with mswin and nmake build for -j flag
hsbt (Hiroshi SHIBATA)

11/28/2025

11:50 PM Revision a9d2a46d (git): [ruby/rubygems] Add informational message when default_cli_command is unset.
https://github.com/ruby/rubygems/commit/9e44b5ebc4 hsbt (Hiroshi SHIBATA)
11:50 PM Revision 69293f52 (git): [ruby/rubygems] Print help summary when the default command fail
As mentioned in https://github.com/ruby/rubygems/issues/9124,
the intent for changing the default command was to be more welcoming.
I think we can acheive that by attempting to install, but to print
that same help message if there is no...
byroot (Jean Boussier)
11:49 PM Revision 7dae2a1f (git): [ruby/rubygems] Restore `install` as default command
Fix: https://github.com/ruby/rubygems/issues/9124
This behavior is a deeply entrenched convention and changing it
will annoy lots of developers with unclear gains.
https://github.com/ruby/rubygems/commit/628e0ede46
byroot (Jean Boussier)
11:43 PM Revision f18bedaf (git): [ruby/rubygems] Use String#include? with suggested by Performance/StringInclude cop
https://github.com/ruby/rubygems/commit/fdd3419144 hsbt (Hiroshi SHIBATA)
10:50 PM Revision bb2e4d58 (git): [ruby/rubygems] Fixed checksums generation issue when no source is specified
https://github.com/ruby/rubygems/commit/bb4d791cb4 hsbt (Hiroshi SHIBATA)
10:06 PM Revision 7bd80e7e (git): nmake didn't support -j flag
hsbt (Hiroshi SHIBATA)
09:01 PM Revision 413d15a3 (git): [ruby/rubygems] Add `MAKEFLAGS=-j` by default before compiling:
- Depending on the native extension, it can greatly reduce compilation
time when executing recipes simultaneously.
For example on Prism:
```
# Before
time gem install prism
Building native extensions. This could take a whi...
Edouard CHIN
07:41 PM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
I don't think we should support this (at least not long term, I'm fine if it is patched for Ruby 4.0.0). `object_id` has always potentially allocated (either to enlarge the backing hashes, or to make a BIGNUM on 32-bit). It's only in the... jhawthorn (John Hawthorn)
06:13 PM Bug #21709: Regexp interpolation is inconsistent with String interpolation
Ok.
Here is the code that shows the inconsistency Regexp/String for interpolation, from your examples:
```ruby
# inconsistent Regexp/String interpolation behavior
prefix = '\p{In_Arabic}'
suffix = '\p{In_Arabic}'.encode('US-ASCII'...
thyresias (Thierry Lambert)
05:24 PM Bug #21709: Regexp interpolation is inconsistent with String interpolation
thyresias (Thierry Lambert) wrote in #note-8:
> jeremyevans0 (Jeremy Evans) wrote in #note-7:
> ...
Updating just the title is fine. I don't think you need to open a new bug report.
> As an aside, you said about the encoding of the ...
jeremyevans0 (Jeremy Evans)
10:32 AM Bug #21709: Regexp interpolation is inconsistent with String interpolation
jeremyevans0 (Jeremy Evans) wrote in #note-7:
> Sure, that sounds like a good idea.
It seems I cannot change the description, just the title.
Should I open a new bug report?
As an aside, you said about the encoding of the result ...
thyresias (Thierry Lambert)
05:50 PM Revision 8c70def4 (git): Use ALWAYS_INLINE for vm_getinstancevariable
Recently rb_vm_getinstancevariable was introduced exposing this method
to ZJIT. On clang specifically this ended up causing the compiler not to
inline into vm_exec_core and cause a significant performance regression
in optcarrot for the ...
jhawthorn (John Hawthorn)
05:35 PM Bug #21718 (Closed): TypeError:wrong argument type ... (expected Array)
Applied in changeset commit:git|191bfcb9c505ba3f5771f7ac67d6131aeb6b6837.
----------
Define Kernel#instance_variables_to_inspect
[Bug #21718]
Otherwise objects that don't define it, but define a fairly liberal
`method_missing` method ...
byroot (Jean Boussier)
04:57 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
vo.x (Vit Ondruch) wrote in #note-10:
> And I have not tried what would happen if the array returned by `instance_variables_to_inspect` contained some garbage ...
Just tested a few examples:
~~~
$ irb
irb(main):001* class Foo
i...
vo.x (Vit Ondruch)
04:54 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
> could the error message (and/or documentation) be improved to provide more context?
Yes, I'll work on that. the standard `Check_Type` helper was used, but since it's not clear where the failing type is common from..
> ...
That ha...
byroot (Jean Boussier)
04:41 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
byroot (Jean Boussier) wrote in #note-9:
> I think the better solution here is to pre-define `Kernel#instance_variables_to_inspect`
That solves one part. But if this is considered acceptable, could the error message (and/or documenta...
vo.x (Vit Ondruch)
03:21 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
I think the better solution here is to pre-define `Kernel#instance_variables_to_inspect` https://github.com/ruby/ruby/pull/15345 byroot (Jean Boussier)
03:10 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
In retrospect, is the `instance_variables_to_inspect` design good? Wouldn't it be better if such method behaved as some filter? E.g. it would get e.g. an array of something (maybe list of instance variables?), which could be altered and ... vo.x (Vit Ondruch)
03:06 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
I agree we shouldn't fallback to `method_missing` when checking for `instance_variables_to_inspect`. Not fully sure how to do that though. byroot (Jean Boussier)
02:49 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
Ignoring `method_missing` in this case or wrapping the non-array object in an array are the only workarounds I can think of. I don't believe ruby ever ignores `method_missing` like this, so it would be a bit different to do it here.
...
luke-gru (Luke Gruber)
02:42 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
This is essentially what happens:
~~~
$ irb
irb(main):001* class Foo
irb(main):002* def initialize
irb(main):003* @bar = "bar"
irb(main):004* end
irb(main):005> end
=> :initialize
irb(main):006> Foo.new.inspect
=> "...
vo.x (Vit Ondruch)
02:36 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
To me, it seems that the `VALUE ivars = rb_check_funcall(obj, id_instance_variables_to_inspect, 0, 0);` code at `rb_obj_inspect` assumes that there is returned either `nil` or `Array` of symbols. But with `method_missing` available, it c... vo.x (Vit Ondruch)
01:07 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
> I only checked minimagick, this looks caused by https://bugs.ruby-lang.org/issues/21219
Yep, I think so.
I have just tried to add `p composite` on [this](https://github.com/minimagick/minimagick/blob/ddcbfe9632667876be10373e1e012...
vo.x (Vit Ondruch)
12:02 PM Bug #21718: TypeError:wrong argument type ... (expected Array)
> it looks like it might use inspect to match yielded arguments or something along those lines?
Maybe `to_s` calls `inspect`?
mtasaka (Mamoru TASAKA)
11:41 AM Bug #21718: TypeError:wrong argument type ... (expected Array)
I only checked minimagick, this looks caused by https://bugs.ruby-lang.org/issues/21219
`MiniMagick::Tool` defines `method_missing` and returns itself: https://github.com/minimagick/minimagick/blob/ddcbfe9632667876be10373e1e01252617e740...
Earlopain (Earlopain _)
10:25 AM Bug #21718 (Closed): TypeError:wrong argument type ... (expected Array)
Testing Ruby 4.0 on Fedora, we observe these errors in [MiniMagick](https://github.com/minimagick/minimagick/)
~~~
1) MiniMagick::Image#composite yields an optional block
Failure/Error: yield composite if block_given?
TypeE...
vo.x (Vit Ondruch)
05:34 PM Revision 191bfcb9 (git): Define Kernel#instance_variables_to_inspect
[Bug #21718]
Otherwise objects that don't define it, but define a fairly liberal
`method_missing` method will run into errors that are hard to understand:
```ruby
class Foo
def method_missing(name, ...)
name
end
end
p Foo.new....
byroot (Jean Boussier)
03:38 PM Revision 8eaefd93 (git): [ruby/prism] Fix invalid Ruby code example in ClassNode comment
https://github.com/ruby/prism/commit/5b7456c8f6 qraqras
10:49 AM Revision dcb9e17f (git): [DOC] Update bundled gems list at 5a82880ea98617ab6894cd771ea3c3
git[bot]
10:48 AM Revision 5a82880e (git): Bump RDoc version to 6.16.1 (#15344)
st0012 (Stan Lo)
09:33 AM Misc #21689: DevMeeting-2025-12-11
- [Feature #21717] Introduce `Fiber::Scheduler#process_fork` hook.
- Is it acceptable? https://github.com/ruby/ruby/pull/15342
- [Feature #21704] Expose `rb_process_status_new` to C extensions.
- Required for improved io_uring `proce...
ioquatix (Samuel Williams)
08:46 AM Bug #21717 (Open): Cleanup fiber scheduler after fork
When using a fiber scheduler and forking a process, the child process "inherits" the fiber scheduler. An inherited scheduler will carry over state into the child process, and depending on the underlying event loop mechanism (e.g. epoll, ... noteflakes (Sharon Rosner)
02:23 AM Revision 404e6aa9 (git): [DOC] Fix typo in rb_debug_inspector_current_depth
peterzhu2118 (Peter Zhu)
01:27 AM Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
I repeated Mame's experiment on a Xeon Platinum 8124M and gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04). The chip is from 2017, and runs x86-64-v4. I'm using slightly different scripts since I'm running with frequency scaling disable... alanwu (Alan Wu)
12:04 AM Revision 5e2e45fc (git): Fix for modgc
jhawthorn (John Hawthorn)
12:04 AM Revision 9929dc44 (git): Mask off unused VWA bits
jhawthorn (John Hawthorn)
 

Also available in: Atom