Activity
From 11/28/2025 to 12/04/2025
Today
-
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
``` - 08:14 AM Revision 69173216 (git): Update default gems list at d343968ec3a899a29ff4e330dc914d [ci skip]
-
08:13 AM Revision d343968e (git): [ruby/json] Release 2.17.1
- https://github.com/ruby/json/commit/e5e4fd558e
-
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 -
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" # ... - 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 ... -
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... -
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://... -
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... -
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 ... -
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.
- 01:13 AM Revision 19f0df04 (git): ZJIT: Fix definite assignment to work with multiple entry blocks
- 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. - 12:42 AM Revision 0e7e6858 (git): [ruby/psych] Add option to disable symbol parsing
- https://github.com/ruby/psych/commit/4e9d08c285
- 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... -
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... -
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))
```...
12/03/2025
- 09:59 PM Revision b43e66d3 (git): YJIT: Pass class and shape ID directly instead of object
- 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. - 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> -
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...
-
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... -
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. -
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... -
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 ...
-
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"... -
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... -
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... -
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...
-
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... -
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... -
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 ... -
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... -
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 ... -
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 `... -
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... -
08:37 PM Revision a773bbf0 (git): Track small malloc/free changes in thread local
-
08:37 PM Revision 9913d8da (git): Group malloc counters together
-
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. -
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... -
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... - 06:37 PM Revision fd02356e (git): ZJIT: Optimize NewArray to use rb_ec_ary_new_from_values (#15391)
-
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 -
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... -
06:13 PM Revision f9cd94f1 (git): wb-protect autoload_const
-
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... -
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... -
04:52 PM Revision dd0dfecc (git): Next Ruby version is 4.0, not 3.5
-
04:34 PM Revision d7dffcdb (git): [ruby/prism] Follow repo move from oracle/truffleruby to truffleruby/truffleruby
- https://github.com/ruby/prism/commit/c8e1b11120
-
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... - 03:27 PM Revision 20fc8aff (git): Update default gems list at 94581b1ffde5e2afeba4631152955c [ci skip]
-
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. -
03:25 PM Revision 94581b1f (git): [ruby/json] Release 2.17.0
- https://github.com/ruby/json/commit/4bdb2d14fe
-
03:21 PM Revision 208271e3 (git): [ruby/json] Fix handling of depth
- https://github.com/ruby/json/commit/ccca602274
-
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. -
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`. -
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... -
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-... -
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... -
02:13 PM Revision 05383a1d (git): [ruby/json] Fix duplicated test_unsafe_load_with_options test case
- https://github.com/ruby/json/commit/7b62fac525
-
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
-
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... -
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 -
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. -
09:46 AM Revision 706d8083 (git): [ruby/rubygems] Silence Bundler UI in plugin installer specs
- https://github.com/ruby/rubygems/commit/90a0af8204
-
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... -
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... -
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... -
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
-
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... -
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 '... -
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
- 05:16 AM Revision 4762f429 (git): [DOC] typo fix in ruby/file.c
-
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
... -
02:53 AM Revision b8a79884 (git): Avoid leaking fd in uminus_no_embed test
- 02:43 AM Revision 65cfd5e1 (git): Update default gems list at 1af7550114a0401229eda42de24a82 [ci skip]
-
02:42 AM Revision 1af75501 (git): [ruby/rubygems] Bump Rubygems version to 4.0.0
- https://github.com/ruby/rubygems/commit/9d744beb56
-
02:42 AM Revision d6107f4a (git): [ruby/rubygems] Bump Bundler version to 4.0.0
- https://github.com/ruby/rubygems/commit/a55c485226
-
02:41 AM Revision 6e723bee (git): [DOC] About Float Imprecision (#15293)
-
02:39 AM Revision b2f11065 (git): [DOC] Harmonize #+ methods
- 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... - 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... -
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 -
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
```
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"... -
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... -
10:14 PM Revision e0746cc4 (git): [ruby/prism] Consolidate macro definitions
- https://github.com/ruby/prism/commit/cc0ca08757
-
10:14 PM Revision a1ea824b (git): [ruby/prism] Remove PM_OPTIONAL_LOCATION_NOT_PROVIDED_VALUE macro
- https://github.com/ruby/prism/commit/1988615ce1
-
10:14 PM Revision a55040ca (git): [ruby/prism] Further specialize PM_NODE_INIT
- https://github.com/ruby/prism/commit/7ab6d9df47
-
10:14 PM Revision 56ee55b1 (git): [ruby/prism] Introduce PM_NODE_FLAGS macro
- https://github.com/ruby/prism/commit/a20afe1674
-
10:14 PM Revision 68617fb6 (git): [ruby/prism] Specialize PM_NODE_INIT to reduce calls to location
- https://github.com/ruby/prism/commit/3e0b5c9eb7
-
10:14 PM Revision 8d2f73d7 (git): [ruby/prism] Introduce PM_NODE_UPCAST macro for readability
- https://github.com/ruby/prism/commit/7eb169513a
-
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`.
... -
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... -
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...
-
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 -
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... -
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... -
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.
-
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... -
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... -
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... -
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... -
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... -
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... -
06:36 PM Bug #21723: `binding.irb` raises a LoadError under `bundle exec`
- Here is a patch: https://github.com/ruby/ruby/pull/15373
-
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 -
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.
... -
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.
-
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 ... -
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... -
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... -
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 -
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
- 02:49 PM Revision 9eafeaed (git): Box: Free rb_classext_t struct for a box when the box is GCed
- 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). - 02:49 PM Revision 75f8a116 (git): Box: Fix data type name
- 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. -
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?
-
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
-
09:35 AM Revision e515fa7a (git): ZJIT: Improve documentation and make it easy to generate the types graph
-
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 -
07:00 AM Revision 0e22108d (git): [ruby/optparse] Remove `const_set` and instead use explicit assignments
- https://github.com/ruby/optparse/commit/6e2709a5fd
-
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> -
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 :)
-
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. -
12:55 AM Revision b563be30 (git): Win32: Clean empty directories
-
12:55 AM Revision 0be626e7 (git): Win32: Clean timestamp directory for platform
-
12:55 AM Revision a9961701 (git): Win32: Remove bundled gems directories
-
12:55 AM Revision b17f6a2a (git): Win32: Clean miniprelude
-
12:55 AM Revision 0e222991 (git): Win32: Remove DLL files linked by `prepare-vcpkg`
-
12:55 AM Revision b2b67456 (git): Win32: Support removing wildcards in middle of path
-
12:55 AM Revision c4fb79ca (git): Win32: Clean generated sources
-
12:55 AM Revision ec80e92a (git): Win32: Refine outputs
- - Suppress logos from sub makes.
- Set the prompt for `for` command when `echo` is on. -
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. -
12:55 AM Revision a6c5d290 (git): Win32: Clean prism
- - intermediate source files
- timestamp files
- build directories -
12:55 AM Revision 00d05dfc (git): Win32: Remove extra suffix for sub-make
-
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. -
12:55 AM Revision bb76e65f (git): Win32: Add `DLEXT` for clean-spec
-
12:55 AM Revision 9cdee9db (git): Win32: Fix rm.bat removing non existent file
-
12:55 AM Revision 01fd3488 (git): Win32: Fix @ in middle of commands
- `@` is not a command, and cannot be placed after `||`.
-
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.
12/01/2025
-
11:56 PM Revision 2dfb8149 (git): Clean generated transcoders
- 11:19 PM Revision d0bb505a (git): ZJIT: Split Lea memory reads on x86_64
- 11:19 PM Revision b9f1976f (git): ZJIT: Add HIR test for VM_OPT_NEWARRAY_SEND_PACK_BUFFER
- 11:19 PM Revision 985a4d97 (git): ZJIT: Open-code String#getbyte
- Don't call a C function.
- 11:19 PM Revision 74e9f717 (git): ZJIT: Mark String#ascii_only? as leaf
- 11:19 PM Revision 6db83a00 (git): ZJIT: Specialize Integer#>>
- Same as Integer#>>. Also add more strict type checks for both Integer#>>
and Integer#<<. - 11:19 PM Revision a2519639 (git): Add BOP_GTGT
- This will help JITs (and maybe later the interpreter) optimize
Integer#>>. - 11:19 PM Revision 8aed3110 (git): ZJIT: Specialize String#<< with Fixnum
- Append a codepoint.
- 11:19 PM Revision 91432a6b (git): ZJIT: Add late pass to fold AnyToString
- This otherwise would miss annotations of C methods.
- 11:19 PM Revision fd7d17ab (git): ZJIT: Don't use GuardTypeNot
- Use actual receiver type. This gives us better method lookup.
- 11:19 PM Revision 8ce78821 (git): ZJIT: Mark Integer#to_s as returning StringExact
-
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. - 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... - 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. -
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. -
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... - 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. -
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> -
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. -
05:14 PM Revision c58970b5 (git): ZJIT: Optimize variadic cfunc `Send` calls into `CCallVariadic` (#14898)
- ZJIT: Optimize variadic cfunc Send calls into CCallVariadic
-
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... -
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. -
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... -
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... -
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 -
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 👍 -
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... -
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... -
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... -
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
-
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... - 04:49 AM Revision bc9ea585 (git): Add `rb_ec_close` function to manage execution context cleanup. (#15253)
- 04:19 AM Revision 8eea9a50 (git): Nullify scheduler during `terminate_atfork_i`. (#15354)
-
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... -
01:44 AM Revision bcdad7f2 (git): [ruby/prism] Properly remove references
- https://github.com/ruby/prism/commit/17b246fd6a
11/30/2025
-
10:15 PM Revision f92ff9a8 (git): Remove an excess semicolon in a macro
-
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. -
12:03 PM Revision 9aa9cf8e (git): Fix switch fall-through in copy_ext_file_error
-
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... -
05:14 AM Revision 806e554c (git): Compare with the upper bound of the loop variable
- Fix sign-compare warning
-
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...-
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... -
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. -
02:14 AM Bug #21705: `UNIXServer.open(nil)` segfaults on Windows
- ruby_3_3 commit:1974ccabbfdc73e78e758a6ad7ea8542e2119432 merged revision(s) commit:beb85e7eeee4163cd45b69645a60cdb942f72c05.
-
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 -
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 -
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. -
12:46 AM Bug #21680: Integer#digits bug starting from Ruby 3.1
- ruby_3_3 commit:bc21e4d40daeb962699340162547e0fb2b50107f merged revision(s) commit:f4f728b319086eea3db6e9909fb9c849c276f813.
-
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.
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
-
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.
-
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?
-
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> -
07:48 PM Revision 7c2eb946 (git): [ruby/prism] Fix label interpolated string
- https://github.com/ruby/prism/commit/e3e2b1ed04
-
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> -
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://... -
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... -
06:53 PM Revision 8a0ae3a7 (git): [ruby/tempfile] [DOC] Monofont some text in Tempfile.create
- https://github.com/ruby/tempfile/commit/7fa7436baa
-
06:53 PM Revision d9093eab (git): [ruby/tempfile] [DOC] Fix monofont for Tempfile.create
- https://github.com/ruby/tempfile/commit/96361e9e42
-
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... -
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 -
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... -
03:15 PM Revision e13ad222 (git): Re-enable clang-18
- The issue might have been fixed in 8bf333a.
-
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... -
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.
-
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.
-
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.
-
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.
-
03:31 AM Revision c4b88915 (git): merge revision(s) c5bd4acd30320a8e180ce9fcb24acdab4e10c73a: [Backport #21666]
- [PATCH] [Bug #21666] Get rid of use of unspecified values
-
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... -
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`. -
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`. -
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.
-
02:06 AM Revision 82b91ec7 (git): [ruby/rubygems] Also use String#include? for RUBY_PLATFORM
- https://github.com/ruby/rubygems/commit/5fd95f38d3
-
01:43 AM Revision 0f80d0ee (git): [DOC] Fix backticks in InstructionSequence docs
-
01:27 AM Revision 005fba07 (git): [DOC] Tweaks for Module#<=>
-
01:24 AM Revision 688350da (git): [DOC] Avoid term 'derived'; use 'subclass'
-
01:02 AM Revision 34290048 (git): Fixup with mswin and nmake build for -j flag
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
-
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... -
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 -
11:43 PM Revision f18bedaf (git): [ruby/rubygems] Use String#include? with suggested by Performance/StringInclude cop
- https://github.com/ruby/rubygems/commit/fdd3419144
-
10:50 PM Revision bb2e4d58 (git): [ruby/rubygems] Fixed checksums generation issue when no source is specified
- https://github.com/ruby/rubygems/commit/bb4d791cb4
-
10:06 PM Revision 7bd80e7e (git): nmake didn't support -j flag
- 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... -
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...
-
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'... -
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 ... -
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 ... -
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 ... -
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 ... -
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... -
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... -
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... -
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
-
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 ...
-
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.
-
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.
... -
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
=> "... -
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...
-
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... -
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`? -
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... -
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... -
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.... - 03:38 PM Revision 8eaefd93 (git): [ruby/prism] Fix invalid Ruby code example in ClassNode comment
- https://github.com/ruby/prism/commit/5b7456c8f6
- 10:49 AM Revision dcb9e17f (git): [DOC] Update bundled gems list at 5a82880ea98617ab6894cd771ea3c3
-
10:48 AM Revision 5a82880e (git): Bump RDoc version to 6.16.1 (#15344)
-
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... -
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, ...
-
02:23 AM Revision 404e6aa9 (git): [DOC] Fix typo in rb_debug_inspector_current_depth
-
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...
-
12:04 AM Revision 5e2e45fc (git): Fix for modgc
-
12:04 AM Revision 9929dc44 (git): Mask off unused VWA bits