Activity
From 12/10/2025 to 12/16/2025
Today
-
11:05 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- mame (Yusuke Endoh) wrote in #note-17:
> Huh? `Proc` already has its `node_id` (via its ISeq), so `Prism.node_for` is implementable without `source_location`.
> ...
No, `node_id` is CRuby-specific and this code to extract it is a hack.
`... -
02:29 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- I have the following hypothesis: When people want column information, what they really need is an AST. #21005 was precisely such an example.
In some cases, column information alone may suffice, but obtaining the AST inevitably yields co... -
02:09 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- > Regarding to power_assert
So it's great power_assert has much more advanced parsing capabilities, but I for one would use the column information for things like Rails' `assert_difference -> { User.count }, +1`, as it would be quite ... -
02:01 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- > And also to be able to use `Prism.node_for` one of course needs `Proc#source_location`.
Huh? `Proc` already has its `node_id` (via its ISeq), so `Prism.node_for` is implementable without `source_location`.
In fact, by doing the follo... -
12:14 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- Yes, it'd be useful for e.g. `assert_raise(SomeException) { ... }` in test-unit, `expect { ... }.to` in RSpec, `-> { ... }.should raise_error(...)` in MSpec, etc.
For example `-> { 13 - "10" }.should raise_error(ArgumentError)` in MSp... -
11:21 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- Isn't `Proc.source_location` very useful for things akin to `power_assert`?
If it was easy to extract a proc's source code I'd certainly integrate it in testing framework to improve failure rendering. -
09:56 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- mame (Yusuke Endoh) wrote in #note-13:
> I agree. But then, when would `Proc#source_location` be useful?
There are cases where it's useful to show just the block, i.e. `{ block body }`.
And also to be able to use `Prism.node_for` on... -
09:51 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- Eregon (Benoit Daloze) wrote in #note-12:
> And I suspect many of these cases would likely use `Prism` and specifically [Prism.node_for](https://github.com/ruby/prism/pull/3808) to get more information, such as showing the method call t... -
09:36 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- byroot (Jean Boussier) wrote in #note-10:
> Maybe I'm totally off, but I expect this data to be used to extract the source code, e.g show a snippet of code in an error message, or something akin to that, hence byte offsets seem actually... -
09:31 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- I made a PR to re-add `{Method,UnboundMethod,Proc}#source_location` and fix all known issues: https://github.com/ruby/ruby/pull/15580
@matz Would it be OK to merge it? 🙏
For context I opened this issue because I was surprised at the sem... -
09:26 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- Maybe I'm totally off, but I expect this data to be used to extract the source code, e.g show a snippet of code in an error message, or something akin to that, hence byte offsets seem actually more convenient? (and performant).
But ye... -
08:41 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- matz (Yukihiro Matsumoto) wrote in #note-8:
> I'd like to cancel `source_location` to have column information in 4.0, due to this concern.
> ...
Thank you for the quick reply, I think that would be the worst outcome though, https://bug... -
02:46 AM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- I'd like to cancel `source_location` to have column information in 4.0, due to this concern. In my personal opinion, I am leaning toward byte index, though.
Matz.
-
10:47 PM Revision 2d014066 (git): [DOC] Harmonize rb_div methods
-
09:46 PM Feature #21785: Add signed and unsigned LEB128 support to pack / unpack
- Sorry, I probably should have put an example in the original post. Here is a sample of the usage:
```
irb(main):003> [0xFFF].pack("K")
=> "\xFF\x1F"
irb(main):004> [0xFFF].pack("K").unpack1("K")
=> 4095
irb(main):005> [-123].pac... -
07:59 PM Feature #21785 (Open): Add signed and unsigned LEB128 support to pack / unpack
- Hi,
I'd like to add signed and unsigned LEB128 support to the pack and unpack methods. LEB128 is a variable length encoding scheme for integers. You can read the wikipedia entry about it here: https://en.wikipedia.org/wiki/LEB128
... -
08:00 PM Revision 5e27581c (git): ZJIT: Use rb_zjit_writebarrier_check_immediate() instead of rb_gc_writebarrier() in gen_write_barrier()
- * To avoid calling rb_gc_writebarrier() with an immediate value in gen_write_barrier(),
and avoid the LIR jump issue. -
08:00 PM Revision 04edf3d9 (git): ZJIT: Add a VALUE#write_barrier helper method to deduplicate logic
-
08:00 PM Revision 49cecd36 (git): ZJIT: Guard other calls to rb_gc_writebarrier() with a !special_const_p() check
-
08:00 PM Revision 68174c31 (git): ZJIT: Do not call rb_gc_writebarrier() with an immediate value in gen_write_barrier()
-
08:00 PM Revision 4d4f414a (git): Use RBIMPL_ASSERT_OR_ASSUME instead of ASSUME for better errors when it does not hold
-
08:00 PM Revision 094418a6 (git): gc.h: Reintroduce immediate guard in `rb_obj_written`
- This guard was removed in https://github.com/ruby/ruby/pull/13497
on the justification that some GC may need to be notified even for
immediate.
But the two currently available GCs don't, and there are plenty
of assumtions GCs don't ever... -
08:00 PM Revision cc048f75 (git): Revert "ZJIT: Do not call rb_gc_writebarrier() with an immediate value in gen_write_barrier()"
- * This reverts commit 623559faa3dd0927b4034a752226a30ae8821604.
* There is an issue with the jump in LIR, see https://github.com/ruby/ruby/pull/15542. -
07:56 PM Revision eaa952b5 (git): YJIT: Print `Rc` strong and weak count on assert failure
- For <https://bugs.ruby-lang.org/issues/21716>, the panic is looking like
some sort of third party memory corruption, with YJIT taking the fall.
At the point of this assert, the assembler has dropped, so there's
nothing in YJIT's code oth... -
07:55 PM Revision 70a7c551 (git): YJIT: Print `Rc` strong and weak count on assert failure
- For <https://bugs.ruby-lang.org/issues/21716>, the panic is looking like
some sort of third party memory corruption, with YJIT taking the fall.
At the point of this assert, the assembler has dropped, so there's
nothing in YJIT's code oth... -
07:53 PM Revision f3d1557d (git): Revert "ZJIT: Allow ccalls above 7 arguments"
- This reverts commit 2f151e76b5dc578026706b31f054d5caf5374b05.
The SP decrement (push) before the call do not match up with
the pops after the call, so registers were restored incorrectly.
Code from:
./miniruby --zjit-call-threshol... -
07:50 PM Bug #21565 (Closed): YJIT has panicked in rails
-
07:42 PM Misc #15487 (Closed): Clarify default gems maintanance policy
-
07:42 PM Feature #12790 (Closed): Better inspect for stdlib classes
-
07:39 PM Feature #20953: Array#fetch_values vs #values_at protocols
- Ugh, for some reason this was forgotten.
Any chance it can be updated/merged before 4.0, or is it too late already? Not a big issue, I'd guess, but would be good to wrap it up some time.
@byroot Can I be of any help? -
07:07 PM
Bug #19112 (Closed): Ractor garbage collection breaks/disables all active tracepoints
- Applied in changeset commit:git|4fb537b1ee28bb37dbe551ac65c279d436c756bc.
----------
Make tracepoints with set_trace_func or TracePoint.new ractor local (#15468)
Before this change, GC'ing any Ractor object caused you to lose all
enabl... - 07:06 PM Revision 4fb537b1 (git): Make tracepoints with set_trace_func or TracePoint.new ractor local (#15468)
- Before this change, GC'ing any Ractor object caused you to lose all
enabled tracepoints across all ractors (even main). Now tracepoints are
ractor-local and this doesn't happen. Internal events are still global.
Fixes [Bug #19112] -
06:06 PM Bug #21715 (Closed): Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
- Applied in changeset commit:git|d209e6f1c0a93ad3ce1cc64dd165a6b67672614d.
----------
search_nonascii(): Replace UB pointer cast with memcpy
Casting a pointer to create an unaligned one is undefined behavior in C
standards. Use memcpy t... -
06:06 PM Revision d209e6f1 (git): search_nonascii(): Replace UB pointer cast with memcpy
- Casting a pointer to create an unaligned one is undefined behavior in C
standards. Use memcpy to express the unaligned load instead to play by
the rules.
Practically, this yields the same binary output in many situations
while fixing th... -
05:44 PM Revision a8ba2b29 (git): add 21254 to the feature list
-
04:47 PM Revision aab4f628 (git): Add the instance variable name and the module in Ractor::IsolationError (#15563)
-
04:10 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- > However, since that functionality actually exists, I think #size has no choice but to return nil.
Respectfully, I disagree. I think it is much easier _and more useful_ to explain it along the lines of...
**It is infinite by impl... -
03:45 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- I understand zverok's feeling. In fact, I thought `Enumerator.produce` always returned an infinite Enumerator. I'm surprised it can be stopped by `StopIteration`. However, since that functionality actually exists, I think `#size` has no ...
-
03:26 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- @mame My thinking (already outlined above) goes this way:
* while `Enumerator#size`, I believe, is not used extensively, it might in the future (this very change of `Enumerator.produce` call-sequence brings some attention to it)
* `Enu... -
03:00 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- Yes, all bug fixes could be incompatibilities. What I am interested in is whether this incompatibility is actually causing a real problem, and if so, what kind of applications or libraries was affected.
-
02:54 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- The point of this discussion is that fixing the "bug" broke compatibility, and we are comparing the impacts. That "bug" can or should be properly fixed by changing the code to `Enumerator.produce(1, size: nil) { raise StopIteration }.la...
-
02:41 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- With Ruby 3.4:
```ruby
Enumerator.produce(1) { raise StopIteration }.lazy.take(5).size #=> 5
Enumerator.produce(1) { raise StopIteration }.lazy.take(5).to_a.size #=> 1
```
I believe it is fair to call this behavior a bug. -
02:36 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- mame (Yusuke Endoh) wrote in #note-16:
> What problem do you have if the size is `nil`?
Among others, `Enumerator.produce(1) { it+1 }.lazy.take(5)` now returns nil, which returned 5 previously.
https://github.com/ruby/ruby/blob/6b... -
02:17 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- I couldn't find any cases where `Enumerator#size` returns `Float::INFINITY` for a finite-length Enumerator, except `Enumerator.produce` and when explicitly creating a fake-sized enumerator with `Enumerator.new(Float::INFINITY)`. Am I mis...
-
01:15 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- knu (Akinori MUSHA) wrote in #note-14:
> I'm leaning toward doing these:
> ...
IMO, this seems like a great compromise! -
01:12 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- I'm leaning toward doing these:
- Removing the Enumerator#to_set override that refuses to work against an infinite enumerator as a safeguard
- Reverting the default size of Enumerator.produce from nil to infinity
This way we can g... -
01:00 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- zverok (Victor Shepelev) wrote in #note-7:
> 2) Somebody uses `Enumerator.produce` alongside other types of enumerators. In some branch of their code, they do `raise "Can't do this operation" if enum.size == Float::INFINITY`. The compati... -
12:34 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- It's good points about compatibility, I agree losing the `size` on `.take` is not good.
IMO trying to detect "infinite loop" (in https://bugs.ruby-lang.org/issues/21654) is kinda pointless, it's the halting problem, for the vast majorit... -
12:13 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- > This is where you are mistaken.
No, that's exactly what I've meant:
```ruby
# case 1:
e = Enumerator.produce(1, size: Float::INFINITY) {it>=3 ? raise(StopIteration) : it+1}
p e.to_set
# ruby 3.4: #<Set: {1, 2, 3}>
# master... -
12:12 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- I may have misread your comment. Let me review again.
-
11:53 AM Bug #21780: Change the default size of Enumerator.produce back to infinity
- zverok (Victor Shepelev) wrote in #note-7:
> TBH, I don't see the compatibility argument applied with any consistency here.
> ...
This is where you are mistaken.
- Ruby 3.4.7
```shellsession
% ruby -ve 'e=Enumerator.produce(1) {it>... -
06:26 AM Bug #21780: Change the default size of Enumerator.produce back to infinity
- > However, the change that made Enumerator#to_set refuse to operate when the size returns infinity introduced a compatibility issue
TBH, I don't see the compatibility argument applied with any consistency here.
Let's imagine severa... -
04:59 AM Bug #21780: Change the default size of Enumerator.produce back to infinity
- The argument that Enumerator.produce is infinite by nature is certainly valid. However, the change that made Enumerator#to_set refuse to operate when the size returns infinity introduced a compatibility issue: it breaks existing code th...
-
04:06 PM Revision 09a29e13 (git): Add the class variable and the class itself in Ractor::IsolationError (#15562)
- 01:23 PM Revision 6b35f074 (git): Box: [DOC] Add RUBY_BOX in Environment
-
12:39 PM Bug #21654: Set#new calls extra methods compared to previous versions
- knu (Akinori MUSHA) wrote in #note-17:
> Adding Range#to\_set and Enumerator#to\_set overrides that perform size checks would help users avoid most common pitfalls.
I think it's actually very rare to call `.to_set` on something else ... -
12:20 PM Feature #6012: Proc#source_location also return the column
- Right, I thought about that too but forgot to write it.
Several gems have already adapted to this feature and their functionality and/or tests might rely on having the extra information, so it's definitely not great to remove this last ... -
11:26 AM Feature #6012: Proc#source_location also return the column
- And RSpec were also adjusted to the new behavior AFAICT:
https://github.com/rspec/rspec/pull/282/commits/1c20fa80772ca7a1ed0512056ce7cd6a94f8e68d -
11:25 AM Feature #6012: Proc#source_location also return the column
- Just FTR, not sure how the revert is supposed to look like, but at least Pry was adjusted for the new behavior:
https://github.com/pry/pry/pull/2357
It does not benefit from columns, but I suspect the revert would somehow influence... -
10:16 AM Feature #6012: Proc#source_location also return the column
- mame (Yusuke Endoh) wrote in #note-32:
> I record the summary of the discussion regarding Matz's decision to revert this for now. The decision was based on a combination of several reasons:
Thank you for documenting that.
It feels t... -
09:42 AM Feature #6012 (Open): Proc#source_location also return the column
- I record the summary of the discussion regarding Matz's decision to revert this for now. The decision was based on a combination of several reasons:
* Unclear use cases
* The description of #6012 lacked a use case.
* The use cas... -
02:43 AM Feature #6012: Proc#source_location also return the column
- Although last minute, we will cancel this feature in 4.0 because of design ambiguities such as whether to return column positions in bytes or characters as in #21783.
Matz.
- 10:52 AM Revision 2b1a9afb (git): Fix: Do not pass negative timeout to Addrinfo#connect_internal (#15578)
- This change fixes a bug where, with `Socket.tcp`’s `fast_fallback option` disabled, specifying `open_timeout` could unintentionally pass a negative value to `Addrinfo#connect_internal`, `causing an ArgumentError`.
```
❯ ruby -rsocket -e... -
08:51 AM Revision e42bcd7c (git): Rename fiber_serial into ec_serial
- Since it now live in the EC.
-
08:51 AM Revision 28b195fc (git): Store the fiber_serial in the EC to allow inlining
- Mutexes spend a significant amount of time in `rb_fiber_serial`
because it can't be inlined (except with LTO).
The fiber struct is opaque the so function can't be defined as inlineable.
Ideally the while fiber struct would not be opaque... -
07:53 AM Revision 85b40c5e (git): Box: fix the class name in tests
-
07:53 AM Revision 5f09e1f0 (git): Box: [DOC] fix the class name in rdoc
- Also remove a stale TODO.
-
07:53 AM Revision 8db3642a (git): Box: fix the class name in inspect
-
07:53 AM Revision 7780d3b6 (git): Box: fix the environment variable name
-
07:53 AM Revision f4c48505 (git): Box: move extensions from namespace to box
-
07:13 AM Revision 065c48cd (git): Revert "[Feature #6012] Extend `source_location` for end position
- and columns"
This reverts commit 073c4e1cc712064e626914fa4a5a8061f903a637.
https://bugs.ruby-lang.org/issues/6012#note-31
> we will cancel this feature in 4.0 because of design ambiguities
> ...
[#21783]: https://bugs.ruby-lang.org/iss... -
06:28 AM Revision 5b0fefef (git): [ruby/rubygems] Added assertion for Windows and nmake
- https://github.com/ruby/rubygems/commit/be5c4e27d9
-
05:18 AM Revision e4797e93 (git): [ruby/rubygems] Reset MAKEFLAGS option for build jobs tests
- https://github.com/ruby/rubygems/commit/09e6031a11
- 04:21 AM Revision 080bf30c (git): [ruby/rubygems] Allow to specify the number of `make` jobs when installing gems:
- - Added a new `-j` option to `gem install` and `gem update`.
This option allows to specify the number of jobs we pass to `make`
when compiling gem with native extensions.
By default its the number of processors, but users may want... - 04:21 AM Revision 9f593156 (git): [ruby/rubygems] Pass down value of `BUNDLE_JOBS` to RubyGems before compiling:
- - ### Problem
Since https://github.com/ruby/rubygems/pull/9131, we are now
compiling make rules simultaneously. The number of jobs
is equal to the number of processors.
This may be problematic for some users as they want to cont... -
04:05 AM Bug #21266 (Closed): YJIT GC safety crash with proc objects as block argument
- Applied in changeset commit:git|9168cad4d63a5d281d443bde4edea6be213b0b25.
----------
YJIT: Bail out if proc would be stored above stack top
Fixes [Bug #21266]. -
04:05 AM Revision 9168cad4 (git): YJIT: Bail out if proc would be stored above stack top
- Fixes [Bug #21266].
- 03:56 AM Revision f3b9509b (git): [ruby/rubygems] Fix quote handling in mise format ruby version parsing
- The previous regex didn't properly match quoted strings
it would capture the opening quote as part of the version
if quotes were mismatched.
This change properly parses double-quoted, single-quoted,
and unquoted version strings separatel... - 03:56 AM Revision 3b50f4ba (git): [ruby/rubygems] Support single quotes in mise format ruby version
- https://github.com/ruby/rubygems/commit/a7d7ab39dd
-
03:18 AM Revision 3b3ab338 (git): ZJIT: Fix test failures from line number of `Primitive` shifting
- This can happen with documentation updates and we don't want
those to trip on ZJIT tests.
Redact the whole name since names like "_bi342" aren't that helpful
anyways. -
02:52 AM Bug #21784: Proc#source_location start column seems strange for -> {}
- The column information from `source_location` will be canceled in 4.0. Let us discuss for the future. I think it's a matter of taste. I don't really care much.
Matz.
-
02:36 AM Revision 06019991 (git): [ruby/rubygems] Allow to show cli_help with bundler executable
- https://github.com/ruby/rubygems/commit/a091e3fd10
- 12:56 AM Revision 38d67986 (git): Bump actions/cache in /.github/actions/setup/directories
- Bumps [actions/cache](https://github.com/actions/cache) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co... -
12:25 AM Revision b6d4562e (git): [DOC] Remove copyright from Set class docs
- 12:16 AM Revision ff1b8ffa (git): [ruby/rubygems] Tweak the Bundler's "X gems now installed message":
- - Fix https://github.com/ruby/rubygems/pull/9188
- This message is a bit misleading because it always outputs one extra
specs, which is Bundler itself.
This is now fixed when the message is about to be output.
https://github.com/ru... - 12:15 AM Revision f88e7970 (git): [ruby/rubygems] Allow bundle pristine to work for git gems in the same repo:
- - Fix https://github.com/ruby/rubygems/pull/9186
- ### Problem
Running `bundle pristine` in a Gemfile where there is many git gem
pointing to the same repository will result in a error
"Another git process seems to be running in t... -
12:10 AM Revision 98cac1a7 (git): Point people to redmine on ZJIT docs (#15499)
- Fix https://github.com/Shopify/ruby/issues/900
12/15/2025
-
10:48 PM Revision abefd3e8 (git): [ruby/psych] Check that Data members match exactly
- * Fixes https://github.com/ruby/psych/issues/760
https://github.com/ruby/psych/commit/952008c898 - 10:48 PM Revision b3f0fb56 (git): [ruby/psych] Replace C extension with Data#initialize bind_call
- https://github.com/ruby/psych/commit/6a826693ba
-
10:28 PM Revision cfd41cbf (git): [DOC] Harmonize #-@ methods
-
10:27 PM Revision acbf55f4 (git): [DOC] Harmonize #- methods
-
10:27 PM Revision 7fbf321d (git): [DOC] Harmonize #** methods
- 10:07 PM Revision 98ab418f (git): Revert "Fix Socket.tcp cleanup after Thread#kill (#15131)" (#15565)
- This reverts commit 3038286a4bf7832f1c42c8cc9774ee6ff19876fc.
The following CI failure scared me:
https://github.com/ruby/ruby/actions/runs/20241051861/job/58108997049
```
1) Timeout:
TestResolvDNS#test_multiple_servers_with_timeou... -
08:52 PM Bug #21784: Proc#source_location start column seems strange for -> {}
- I made a PR to fix this: https://github.com/ruby/ruby/pull/15568
Looking at https://github.com/ruby/ruby/pull/9872/files it's clear in Prism it was just done to be compatible with parse.y.
And in parse.y it's probably not intentional... -
04:40 PM Bug #21784: Proc#source_location start column seems strange for -> {}
- I too, would expect the whole expression to be covered. This would be also consistent with `Method#source_location` which includes `def` (and not starts from the argument, or from the beginning of the body).
-
04:32 PM Bug #21784: Proc#source_location start column seems strange for -> {}
- Interesting.
The arguments (parameters) between `->` and `{` are AFAIK integral part of the stabby lambda syntax, so I think it should be either:
* All cases start at the `{`:
* consistent with non-stabby-lambda Procs
* but does ... -
03:35 PM Bug #21784: Proc#source_location start column seems strange for -> {}
- Except the problematic case `-> { }`, start position consistently excludes whitespaces just after `->`.
So I think `-> { }`'s source location should be `{ }`.
~~~ruby
-> ( ) { }.source_location # ["(irb)", 1, 3, 1, 10]
^^^^^^^
->... -
10:53 AM Bug #21784 (Open): Proc#source_location start column seems strange for -> {}
- ```
$ ruby -e 'p -> { a }.source_location'
["-e", 1, 4, 1, 10]
```
So it considers the stabby lambda to be at:
```ruby
p -> { a }.source_location
^^^^^^
```
Note it starts at a whitespace after the `->`.
I think it should ... -
08:27 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- Honestly if we're interpreting column as something visual like you're implying, we're also going to run into issues with grapheme clusters and east asian width and all the other implications for whatever "character" actually means. I thi...
-
07:55 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- From https://bugs.ruby-lang.org/issues/6012#note-25 @matz said adding column was OK, but not byte offsets.
I'm not sure what were his reasons, but maybe it's that byte offsets are too low-level for `source_location`?
If so, I would thi... -
06:29 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- Updating the docs is one solution, so at least it's consistent between docs and behavior.
I think as a Ruby-facing API it's weird that it operates in terms of bytes (and `source_location` does not have a `byte` prefix to indicate that... -
03:13 PM Bug #21783: {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- I think this is a documentation issue, as both parsers/compilers operate in terms of bytes. Changing this to characters would likely be a noticeable difference in speed, and quite a bit of code change. (Either both parsers/compilers woul...
-
10:40 AM Bug #21783 (Open): {Method,UnboundMethod,Proc}#source_location returns columns in bytes and not in characters
- The documentation says:
```
= Proc.source_location
(from ruby core)
------------------------------------------------------------------------
prc.source_location -> [String, Integer, Integer, Integer, Integer]
---------------... - 05:16 PM Revision 74b24e09 (git): Update default gems list at adf676c530b5da2822aa3b03ee43e5 [ci skip]
-
05:15 PM Revision adf676c5 (git): [ruby/erb] Version 6.0.1
- https://github.com/ruby/erb/commit/bbde68fcd5
-
05:14 PM Revision fdd8bdea (git): [ruby/erb] Freeze ERB::Compiler::TrimScanner::ERB_STAG
- (https://github.com/ruby/erb/pull/100)
For Ractor compatibility.
https://github.com/ruby/erb/commit/43f0876595 -
04:52 PM Revision 9581d6c8 (git): ZJIT: Add iongraph-generating Ruby script (#15466)
- Run like so:
$ ../tool/zjit_iongraph.rb ../build-dev/miniruby --zjit-call-threshold=2 tmp/ghbug.rb
false
false
tmp/ghbug.rb:3:in 'Object#doit': this shouldnt ever be nil (RuntimeError)
from tmp/ghbug.rb:10:in... - 04:48 PM Revision 3038286a (git): Fix Socket.tcp cleanup after Thread#kill (#15131)
- Socket.tcp launches ruby threads to resolve hostnames, and those threads
communicate through a queue implemented with `IO.pipe`. When the thread
that called `Socket.tcp` is killed, the resolver threads still try to
communicate through th... -
04:28 PM Revision 6b63b0cb (git): [DOC] Update Set#inspect description in NEWS
-
03:52 PM Revision bb0e42c5 (git): Define Array#detect as an alias for Array#find
- Otherwise Array#detect is Enumerable#detect while Array#find uses a
different more performant implementation.
[Feature #21678] -
03:10 PM Feature #21678: Enumerable#rfind
- Is this an issue where you could have defined `Enumerable#find` and now it won't have overwritten `Array#find`? Should I revert that part of this patch?
-
11:14 AM Feature #21678: Enumerable#rfind
- @etienne Yes, that seems clearly a good fix, could you do it?
(I personally don't like `detect` but we should keep aliases consistent in performance and behavior) -
10:35 AM Feature #21678: Enumerable#rfind
- Should we alias `detect` to also use that Array-specific faster implementation?
```console
>> [].method :detect
=> #<Method: Array(Enumerable)#detect(*)>
> ...
=> #<Method: Array#find(*)>
```
Edit: https://github.com/ruby/ruby/pull/15558 -
01:43 PM Revision ac946e07 (git): [ruby/prism] Unreference before destroying in call node in pattern
- https://github.com/ruby/prism/commit/609c80c91e
-
11:49 AM Bug #21709: Regexp interpolation is inconsistent with String interpolation
- Right, I think Regexp interpolation should be closer to String interpolation, currently it's its own separate thing with rather weird rules.
It reminds me of some other issues related to Regexp interpolation like #20407 and linked issues. -
11:42 AM Feature #8948: Frozen regex
- Right, it's too late for 4.0, OK.
> Frankly, I don't think freezing the Regexp objects is worth the effort/trouble.
I already did the implementation effort so that part is fine.
I think it's worth it for consistency and clean sema... -
11:38 AM Revision eceab2f4 (git): [ruby/prism] Escape error location is incorrect for some regex
- When you have a regular expression that has a named capture that
has an escape sequence in the named capture, and that escape
sequence is a unicode escape sequence with an invalid surrogate
pair, the error was attached to the owned strin... -
11:11 AM Revision bbc10ed0 (git): Add NEWS entry for Array#rfind and Array#find
-
10:40 AM Bug #21174: Range#max called with an argument on a beginless Integer Range raises RangeError
- It's a bit late to mention this, but I find this new behavior quite strange.
Range is used to represent both discrete sequences and continuous ranges, and when performing iterative operations, the begin value distinguishes between them.... -
10:21 AM Bug #21723: `binding.irb` raises a LoadError under `bundle exec` when Gemfile contains `path:` or `git:`
- I have discovered that this issue reproduces when Gemfile contains a gem referred by `path:` or `git:`.
Such Gemfiles are pretty much common in real-world applications including Rails, which use in-house Gems and libraries, like this:
... -
09:59 AM Bug #21782: Ractor::IsolationError reports incorrect path for constants found through upwards search
- Patch submitted: https://github.com/ruby/ruby/pull/15556
-
09:20 AM Bug #21782 (Open): Ractor::IsolationError reports incorrect path for constants found through upwards search
- Ractor::IsolationError is raised when non-main Ractors attempt access to non-shareable constants. The message contains the path to the constant which triggered the violation.
However, the path is incorrect when the constant was resolved... - 09:51 AM Revision 35209cae (git): Update default gems list at f0793731853c0e130f798e9dc5c736 [ci skip]
-
09:50 AM Revision f0793731 (git): [ruby/openssl] Ruby/OpenSSL 4.0.0
- https://github.com/ruby/openssl/commit/5af1edab18
-
09:09 AM Revision f06eb756 (git): [ruby/openssl] ossl.c: improve docs for constants and methods under ::OpenSSL
- https://github.com/ruby/openssl/commit/b0de8ba9bd
-
09:09 AM Revision ee6ba41b (git): [ruby/openssl] Freeze more constants for Ractor compatibility
- https://github.com/ruby/openssl/commit/695126f582
-
08:44 AM Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
- I investigated further and I understand Alan's patch is the best at this time.
auto vectorization for this kind of loop is implemented only by GCC 15, it's too early.
@Alan, could you commit it? -
08:38 AM Revision 10876c27 (git): Skip test_crash_report_pipe with macOS 15
-
08:38 AM Revision d69dff1d (git): macOS 15 is the stable version today
-
08:38 AM Revision 3563a0db (git): Add predicates for platforms
-
08:38 AM Revision c98aa977 (git): Pend some tests because these are not working with macOS 15 beta and Xcode 16 beta
-
08:38 AM Revision b3e1d82f (git): Remove macos-13 and add macos-15.
-
07:05 AM Revision 5a4faaae (git): Merge `root_box_data` into `root_box`
- * Make invariant `root_box` an array consist of only `root_box_data`.
* Remove the unnecessary initializer list that is just overwritten in
`initialize_root_box()` and missing `classext_cow_classes`.
* Shrink the scope using another lo... -
06:08 AM Revision 700487ce (git): [ruby/net-http] Refactor HTTPS tests
- This contains various improvements in tests for openssl integration:
- Remove DHE parameters from test servers. OpenSSL is almost always
compiled with ECC support nowadays and will prefer ECDHE over DHE.
- Remove an outdated omi... - 03:11 AM Revision a2dc4d7f (git): Bump actions/upload-artifact from 5.0.0 to 6.0.0
- Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v... - 02:33 AM Revision 76f30030 (git): Bump msys2/setup-msys2 from 2.29.0 to 2.30.0
- Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.29.0 to 2.30.0.
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits... - 02:31 AM Revision dd25fdcd (git): Bump actions/cache from 5.0.0 to 5.0.1
- Bumps [actions/cache](https://github.com/actions/cache) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co... -
02:01 AM Revision 1e76b1f8 (git): [DOC] Remove doc/reline
- Reline has been moved to a bundled gem, so we don't need the docs anymore.
-
01:15 AM Revision 58940377 (git): [ruby/rubygems] Write gem files atomically
- This change updates `write_binary` to use a new class,
`AtomicFileWriter.open` to write the gem's files. This implementation
is borrowed from Active Support's [`atomic_write`](https://github.com/rails/rails/blob/main/activesupport/lib/ac...
12/14/2025
-
10:35 PM Revision e7cf07ba (git): [DOC] Fix link in MakeMakefile
-
09:11 PM Revision 490a03ba (git): [ruby/prism] Fix `sexp_processor` gem reference
- It's https://rubygems.org/gems/sexp_processor, not https://rubygems.org/gems/sexp
https://github.com/ruby/prism/commit/b8a00a5f15 -
07:17 PM Bug #21780: Change the default size of Enumerator.produce back to infinity
- There are, by the way, other effects of the current default that are, even if minor, still annoying:
```ruby
Enumerator.produce(1, &:succ).lazy.take(6).size
# Ruby 3.4: => 6 -- which is correct and useful
# Ruby 4.0: => nil -- ... -
10:19 AM Bug #21780: Change the default size of Enumerator.produce back to infinity
- > I think `Enumerator#size` should only be non-nil when it is known to be the exact size.
> ...
I would argue that it is _known_ to be infinite: that's how `produce` works: loops infinitely, unless explicitly stopped by an _exception_, t... -
10:10 AM Bug #21780: Change the default size of Enumerator.produce back to infinity
- Actually for Enumerator.new, it's trivial to not be infinite and does not even need StopIteration, e.g.:
```ruby
Enumerator.new { |y| y << 1 }.count # => 1
```
So I guess you meant to use `Enumerator.produce` instead in your exampl... -
10:08 AM Bug #21780: Change the default size of Enumerator.produce back to infinity
- I disagree on this one, as written on https://bugs.ruby-lang.org/issues/21701#note-3
I think `Enumerator#size` should only be non-nil when it is known to be the exact size.
In this case it is not known if it is infinite, so returning `F... -
08:46 AM Bug #21780 (Open): Change the default size of Enumerator.produce back to infinity
- In #21701 a new argument `size:` was introduced, and its default value is `nil` (unknown).
While I support the new argument, I'd argue that the default should be `Float::INFINITY`.
**Reasoning:** By _design_, `Enumerator.produce` ... -
06:37 PM Revision 3e5c4ebe (git): [DOC] Fix backticks in Numeric#ceil
-
06:37 PM Revision cd27337d (git): [DOC] Fix backticks in Numeric#floor
-
06:33 PM Feature #21781 (Open): Add `fetch_values` method on `ENV`
- In https://bugs.ruby-lang.org/issues/10017, `fetch_values` was introduced for `Hash`. `ENV` is hash-like but is missing the method. Here are the differences between hash and env right now:
```rb
irb(main):006> Hash.instance_methods -... -
05:14 PM Revision 529b4914 (git): [ruby/prism] Only set location end when it is larger
- https://github.com/ruby/prism/commit/65595d6c2c
-
05:14 PM Revision ca083515 (git): [ruby/prism] Unreference the block node before destroying it
- https://github.com/ruby/prism/commit/fc150b1588
- 04:42 PM Revision 4a84fa1b (git): [ruby/prism] Define RubyParser::SyntaxError directly and drop require for ruby_parser.
- Had to add a require of sexp since that came in indirectly via ruby_parser.
https://github.com/ruby/prism/commit/df677c324f -
02:13 PM Feature #21005: Update the source location method to include line start/stop and column start/stop details
- Here is my PR to add `Prism.node_for` as first suggested by @mame in https://bugs.ruby-lang.org/issues/21005#note-5:
https://github.com/ruby/prism/pull/3808 -
10:46 AM Revision 674c3d73 (git): [ruby/openssl] pkcs7: raise OpenSSL::PKCS7::PKCS7Error in #initialize
- When d2i_PKCS7_bio() and PEM_read_bio_PKCS7() fail to decode the input,
OpenSSL::PKCS7.new currently raises ArgumentError. The usual practice
in ruby/openssl where an error originates from the underlying OpenSSL
library is to raise OpenS... -
10:46 AM Revision 7969b654 (git): [ruby/openssl] x509cert: update doc for OpenSSL::X509::Certificate#==
- Mention the underlying OpenSSL function. Add a note about the unreliable
comparison when called on an incomplete object.
Fixes https://github.com/ruby/openssl/issues/844
https://github.com/ruby/openssl/commit/736af5b3c7 -
08:54 AM Feature #21389: Simplify Set#inspect output
- @jeremyevans0 Thank you for the clarification. I'll try to consider adjusting the docs to reflect the design.
-
02:46 AM Feature #21389 (Closed): Simplify Set#inspect output
- zverok (Victor Shepelev) wrote in #note-5:
> Just noticed that on the latest `master` subclasses `#inspect` didn't change (unlike what @matz suggests here: https://bugs.ruby-lang.org/issues/21389#note-3):
> ...
Yes, this is deliberate ... -
08:53 AM Bug #21778: Binding#eval vs implicit parameters
- @mame Thank you for the clarification!
-
02:39 AM Bug #21778 (Rejected): Binding#eval vs implicit parameters
- This was pointed by @ko1 at the dev meeting in the discussion of #21049, and we agreed not to implement it. Implementing it would require the parser to accept more detailed outer context, and that effort was not worth. Sorry it wasn't cl...
-
08:50 AM Misc #21777: DevMeeting-2026-01-14
- * [Bug #21780] Change the default size of `Enumerator.produce` back to infinity (zverok)
* While the new argument is a good addition to the API, I argue that `Float::INFINITY` would be a more friendly default, corresponding to the mos... -
07:11 AM Revision 711d1499 (git): Adjust indents [ci skip]
- 02:59 AM Revision ab95abd4 (git): Update default gems list at 9e22037eb50d7abe6385901c9b0293 [ci skip]
-
02:59 AM Revision 9e22037e (git): [ruby/io-console] bump up to 0.8.2
- https://github.com/ruby/io-console/commit/fbc7e1f31f
-
02:45 AM Revision f6ef4efa (git): ZJIT: Add a test for `--zjit-stats=<path>` option
- Fix up ruby/ruby#15414, 29c29c2b7e972359ab83038c5dc27a7e53ae65c7
-
02:45 AM Revision 3a4d534b (git): ZJIT: Fix tests about `--zjit-stats-quiet` option
- The `--zjit-stats-quiet` and `--zjit-stats=quiet` options differ.
The latter option, `=quiet`, does print stats to the file "quiet", but
does not suppress output like yjit option `--yjit-stats=quiet`.
Fix up ruby/ruby#15414, 29c29c2b7e9... -
02:43 AM Bug #21779 (Closed): Do not export functions from statically linked extensions
- Applied in changeset commit:git|bc2a8a002a6c41fc1b28e02e15e2fb2b72d1b66e.
----------
[Bug #21779] Uniquify `InitVM` functions as well as `Init`
Avoid possible name conflict when `--with-static-linked-ext`. -
02:10 AM Bug #21779 (Closed): Do not export functions from statically linked extensions
- Reported at https://github.com/ruby/io-console/pull/105.
This is caused by `InitVM_console` exposed from the statically linked io/console is called from the loaded io-console gem.
The static `InitVM_console` initializes the ractor lo... -
02:11 AM Revision c26057eb (git): [Bug #21779] Do not export InitVM functions
- Fix ruby/io-console#105.
-
02:11 AM Revision bc2a8a00 (git): [Bug #21779] Uniquify `InitVM` functions as well as `Init`
- Avoid possible name conflict when `--with-static-linked-ext`.
-
01:57 AM Revision 01db5d71 (git): Removed duplicate code
-
01:09 AM Revision c198436f (git): Run omnibus compilations without git
12/13/2025
-
08:30 PM Revision 0159a98b (git): [Feature #20925] Skip infinite loop test
-
08:09 PM Revision b423204c (git): Fix documentation of RB_PASS_CALLED_KEYWORDS in C API
-
06:53 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- Oh, that's a very interesting trick @tompng
-
05:50 PM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- Maybe this is off-topic, but I think this stack that internally use queue can perform closer to Thread::Queue.
~~~ruby
def pop(timeout: nil)
if @dummy_resource_queue.deq(timeout:)
@real_resource_array.pop
end
end
def <<(... -
08:33 AM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- I'm +1 on making Monitor core.
(FWIW TruffleRuby already uses `Primitive` to define Monitor as basically core: https://github.com/truffleruby/truffleruby/blob/master/lib/mri/monitor.rb) -
07:10 AM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- So, if Monitor was made a core class, it could benefit from some optimizations and be almost as fast as Mutex: https://github.com/ruby/ruby/pull/15538
```
ruby 4.0.0dev (2025-12-13T06:49:18Z core-monitor 6fabf389fd) +YJIT +PRISM [arm... -
06:50 PM Bug #21669: Thoroughly implement void value expression check
- Yeah, sure. I compiled them in this gist: https://gist.github.com/Earlopain/79d49df05cca5b0c8c6cefc6f3284a4b. I missed one vendored file, so there are only 6 distinct cases.
In `ruby/prism` I added a script for this. You call it like ... -
05:57 PM Bug #21669: Thoroughly implement void value expression check
- Earlopain (Earlopain _) wrote in #note-12:
> I ran this change over code available on rubygems and it only impacts 37 files which go syntax invalid with this. If I take out duplicate vendorered files, it is down to just 7.
If it's no... -
02:05 PM Bug #21669: Thoroughly implement void value expression check
- Yeah, it seems like I missed this case but @nobu already took care of it in his PR. I left a comment about something, however since this is in ruby/ruby now I can't actually push any changes anymore myself.
I ran this change over code... -
06:31 PM Feature #21389 (Open): Simplify Set#inspect output
- Just noticed that on the latest `master` subclasses `#inspect` didn't change (unlike what @matz suggests here: https://bugs.ruby-lang.org/issues/21389#note-3):
```ruby
class MySet < Set
end
p Set[1, 2, 3] #=> Set[1, 2, 3]
p My... -
06:11 PM Bug #21778 (Rejected): Binding#eval vs implicit parameters
- This works:
```ruby
proc { |x| binding.eval('x') }.call(1) #=> 1
```
This doesn't (neither with numbered parameters, nor with `it`):
```ruby
proc { _1; binding.eval('_1') }.call(1) # undefined local variable or method '_1' for ... -
04:57 PM Revision e8d32ddd (git): [ruby/openssl] ossl.c: implement OpenSSL::OpenSSLError#detailed_message
- An OpenSSL function sometimes puts more than one error entry into the
thread-local OpenSSL error queue. Currently, we use the highest-level
entry for generating the exception message and discard the rest.
Let ossl_make_error() capture a... -
03:43 PM Revision 6513cf90 (git): Export `GIT`
- Propagate the value given with `--with-git` configure option to
tool/lib/vcs.rb. -
02:33 PM
Feature #21701 (Closed): Enumerator.produce accepts an optional `size` keyword argument
- Applied in changeset commit:git|79a6ec74831cc47d022b86dfabe3c774eaaf91ca.
----------
Enumerator.produce accepts an optional `size` keyword argument
When not specified, the size is unknown (`nil`). Previously, the size was always `Floa... - 02:33 PM Revision 79a6ec74 (git): Enumerator.produce accepts an optional `size` keyword argument
- When not specified, the size is unknown (`nil`). Previously, the size was always `Float::INFINITY` and not specifiable.
[Feature #21701] - 02:29 PM Revision 0561eb94 (git): [ruby/prism] Prevent an infinite loop parsing a capture name
- Fixes https://github.com/ruby/prism/pull/3729.
https://github.com/ruby/prism/commit/6e5347803c -
12:37 PM Revision 8f2c479f (git): [ruby/io-console] strip trailing spaces [ci skip]
- https://github.com/ruby/io-console/commit/379e7c17ed
-
12:37 PM Revision 3a4ad76f (git): [ruby/io-console] console_cursor_pos respects scroll position on windows
- https://github.com/ruby/io-console/commit/ae33785820
-
12:37 PM Revision c8fd8405 (git): [ruby/io-console] console_goto respects scroll position on windows
- https://github.com/ruby/io-console/commit/d2a6c69697
-
12:37 PM Revision 29128258 (git): [ruby/io-console] avoid jumping scroll position when winsize changed
- On windows, IO.console.winsize= now respects the current view area and screen buffer size.
https://github.com/ruby/io-console/commit/817aa65ea3 -
12:10 PM Bug #21648: [prism] ruby crashes for `for * in [10]; end`
- Thanks @k0kubun. Seems like I can, yeah. I'll do that in the future where I think it makes sense.
-
11:34 AM Revision 9dbbdcc3 (git): [ruby/io-console] Remove useless rb_check_arity() call
- https://github.com/ruby/io-console/commit/df444b93f1
-
04:52 AM Revision 71dd2725 (git): Remove useless rb_check_arity() calls
-
02:23 AM Revision e1f5e61d (git): YJIT: Fix panic from overly loose filtering in identity method inlining
- Credits to @rwstauner for noticing this issue in GH-15533.
-
01:27 AM Revision 6ed5574b (git): Revert "ZJIT: Exclude failing ruby-bench benchmarks (#15479)"
- This reverts commit 1eb10ca3cb6cff98bb8c0946ed905921586c7d52.
This should have been fixed by https://github.com/ruby/ruby/pull/15536. -
01:00 AM Revision eb7acd75 (git): ZJIT: Nil-fill locals in direct send (#15536)
- Avoid garbage reads from locals in eval.
Before the fix the test fails with
<"[\"x\", \"x\", \"x\", \"x\"]"> expected but was
<"[\"x\", \"x\", \"x\", \"x286326928\"]">.
12/12/2025
-
11:55 PM Revision 8f81d2b5 (git): ZJIT: Don't inline non-parameter locals
-
11:43 PM Revision f19e9c66 (git): YJIT: Fix panic from overly loose filtering in identity method inlining
- Credits to @rwstauner for noticing this issue in GH-15533.
-
11:43 PM Revision 628a9410 (git): YJIT: Add missing local variable type update for fallback setlocal blocks
- Previously, the chain_depth>0 version of setlocal blocks did not
update the type of the local variable in the context. This can leave
the context with stale type information and trigger or lead to miscompilation.
To trigger the issue, Y... -
11:29 PM Revision 2f151e76 (git): ZJIT: Allow ccalls above 7 arguments (#15312)
- ZJIT: Add stack support for CCalls
-
11:19 PM Bug #21772: ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- Thanks for sharing the logs -- I was able to track down the issue using it.
Backport for 3.4 is pending at https://github.com/ruby/ruby/pull/15535 -
08:29 PM Bug #21772 (Closed): ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- Applied in changeset commit:git|2884f53519c4b86072d5fc3b41a71cee697af8ba.
----------
YJIT: Add missing local variable type update for fallback setlocal blocks
Previously, the chain_depth>0 version of setlocal blocks did not
update the ... -
10:30 PM Bug #21696 (Closed): Performance degradation for long running processes in Ruby 4.0.0-preview2
-
10:03 PM Revision 176e384b (git): Cache filesystem_encindex
-
09:53 PM Revision e7a38b32 (git): Store Encoding#name as an attribute
- When debugging the fstring table, I found "UTF-8" to be the most common
interned strings in many benchmarks.
We have a fixed, limited number of these strings, so we might as well permanently
cache their fstrings. -
08:29 PM Revision 2884f535 (git): YJIT: Add missing local variable type update for fallback setlocal blocks
- Previously, the chain_depth>0 version of setlocal blocks did not
update the type of the local variable in the context. This can leave
the context with stale type information and trigger panics like in
[Bug #21772] or lead to miscompilati... - 07:47 PM Revision 3add3db7 (git): Fewer calls to `GET_EC()` and `GET_THREAD()` (#15506)
- The changes are to `io.c` and `thread.c`.
I changed the API of 2 exported thread functions from `internal/thread.h` that
didn't look like they had any use in C extensions:
* rb_thread_wait_for_single_fd
* rb_thread_io_wait
I didn't cha... -
07:27 PM Bug #21775 (Closed): Procs of type ifunc can access unshareable values
- Applied in changeset commit:git|5903ed7ba9ca60546aa0dd97e92b3d381b7918d3.
----------
Prevent ifunc procs from being made shareable
[Bug #21775] -
07:27 PM Revision 5903ed7b (git): Prevent ifunc procs from being made shareable
- [Bug #21775]
- 07:24 PM Revision 7909ce2a (git): move th->event_serial to rb_thread_sched_item (#15500)
-
06:35 PM Feature #21678 (Closed): Enumerable#rfind
- Applied in changeset commit:git|6147b695870ce82ee3ad5305ce095b63889b8d9d.
----------
Array#rfind
Implement Array#rfind, which is the same as find except from the
other side of the Array. Also implemented Array#find (as opposed to
the g... -
06:35 PM Revision 6147b695 (git): Array#rfind
- Implement Array#rfind, which is the same as find except from the
other side of the Array. Also implemented Array#find (as opposed to
the generic one on Enumerable because it is significantly faster
and to keep the implementations togethe... - 06:26 PM Revision 4f900e3c (git): ZJIT: Only optimize `[]` and `[]=` for exact Hash, not Hash subclasses
- 06:26 PM Revision 309d6ef9 (git): ZJIT: Inline `Hash#[]=`
-
06:14 PM Revision 3a0596b9 (git): ZJIT: Add Shape type to HIR (#15528)
- It's just a nicety (they fit fine as CUInt32) but this makes printing
look nicer in real execution and also in tests (helps with #15489).
Co-authored-by: Randy Stauner <randy@r4s6.net> - 05:52 PM Revision bb4a6f39 (git): [ruby/prism] Fixed Prism::Translation::RubyParser's comment processing
- Tests were failing in Flay under Prism.
https://github.com/ruby/prism/commit/af9b3640a8 -
05:09 PM Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
- I'm not a big fan the pragma route. Trying to get good codegen out of UB triggering C code is inherently a whack-a-mole game with compiler brands and even options of the same brand. With non compliant C code the incantation to patch over...
-
04:56 PM Revision 88f1d986 (git): Fix allocationless anonymous splat keyword argument check
- Previously, if an argument splat and keywords are provided by
the caller, it did not check whether the method/proc accepted
keywords before avoiding the allocation. This is incorrect,
because if the method/proc does not accept keywords, ... -
04:40 PM Revision b8ba9ceb (git): Fix binding.implicit_parameters_get/defined segfault when wrong name string is passed (#15530)
-
04:30 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
- From: https://github.com/ruby/ruby/pull/15529
> The timer thread checks the running threads to provide timeslice every 10ms and finds the thread (th) performing blocking operation.
Isn't 10ms a massive amount of time in that contex... -
03:12 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
- I'm with John that I think this is very promising but should not be introduced in ruby 4.0. It needs more testing to make sure it's working correctly and it needs more benchmarks for more realistic workloads. We can't do that in 2 weeks....
-
02:01 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
- https://github.com/ruby/ruby/pull/15529
It seems enough small, so I want to introduce it to 4.0. -
04:23 PM Misc #21777 (Open): DevMeeting-2026-01-14
- # The next dev meeting
**Date: 2026/01/14 13:00-17:00** (JST)
Log: *TBD*
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at the bug tracker.
- Dev meeting is a place we can ask Matz, nobu, nurse and o... -
04:22 PM Misc #21689 (Closed): DevMeeting-2025-12-11
-
04:08 PM Feature #21766: Pathname + FileUtils making sweet music together
- > I feel Unix command names are too short for usual programs.
At the same time:
* they are known at least to most of the console-using programmers, so this is a "dictionary" many of us familiar with
* FileUtils have a practice of al... -
12:29 AM Feature #21766: Pathname + FileUtils making sweet music together
- I feel Unix command names are too short for usual programs.
So, I'm negative. -
02:25 PM Bug #21049 (Closed): Reconsider handling of the numbered parameters and "it" parameter in `Binding#local_variables`
- Applied in changeset commit:git|fa7cddc969f1eccbb377cfc752bbf82ee2887dde.
----------
Add Binding#implicit_parameters, etc.
This changeset introduces:
* `Binding#implicit_parameters`
* `Binding#implicit_parameter_get`
* `Binding#implic... -
02:24 PM Revision f939cf40 (git): Update NEWS about `Binding#implicit_parameters`, etc.
- [Bug #21049]
-
02:24 PM Revision 04422384 (git): Add docs to Binding#numbered_parameters, etc.
-
02:24 PM Revision 129d74c9 (git): Binding#implicit_parameters, etc. support the implicit "it" parameter
- [Bug #21049]
-
02:24 PM Revision fa7cddc9 (git): Add Binding#implicit_parameters, etc.
- This changeset introduces:
* `Binding#implicit_parameters`
* `Binding#implicit_parameter_get`
* `Binding#implicit_parameter_defined?`
[Bug #21049] -
10:53 AM Misc #20774: Remove remaining locale dependent code from Windows port
- @nobu IMHO ruby-4.0 is a good chance to change these remaining locale strings to UTF-8. Windows stdin console input is still in [locale encoding](https://github.com/ruby/ruby/blob/d428d086c23219090d68eb2d027498c6ea999b89/io.c#L13557), th...
-
09:46 AM Revision d428d086 (git): Simplify the code
- `thread_sched_to_waiting_common0` is no longer needed.
- 09:12 AM Revision e2fe0aae (git): Avoid race condition in `test_without_handle_interrupt_signal_works`. (#15504)
-
09:12 AM Feature #21721: Allow `Queue` and `SizedQueue` to be used as LIFO queues
- So I did a number of other patches to squeeze some more performance out of `Monitor#synchronize`
```
ruby 4.0.0dev (2025-12-12T09:08:05Z master ff831eb057) +YJIT +PRISM [arm64-darwin25]
Warming up -----------------------------------... -
09:08 AM Revision ff831eb0 (git): thead_sync.c: directly pass the execution context to yield
- Saves one more call to GET_EC()
-
09:07 AM Revision 7e7a1db5 (git): Define Thread::ConditionVariable in thread_sync.rb
- It's more consistent with Mutex, but also the `#wait` method
benefits from receiving the execution context instead of having
to call `GET_EC`. - 08:55 AM Revision cf97a14c (git): Bump actions/cache from 4.3.0 to 5.0.0
- Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to 5.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co... - 08:55 AM Revision 0022a878 (git): Bump actions/cache in /.github/actions/setup/directories
- Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to 5.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.co... -
08:39 AM Revision 175a0d5f (git): [ruby/timeout] Restore original signal handler in test_timeout_in_trap_handler
- https://github.com/ruby/timeout/commit/4ae8631acf
- 06:55 AM Revision d9cc7621 (git): Update bundled gems list as of 2025-12-12
-
06:32 AM Bug #21776 (Closed): Binding#local_variable_defined? still supports numbered parameters
- Applied in changeset commit:git|1794cfe12fe61dedebadead542927f9fef4104eb.
----------
Binding#local_variable_defined? raises a NameError for numbered params.
[Bug #21776] -
05:10 AM Bug #21776 (Open): Binding#local_variable_defined? still supports numbered parameters
-
05:10 AM Bug #21776: Binding#local_variable_defined? still supports numbered parameters
- I noticed that `binding.local_variable_defined?(:@x)` raises `wrong local variable name '@x' for #<Binding:0x00007cd1e95a94d8> (NameError)`.
Maybe `binding.local_variable_defined?(:_1)` should raise a similar error because `_1` is not a... -
04:17 AM Bug #21776 (Closed): Binding#local_variable_defined? still supports numbered parameters
- Applied in changeset commit:git|04494d9e4064a57accc8309da9b35754a3d24973.
----------
`Binding#local_variable_defined?` must not handle numbered parameters
[Bug #21776] -
03:02 AM Bug #21776: Binding#local_variable_defined? still supports numbered parameters
- Thanks! https://github.com/ruby/ruby/pull/15519 will fix the issue.
-
06:32 AM Revision 5ef4f88d (git): use `ractor_sched_lock`
- instead of using `rb_native_mutex_lock` directly.
-
06:21 AM Revision 1794cfe1 (git): Binding#local_variable_defined? raises a NameError for numbered params.
- [Bug #21776]
-
05:24 AM Revision 5541c0d8 (git): Win32: Make `rb_w32_osid` return Windows NT always
- Since support for Windows 9x was dropped over a decade ago.
-
05:24 AM Revision f939f043 (git): Win32: Deprecate Windows version info API
- `dwMajorVersion` alone has no meaning since Windows 7. Use API in
VersionHelper.h instead. -
05:24 AM Revision 50e5c542 (git): Win32: Remove the workaround for console reading bug
- It has been fixed at Windows 8, and we already have dropped the
support Windows 8 and olders. -
04:16 AM Revision 04494d9e (git): `Binding#local_variable_defined?` must not handle numbered parameters
- [Bug #21776]
-
01:57 AM Revision be43ad37 (git): release.yml: Fix tag conversion for Ruby 4.0
- and PREVIOUS_RELEASE_TAG for any .0 releases
-
01:54 AM Revision 8fba4b0f (git): tool/format-release: Fix a wrong method reference
-
01:50 AM Revision ec4c4670 (git): tool/format-release: Carve out the version format logic
- to share it with tool/releng/update-www-meta.rb and another place I'm
going to modify next. -
01:45 AM Revision faac344d (git): make-snapshot: Fix Psych::DisallowedClass with newer psych
- ```
$ tool/format-release ../www.ruby-lang.org 4.0.0-preview2 .
/opt/rubies/3.4.6/lib/ruby/3.4.0/psych/class_loader.rb:99:in 'Psych::ClassLoader::Restricted#find': Tried to load unspecified class: Date (Psych::DisallowedClass)
fr... -
01:28 AM Revision 3a766259 (git): ZJIT: Don't specialize calls with kwsplat (#15513)
-
01:16 AM Feature #20959: Add a way to get codepage of console.
- ```
dir | ruby -e “puts STDIN.read.force_encoding('locale')”
```
I think they should use `-E`.
> On Windows, the C runtime locale for each process is currently inconsistent, so changing the locale encoding for this purpose does n... -
01:06 AM Misc #21769: Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git
- Here's the list of all changes I made for this ticket:
* `tool/merger.rb tag`
* https://github.com/ruby/ruby/commit/0564214a00450371527c7bd69fc13618e5f25f30
* `tool/merger.rb remove_tag`
* https://github.com/ruby/ruby/commit/aff... -
12:59 AM Revision 1f0ca557 (git): make-snapshot: Update the tag format for Ruby 4.0+ (#15514)
-
12:45 AM Revision 06a6ad44 (git): make-snapshot: Remove an unnecessary variable
- This is a refactoring change, which should have no impact on behaviors.
Now, if patchlevel is true, tag is empty. So `if patchlevel` always does
nothing. Given that prerelease is false and tag is not nil, removing
`if patchlevel` should... -
12:45 AM Revision 6601640c (git): make-snapshot: Branch if it's X.Y.Z or X.Y using when
- It just seems like a completely different input, so it makes more sense
to me to have it as a separate case.
Also, we don't need to support Ruby 2.0 or older. -
12:45 AM Revision 0ecf6896 (git): make-snapshot: Make preview/rc match stricter
- to make it a bit more consistent with the other branch
-
12:45 AM Revision 58f9aca0 (git): make-snapshot: Drop X.Y.Z-pN support
- We no longer make patchlevel releases.
-
12:18 AM Revision 12bf3a99 (git): update-www-meta.rb: Update the tag format for Ruby 4.0+
- Just copied format-release fixes in
a973526c050fec044ffd7ceeba0ac8e8a1fed299 to this file.
12/11/2025
-
11:52 PM Revision aff0c6da (git): tool/merger.rb: Support the new format in remove_tag
-
11:44 PM Bug #21685: Unnecessary context-switching, especially bad on multi-core machines.
- The benchmark from #20816 gets a little more pure results as it only deals with a fast syscall in a loop without Queue communication. I adjusted it slightly.
``` ruby
THREADS = (ARGV.first || 10).to_i # choose thread count from CLI
... -
11:29 PM Revision 04299ca1 (git): monitor.c: skip GET_EC() on exit
-
11:09 PM Misc #21774 (Closed): [ANN] Rename the `v4_0_0_preview2` git tag to `v4.0.0-preview2`
- All those PRs have been merged, so I did (3) as well.
-
10:50 PM Misc #21774 (Assigned): [ANN] Rename the `v4_0_0_preview2` git tag to `v4.0.0-preview2`
-
06:17 PM Misc #21774: [ANN] Rename the `v4_0_0_preview2` git tag to `v4.0.0-preview2`
- I filed PRs for (2).
* https://github.com/ruby/www.ruby-lang.org/pull/3689
* https://github.com/ruby/rbs/pull/2743
* https://github.com/docker-library/ruby/pull/522
I'll wait a little before doing (3). -
05:48 PM Misc #21774: [ANN] Rename the `v4_0_0_preview2` git tag to `v4.0.0-preview2`
- I finished (1).
```
$ git checkout v4_0_0_preview2
HEAD is now at 4fa6e9938c strnlen is not used now
$ git tag v4.0.0-preview2
$ git push origin v4.0.0-preview2
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: To ... -
05:33 PM Misc #21774 (Closed): [ANN] Rename the `v4_0_0_preview2` git tag to `v4.0.0-preview2`
- ## Changes
As per [Misc #21769], we'll rename the `v4_0_0_preview2` tag to `v4.0.0-preview2` on ruby.git.
## Operations
To minimize its potential impact, I'll work on it in the following order:
1. Push a new tag `v4.0.0-previ... -
10:51 PM Bug #21759: `test_fork.rb:78` is failing with `RUBY_MN_THREADS=1`
- Thank you! I have also run the test over 10 times to make sure there are no failures with `RUBY_MN_THREADS=1`.
-
03:57 PM Bug #21759 (Closed): `test_fork.rb:78` is failing with `RUBY_MN_THREADS=1`
- This has most likely been fixed by https://github.com/ruby/ruby/pull/15392. I can't reproduce the failure on master and the fix was targeting a race condition in the thread scheduler in MN thread mode.
-
10:50 PM Misc #21769 (Closed): Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git
- Updated `tool/merge.rb tag` and `tool/format-release` to support the new git tag format at https://github.com/ruby/ruby/pull/15508.
-
05:22 PM Misc #21769 (Assigned): Use "vX.Y.Z" instead of "vX_Y_Z" as tag names on ruby.git
- From the (draft) meeting notes:
> #### Conclusion:
> ...
I'll modify `ruby-master/tool/merger.rb tag` to use the `v4.0.0` format for Ruby 4.0+. I'll also file another ticket to announce the `v4.0.0-preview2` tag rename.
To close t... -
10:49 PM Revision a973526c (git): tool/format-release: Fix the tag format for Ruby 4.0+
-
10:49 PM Revision 0564214a (git): tool/merger.rb: Update the tag format for Ruby 4.0+
-
10:25 PM Revision 8210a117 (git): test_ractor.rb: old object while calling _id2ref
-
10:25 PM Revision 07b2356a (git): Mutex: avoid repeated calls to `GET_EC`
- That call is surprisingly expensive, so trying doing it once
in `#synchronize` and then passing the EC to lock and unlock
saves quite a few cycles.
Before:
```
ruby 4.0.0dev (2025-12-10T09:30:18Z master c5608ab4d7) +YJIT +PRISM [arm64-... - 10:21 PM Revision dc58d58a (git): [ruby/timeout] Fix failing timeout test
- ```
Run options:
"--ruby=./miniruby -I../ruby/lib -I. -I.ext/common ../ruby/tool/runruby.rb --extout=.ext -- --disable-gems"
--excludes-dir=../ruby/test/.excludes
--name=!/memory_leak/
--seed=9843
[ 1/31] TestTimeout#test_time... -
10:17 PM Bug #20314: Simultaneous Timeout expires may raise an exception after the block
- I'll discuss solutions in https://github.com/ruby/timeout/issues/52.
I got an idea for a fix, but haven't had time to try it yet. -
09:12 PM Revision 64062792 (git): ZJIT: Check method visibility when optimizing sends (#15501)
- Fix https://github.com/Shopify/ruby/issues/874
-
08:45 PM Revision fb80587f (git): [ruby/timeout] Add windows to CI matrix
- https://github.com/ruby/timeout/commit/c8d63ce3fe
-
08:45 PM Revision f8f8ff61 (git): auto_request_review.yml: Update path for jit related docs
-
08:45 PM Revision eb889e47 (git): ZJIT: s/checking possible to build ZJIT/checking prerequisites for ZJIT/
- Reads better to me:
> checking prerequisites for ZJIT... yes -
08:45 PM Revision c092c294 (git): ZJIT: [DOC] Mention build prerequisites
-
08:45 PM Revision 832aac6c (git): Tune AS_CASE indentation style and remove `[*]` for default case
- There are many indentation styles for AS_CASE in this file but no one
uses `[*]` for the default case. -
08:21 PM Revision 1b7c8b79 (git): [ruby/timeout] Skip signal test on windows
- Windows has no SIGUSR1.
There might be another usable signal, but this is breaking ruby master
so I just want a quick fix for now.
https://github.com/ruby/timeout/commit/b19043e8d0 -
08:01 PM Bug #21776 (Closed): Binding#local_variable_defined? still supports numbered parameters
- On the freshest `master`:
```ruby
[1].each {_1; p binding.local_variable_defined?(:_1) }
#=> true
```
It is inconsistent with changes in `#local_variables`/`#local_variable_get`/`#local_variable_set`. And inconsistent with handl... -
07:01 PM Bug #21775 (Closed): Procs of type ifunc can access unshareable values
- With this code, we can see that the Ractor is able to access the top-level main object.
``` ruby
Ractor.alias_method :value, :take unless Ractor.method_defined?(:value)
shareable_proc = Ractor.make_shareable(Hash.new { self }.to_pro... -
06:57 PM Misc #21770 (Closed): Stop bumping RUBY_PATCHLEVEL in release versions
- Applied in changeset commit:git|d02c97157476bbd9774f2bf6425a69166b99da1b.
----------
Stop bumping RUBY_PATCHLEVEL in release versions (#15502)
[[Misc #21770]](https://bugs.ruby-lang.org/issues/21770) -
06:57 PM Revision d02c9715 (git): Stop bumping RUBY_PATCHLEVEL in release versions (#15502)
- [[Misc #21770]](https://bugs.ruby-lang.org/issues/21770)
-
06:54 PM Feature #20959: Add a way to get codepage of console.
- When I filed #20959, I had #20929 in mind.
Since Windows APIs return time zone names localized based on the user's language settings rather than the system's language settings, it was important to retrieve them using a language-independ... -
01:46 PM Feature #20959: Add a way to get codepage of console.
- I think your idea is that Microsoft is pushing more for UTF-8 support in console apps using the Visual C++ runtime, and in the future, setting the locale to UTF-8 might become the usual way. If that happens, the console code page and loc...
-
06:53 PM Bug #18733: Heavy GC allocations cause performance issue with Ractor
- Just to update that though GC is still global more progress has been made. I'm on a new PC, so rerunning the benchmark against the old SHA.
```
❯ ruby -v
ruby 3.5.0dev (2025-07-02T20:01:24Z v4.0.0-preview2~2697 d5f5a56bf2) +PRISM [x... -
06:29 PM Bug #21607 (Feedback): require 'concurrent-ruby' causes segfault with Ruby 3.4.6 on linux/i686 built with GCC 15
-
06:28 PM Bug #17878 (Closed): bootstraptest/test_ractor.rb:224 a random failing test with "The outgoing-port is already closed (Ractor::ClosedError)"
- It's likely this was fixed by the introduction of Ractor::Port. "The outgoing-port is already closed" isn't a message that can occur anymore (we no longer have outgoing ports)
-
05:53 PM Revision 89e09e4d (git): Add assumption to free_vm_weak_references
- Help the compiler know that we always get a heap object here.
-
05:53 PM Revision 32e6dc0f (git): Speed up class allocator search
- This rewrites the class allocator search to be faster. Instead of using
RCLASS_SUPER, which is now even slower due to Box, we can scan the
superclasses list to find a class where the allocator is defined.
This also disallows allocating ... -
05:53 PM Revision 459c3772 (git): Assume result from allocator will be valid
- This adds a fastpath in class_call_alloc_func to simply return if the
class matches the one expected.
I think we could probably just remove this check, or move it to the debug
build. - 04:38 PM Revision b5604833 (git): Fix Set#^ to not mutate its argument (#15296)
- * test(set): add test Set#xor does not mutate other_set
* Fix Set#^ to not mutate its argument -
04:02 PM Bug #21710 (Closed): Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
-
09:45 AM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- byroot (Jean Boussier) wrote in #note-24:
> > I just don't think we should support this.
> ...
To be clear, we are aware we're doing really shady weird things to get a bit less overhead / a few more features, etc and we don't expect u... -
03:35 PM Bug #21772: ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- I've attached a file the original log file was 90mb so I used
grep -B 2 -A 100 "action_dispatch/request/session.rb" /tmp/yjit_58847.log > /tmp/session_blocks.log
Hopefully that is what you are looking for. -
02:46 PM Bug #21772: ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- It looks like you've hit the same panic as #21565.
Could you try the instructions from https://bugs.ruby-lang.org/issues/21565#note-5 to gather more information? Since you're on 3.4.7, you don't need to patch ruby for the steps there. -
03:32 PM Revision 3831a82d (git): [ruby/json] Revert "Skip test failing with JRuby in CI"
- This reverts commit https://github.com/ruby/json/commit/b7e1734d9ca0.
https://github.com/ruby/json/commit/5793694ee6 -
03:01 PM Revision 4ab45e8f (git): [ruby/psych] bump snakeyaml-engine to 2.10 (jruby)
- https://github.com/ruby/psych/commit/506bf75ab2
-
02:58 PM Revision 965ae7f3 (git): Fix typo in Fiber.[] docs
-
01:38 PM Feature #21773 (Open): Support for setting encoding when a block is passed to `Net::HTTPResponse.read_body`
- Hi everyone,
This feature request could be considered a follow-up to https://bugs.ruby-lang.org/issues/2567. Opting in to automatic detection of the right encoding for the body when passing a block to `read_body` results in an error ... -
01:38 PM Revision b49ff7cc (git): [ruby/timeout] Make Timeout.timeout work in a trap handler on CRuby
- * Fixes https://github.com/ruby/timeout/issues/17
https://github.com/ruby/timeout/commit/1a499a8f96 -
01:38 PM Revision 9865048a (git): [ruby/timeout] Encapsulate adding a timeout Request
- https://github.com/ruby/timeout/commit/cb2ba88fed
-
01:30 PM Bug #21669: Thoroughly implement void value expression check
- https://github.com/ruby/ruby/pull/15498
-
12:15 PM Bug #21669: Thoroughly implement void value expression check
- Discussed this at the dev meeting.
I was convinced that it is very rare to use `return` or other escapes from the begin block *whose result is used* even during debugging.
```
def foo
bar(begin
return 42
1
end)
en... -
01:05 PM Revision c678e1bd (git): [ruby/timeout] Revise Timeout.timeout docs and add a section about `ensure`
- https://github.com/ruby/timeout/commit/7cfa5a6778
-
01:05 PM Revision 46d8e6d9 (git): [ruby/timeout] Reset the interrupt mask when creating the Timeout thread
- * Add tests related to Thread.handle_interrupt
* Fixes https://github.com/ruby/timeout/issues/41
https://github.com/ruby/timeout/commit/a52720e82a -
12:57 PM Bug #21715: Miscompilation on x86-64-v2 due to undefined behavior in search_nonascii in string.c
- For long term, believing the intelligence of the compiler sounds reasonable.
But if we believe the compiler, it doesn't need hand written parallelism. The code can be simplified like
```c
const char *
search_nonascii2(const char ... -
12:17 PM Bug #21723 (Assigned): `binding.irb` raises a LoadError under `bundle exec` when Gemfile contains `path:` or `git:`
-
12:06 PM Feature #8948: Frozen regex
- Here is the code we found in the dev meeting:
https://github.com/ctrochalakis/mongo-ruby-driver/blob/e632eb570d2f42bddc6703c88d3ce43aea6cdfe6/lib/mongo/types/regexp_of_holding.rb#L27-L41
```ruby
class LazyRegexp < Regexp
...
... -
07:48 AM Feature #8948: Frozen regex
- We found some gems inherited from Regexp and used instance variables on instances, so they would be broken if all Regexp objects become frozen. I think it's unacceptable for Ruby 4.0.
Frankly, I don't think freezing the Regexp objects i... -
11:56 AM Revision d6b40320 (git): Append found lib/<file> entries to spec.files to support out-of-place builds
- 10:59 AM Revision 674ddf4b (git): Update default gems list at 6b469b7e40f94f25b50463de2190d5 [ci skip]
-
10:58 AM Revision 6b469b7e (git): [ruby/json] Release 2.18.0
- https://github.com/ruby/json/commit/1cdd2122d5
-
10:53 AM Revision 6ad4e6a2 (git): [ruby/json] Add `allow_control_characters` parsing option
- While it's not allowed by the spec, some parsers like Oj do
accept it, and it can be blocking a transition.
Having this feature can help people migrate.
https://github.com/ruby/json/commit/3459499cb3 -
10:20 AM Bug #19558 (Closed): str.dump.undump crashes when str contains both Unicode and ASCII control characters
- Applied in changeset commit:git|281a000d6669d3fbb1c0a2f940cbb9c7c01732e6.
----------
[Bug #19558] Allow ASCII range to mix with Unicode dump -
10:20 AM Revision 281a000d (git): [Bug #19558] Allow ASCII range to mix with Unicode dump
-
10:12 AM Misc #21690 (Closed): Inconsistent `rb_popcount64()` definition
- Applied in changeset commit:git|dc41cf332613db24af512bc7e959fc9a17d85d59.
----------
[Misc #21690] Sync parser_bits.h from internal/bits.h -
09:44 AM Misc #21690: Inconsistent `rb_popcount64()` definition
- https://github.com/ruby/ruby/pull/15496
-
09:48 AM Bug #21709: Regexp interpolation is inconsistent with String interpolation
- ```ruby
re = /#{"\\p{In_Arabic}".encode("US-ASCII")}\u1234/
# encoding mismatch in dynamic regexp : US-ASCII and UTF-8
```
This behavior looks a bug. -
09:42 AM Revision dc41cf33 (git): [Misc #21690] Sync parser_bits.h from internal/bits.h
-
09:35 AM Bug #21712 (Closed): Prism and parse.y inconsistency in command call with block and `.()`
- Applied in changeset commit:git|c5b51bdd8c69ae038daf80cb227df854ca0110f1.
----------
[Bug #21712] Allow `.()` call for command with block
This commit allows codes like `a b do end.()` and `a b do end&.()`. -
08:57 AM Bug #21712: Prism and parse.y inconsistency in command call with block and `.()`
- `parse.y` should be fixed to adopt this case.
Matz.
-
09:35 AM Revision c5b51bdd (git): [Bug #21712] Allow `.()` call for command with block
- This commit allows codes like `a b do end.()` and `a b do end&.()`.
-
09:18 AM Revision 278a93a1 (git): This change didn't fix the original issue.
- Revert "Use base: with Dir.glob for bundler.gemspec"
This reverts commit 87f0701b6106569a8486c9623dc6b0b32438355c. -
09:00 AM Revision 240e7999 (git): [DOC] Update NEWS for `*selectors` arguments added to `String#strip` etc.
-
08:57 AM Revision 87f0701b (git): Use base: with Dir.glob for bundler.gemspec
-
08:35 AM Feature #21552 (Closed): allow String.strip and similar to take a parameter similar to String.delete
- Applied in changeset commit:git|c76ba839b153805f0498229284fea1a809308dbc.
----------
Allow String#strip etc. to take optional character selectors
[Feature #21552]
Co-Authored-By: Claude <noreply@anthropic.com> -
06:52 AM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- I accept the proposal.
Matz.
-
08:34 AM Revision c76ba839 (git): Allow String#strip etc. to take optional character selectors
- [Feature #21552]
Co-Authored-By: Claude <noreply@anthropic.com> -
07:53 AM Feature #19979: Allow methods to declare that they don't accept a block via `&nil`
- Frankly, I should have designed from the beginning that any method that accepts a block should always take a `&blk` argument, but it is impossible to change that now.
Considering that it is meaningful to explicitly state that a method... -
06:48 AM Bug #21049: Reconsider handling of the numbered parameters and "it" parameter in `Binding#local_variables`
- I'd like to have the following new methods:
* `Binding#implicit_parameters #=> [:_1, :_2, :_3, ...] or [:it]`
* `Binding#implicit_parameter_get(:_1) #=> obj`
* `Binding#implicit_parameter_defined?(:_1) #=> true or false`
Matz.
-
05:47 AM Feature #21704: Expose rb_process_status_new to C extensions
- rb_process_status_new is declared in the PR as follows.
```
/**
* Creates a new instance of Process::Status.
*
* @param[in] pid The process ID.
* @param[in] status The "waitpid status", as returned by waitpid(2). This is NOT ... -
01:28 AM Revision 83e08070 (git): Remove an excess closing bracket
-
12:07 AM Revision c7d56e90 (git): ZJIT: Re-compile ISEQs invalidated by PatchPoint (#15459)
-
12:02 AM Revision 1c29fbec (git): GC_DEBUG_STRESS_TO_CLASS should only be for debug
- I believe this was accidentally left in as part of
2beb3798bac52624c3170138f8ef65869f1da6c0 -
12:01 AM Revision 5828872e (git): Update Ractor warning message
- Although the Ractor API is still experimental and may change, and there
may be some implementation issues, we should no longer say that there
are many.
Hopefully we can remove this warning entirely for Ruby 4.1
12/10/2025
-
10:03 PM Revision b208f46f (git): ZJIT: Don't fold LoadField with negative offsets and use byte_add
- No point doing the manual size unit conversion for add. Sorry, no new
tests since there is no way to generate a LoadField with a negative
offset from ruby code AFAICT. Careful with the `as` casts. -
09:43 PM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- Also in practice you'd probably want to use `sub!` to mutate in place if a big String.
That would avoid a copy, since CRuby doesn't do lazy substrings which don't share the same end. -
09:41 PM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- Eregon (Benoit Daloze) wrote in #note-9:
> but that sounds more like something that could/should be optimized in the regexp engine
To substantiate that:
```
$ ruby -rbenchmark/ips -e 'SPACES = ["\0", *("\t".."\r"), " "].join; TARGE... -
09:34 PM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- This sounds like a lot of complexity for one specific use-case, which already has a good solution with `sub`.
From the benchmarks, `lstrip("\0 \t-\r")` and `sub(/\A[\0\s]+/, "")` are pretty close.
`sub(/[\0\s]+\z/, "")` is slower tha... -
06:28 AM Feature #21552: allow String.strip and similar to take a parameter similar to String.delete
- tr_setup_table_multi() was called twice in String#{strip,strip!}, so I've fixed it: https://github.com/ruby/ruby/pull/15400/commits/c9cb93f201644cd5e2fbbd6e83cf50acb27642de
### Benchmark
https://gist.github.com/shugo/c6367f4139bc2d... -
09:35 PM Revision 029a4817 (git): JITs: Drop cargo and use just rustc for release combo build
- So we don't expose builders to network flakiness which cannot be worked
around using cargo's --offline flag. -
09:35 PM Revision 121d0da0 (git): JITs: Move cargo-specific variables into conditional
-
09:35 PM Revision 1bab2160 (git): ZJIT: For rustc build, remove cargo touch(1) workaround
-
09:35 PM Revision b0ea9070 (git): YJIT: For rustc build, remove cargo touch(1) workaround
-
09:35 PM Revision 96c804de (git): ZJIT: Remove unused includes from zjit.c
- 09:18 PM Revision c8909030 (git): ZJIT: Fold LoadField on frozen objects to constants (#15483)
- * ZJIT: Fold LoadField on frozen objects to constants
When accessing instance variables from frozen objects via attr_reader/
attr_accessor, fold the LoadField instruction to a constant at compile
time. This enables further optimizations... -
09:07 PM Bug #21772: ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- Sure no problem anything else?
```
-- Ruby level backtrace information ----------------------------------------
/home/gearoid/.rvm/gems/ruby-3.4.7@7.2.3/gems/puma-7.1.0/lib/puma/thread_pool.rb:182:in 'block in spawn_thread'
/home... -
08:54 PM Bug #21772: ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- > Backtrace & Logs
Is it possible to share the Ruby backtrace as well? -
08:21 PM Bug #21772 (Closed): ruby: YJIT has panicked StackOpnd(1) should be a heap object, but was ImmSymbol for VALUE(137647867319760)
- I'm getting a YJIT has panicked crash in my rails app locally when a part of my application rapidly uses a gem I have "auto_session_timeout".
If I patch the gem by changing the symbol to a string the error goes away.
``` ruby
... -
08:56 PM Revision ccfd3116 (git): Remove object_id in NEWOBJ tracepoint test
- Generating an object_id for any type other than T_OBJECT (and T_CLASS)
will inevitably allocate an IMEMO/fields objects, which isn't supported
in a NEWOBJ tracepoint.
See: https://bugs.ruby-lang.org/issues/21710#note-23 - 08:30 PM Revision 3640cfe5 (git): ZJIT: Use inline format args (#15482)
-
08:21 PM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- Yeah... Either way, with the object_id now stored in `imemo/fields`, generating an object_id for anything other than `T_OBJECT` will inevitably allocate an IMEMO.
I'll remove the test case. -
08:15 PM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- It's a noble goal, but in my view it's negative to even temporarily support this as it invites new extensions to be badly behaved and misuse these hooks.
-
07:47 PM Bug #21710: Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- > I just don't think we should support this.
I said previously, I generally agree, but the datadog gem is quite popular, so I think we should try to find a short term solution if we can. At least that's what I tried to do. -
07:37 PM Bug #21710 (Open): Segfault when reading object_id after it is set inside RUBY_INTERNAL_EVENT_NEWOBJ
- This continues to be broken (in a way that I hope helps illustrate that this was always unsafe). I think there's two issues.
Since the change was introduced we're regularly seeing failures on CI related to object_id and _id2ref. Here ... -
06:10 PM Revision 330ddccf (git): ubuntu.yml: Add a ruby-bench job without ZJIT (#15480)
-
05:55 PM Bug #15479: Array#reject! modifies literal Array
- Yas
-
05:49 PM Revision 41ee6589 (git): Always treat encoding as TYPEDDATA
- Encodings are RTypedData, not the deprecated RData. Although the
structures are compatible we should use the correct API. -
05:45 PM Revision 1eb10ca3 (git): ZJIT: Exclude failing ruby-bench benchmarks (#15479)
-
04:08 PM Revision ed18a212 (git): ZJIT: Check if shape is too complex before reading ivar by index (#15478)
- This fixes a crash when the new shape after a transition is too complex;
we need to check that it's not complex before trying to read by index. -
11:42 AM Revision 2b66fc76 (git): Fix typos in comment of rb_current_execution_context()
-
10:14 AM Revision 023c6d80 (git): [ruby/json] Add a specific error for unescaped newlines
- It's the most likely control character so it's worth
giving a better error message for it.
https://github.com/ruby/json/commit/1da3fd9233 -
10:06 AM Revision 6777d101 (git): Modernize Monitor TypedData
- Make it embedded and compaction aware.
-
09:30 AM Revision c5608ab4 (git): Monitor: avoid repeated calls to `rb_fiber_current()`
- That call is surprisingly expensive, so trying doing it once
in `#synchronize` and then passing the fiber to enter and exit
saves quite a few cycles. -
09:03 AM Bug #21771: pg-1.6.2 testsuite segfaults in ruby4.0.0dev
- Looks like this segfault is indeed fixed. Thank you!
- 07:09 AM Revision ef4490d6 (git): Update default gems list at e8a55274f202df1cfddc25aa14da34 [ci skip]
-
07:08 AM Revision e8a55274 (git): [ruby/forwardable] v1.4.0
- https://github.com/ruby/forwardable/commit/0257b590c2
-
07:05 AM Bug #21708 (Closed): Ruby 3.4 Forwardable: setter delegations trigger SyntaxError from forwardable/impl.rb
- Applied in changeset commit:git|14ff851185bb8ff399e98b74cc107302a4e08e18.
----------
[ruby/forwardable] Simpler and faster check for the delegation fastpath
Fix: https://github.com/ruby/forwardable/issues/35
[Bug #21708]
Trying to com... -
07:05 AM Revision 14ff8511 (git): [ruby/forwardable] Simpler and faster check for the delegation fastpath
- Fix: https://github.com/ruby/forwardable/issues/35
[Bug #21708]
Trying to compile code to check if a method can use the delegation
fastpath is a bit wasteful and cause `RUPYOPT=-d` to be full of
misleading errors.
It's simpler and fast... -
06:48 AM Revision 375025a3 (git): Fix typo and shadowing
-
06:48 AM Revision 462df17f (git): Attempt to reuse garbage slots in concurrent hash
- This removes all allocations from the find_or_insert loop, which
requires us to start the search over after calling the provided create
function.
In exchange that allows us to assume that all concurrent threads insert
will get the same ... -
06:48 AM Revision 81fbdff8 (git): Use continuation bit in concurrent set
- This refactors the concurrent set to examine and reserve a slot via CAS
with the hash, before then doing the same with the key.
This allows us to use an extra bit from the hash as a "continuation bit"
which marks whether we have ever pr... - 06:44 AM Revision 492b1c73 (git): Update default gems list at 8e87f201cf54b112642ed0421ddabd [ci skip]
-
06:43 AM Revision 8e87f201 (git): [ruby/optparse] v0.8.1
- https://github.com/ruby/optparse/commit/f2e31e81a5
- 06:40 AM Revision a8b7fb7e (git): Update default gems list at 254653db8521618e08aaccaa63efdb [ci skip]
-
06:39 AM Revision 254653db (git): [ruby/win32-registry] v0.1.2
- https://github.com/ruby/win32-registry/commit/2a6ab00f67
-
06:18 AM Revision 6ec5c5f1 (git): [ruby/stringio] [DOC] Doc for StringIO.size
- (https://github.com/ruby/stringio/pull/171)
https://github.com/ruby/stringio/commit/95a111017a -
06:18 AM Revision b4a1f170 (git): [ruby/stringio] [DOC] Tweaks for StringIO#each_line
- (https://github.com/ruby/stringio/pull/165)
Adds to "Position": pos inside a character.
Makes a couple of minor corrections.
---------
https://github.com/ruby/stringio/commit/ff332abafa
Co-authored-by: Sutou Kouhei <kou@cozmixng.org> -
06:17 AM Revision 5bc65db5 (git): [ruby/stringio] [DOC] Tweaks for StringIO#gets
- (https://github.com/ruby/stringio/pull/190)
https://github.com/ruby/stringio/commit/77209fac20 -
06:16 AM Revision f623fcc7 (git): [ruby/stringio] [DOC] Tweaks for StringIO.getbyte
- (https://github.com/ruby/stringio/pull/188)
https://github.com/ruby/stringio/commit/66360ee5f1 -
06:16 AM Revision 668fe011 (git): [ruby/stringio] [DOC] Fix link
- https://github.com/ruby/stringio/commit/e2d24ae8d7
-
06:13 AM Revision 842f91ae (git): [ruby/stringio] [DOC] Tweaks for StringIO#getc
- (https://github.com/ruby/stringio/pull/189)
https://github.com/ruby/stringio/commit/e3d16d30ed -
06:04 AM Revision bbee62ab (git): We don't need to check the latest release of pathname
- Pathname is now embedded class of Ruby
- 05:30 AM Revision 74376fef (git): Update default gems list at 4523a905327d8438f845f5a7582222 [ci skip]
-
05:28 AM Revision 4523a905 (git): [ruby/date] v3.5.1
- https://github.com/ruby/date/commit/1d0aadc295
- 05:23 AM Revision ab80d05f (git): Update default gems list at 5f444cba4741b2ff0e1e95f4a17932 [ci skip]
-
05:22 AM Revision 5f444cba (git): [ruby/ipaddr] v1.2.8
- https://github.com/ruby/ipaddr/commit/93ef50bc04
-
05:18 AM Revision ec862b41 (git): ZJIT: Prohibit ZJIT support with USE_FLONUM=0 (#15471)
- 05:13 AM Revision 238e69d1 (git): Update default gems list at 814f23747b5fd7b0d5fb6cd8e45833 [ci skip]
-
05:12 AM Revision 814f2374 (git): [ruby/resolv] v0.7.0
- https://github.com/ruby/resolv/commit/a0e89bbe48
- 05:09 AM Revision e4786376 (git): Update default gems list at df4fc0f7fcda6c552084ea0638c718 [ci skip]
-
05:08 AM Revision df4fc0f7 (git): [ruby/psych] v5.3.0
- https://github.com/ruby/psych/commit/d8053b0d16
-
03:09 AM Revision 3636277d (git): Add `NUM2PTR` and `PTR2NUM` macros
- These macros have been defined here and there, so collect them.
-
01:23 AM Revision 3bb97e77 (git): `_RUBY_DEBUG_LOG` usable anywhere
- even if `USE_RUBY_DEBUG_LOG=0`.
It becomes `fprintf(stderr, ...)`. -
12:22 AM Revision f9eb0d8d (git): Use `ruby_version_is`
- As the markers for spec/mspec/tool/remove_old_guards.rb.