Project

General

Profile

Activity

From 07/04/2025 to 07/10/2025

07/10/2025

10:57 PM Bug #21505 (Closed): [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
Applied in changeset commit:git|6c66458070e2de45213f473ac30b431ebea81b9b.
----------
Fix rb_eSystemExit raised in Ractor
[Bug #21505]
Previously `Ractor.new { exit }.join` would hang because SystemExit was
special cased.
This commit ...
jhawthorn (John Hawthorn)
10:57 PM Revision 6c664580 (git): Fix rb_eSystemExit raised in Ractor
[Bug #21505]
Previously `Ractor.new { exit }.join` would hang because SystemExit was
special cased.
This commit updates this to take the same path as other exceptions,
which wraps the exception in a Ractor::RemoteError and does not end...
jhawthorn (John Hawthorn)
09:10 PM Revision 470e11a4 (git): ZJIT: Mark Snapshot as having an output
Other instructions use it as an operand and #13814 especially needs it
to have an output for validation.
Max Bernstein
09:10 PM Revision 45be0e99 (git): ZJIT: Validate that each IR instruction appears at most once
Max Bernstein
08:40 PM Revision b1828cbb (git): ZJIT: Implement patch points on BOP redefinition (#13850)
Co-authored-by: Max Bernstein <[email protected]> Takashi Kokubun
07:11 PM Revision 214983bd (git): ZJIT: Add def-use validator via dataflow analysis (#13814)
This PR adds a validator based on dataflow analysis to ZJIT. It checks that all uses are dominated by a GEN-DEF prior.
See issue https://github.com/Shopify/ruby/issues/591
This is especially useful in validating optimizations don't zap...
Ken Jin
07:08 PM Revision 9ab80a74 (git): ZJIT: Avoid optimizing locals on eval (#13840)
* ZJIT: Avoid optimizing locals on eval
* Maintain the local state for eval
Takashi Kokubun
03:56 PM Revision 9d41541b (git): Fix unused variable warnings in default.c in modular GC
The asan and valgrind macros when BUILDING_MODULAR_GC don't use the variables
which could the compiler to emit unused variable warnings.
peterzhu2118 (Peter Zhu)
03:18 PM Revision 1fb4929a (git): Make `rb_enc_autoload_p` atomic
Using `encoding->max_enc_len` as a way to check if the encoding
has been loaded isn't atomic, because it's not atomically set
last.
Intead we can use a dedicated atomic value inside the encoding table.
byroot (Jean Boussier)
02:40 PM Revision 51252ef8 (git): [DOC] Tweaks for String#concat (#13836)
burdettelamar (Burdette Lamar)
02:02 PM Revision a1acba6d (git): [DOC] Tweaks for String#codepoints
burdettelamar (Burdette Lamar)
12:42 PM Revision 800de989 (git): [Bug #19417] Update version guard
nobu (Nobuyoshi Nakada)
12:35 PM Bug #21506 (Closed): Fix timeout in `Addrinfo.getaddrinfo` to actually take effect
Applied in changeset commit:git|cdeb9c4d7020d36f157fde57eb12108c2515f031.
----------
Fix timeout in Addrinfo.getaddrinfo to actually take effect (#13803)
[Bug #21506] Fix timeout in Addrinfo.getaddrinfo to actually take effect
This ch...
Anonymous
12:35 PM Revision cdeb9c4d (git): Fix timeout in Addrinfo.getaddrinfo to actually take effect (#13803)
[Bug #21506] Fix timeout in Addrinfo.getaddrinfo to actually take effect
This change fixes an issue where the timeout option in `Addrinfo.getaddrinfo` was not functioning as expected.
It also addresses a related issue where specifying ...
Misaki Shioi
12:28 PM Revision bd18238a (git): [Bug #19417] Make word prop match join_control ...
... to conform to UTS 18 as mentioned in https://bugs.ruby-lang.org/issues/19417#note-3
https://unicode.org/reports/tr18/#word states word should match join_control chars.
It currently does not:
```ruby
[*0x0..0xD799, *0xE000..0x10FFF...
janosch-x (Janosch Müller)
12:02 PM Feature #21454: "undefined method 'break' for an instance of Binding"
nobu (Nobuyoshi Nakada) wrote in #note-1:
> Use no-dbg.rb with `RUBYOPT=-rno-dbg` when you run without `rdbg`.
> ...
Interesting idea. Assuming that I should request this feature in rdbg project.
> BTW debug.gem supports specifying ...
vo.x (Vit Ondruch)
09:04 AM Feature #21454 (Feedback): "undefined method 'break' for an instance of Binding"
In today's dev meeting, we emphasized that it's important to ensure `binding.break` (or `debugger`) is removed before release, so having it as a no-op is a bad idea.
----
BTW debug.gem supports specifying breakpoints by adding environm...
ko1 (Koichi Sasada)
08:57 AM Feature #21454: "undefined method 'break' for an instance of Binding"
Use no-dbg.rb with `RUBYOPT=-rno-dbg` when you run without `rdbg`.
```ruby
class Binding
def break = nil
end
```
nobu (Nobuyoshi Nakada)
09:39 AM Bug #21503: \p{Word} does not match on \p{Join_Control} while docs say it does
It looks `\p{Word}` is updated in TR#18 Version 15.
https://www.unicode.org/reports/tr18/tr18-15.html
The fix looks good.
naruse (Yui NARUSE)
09:23 AM Bug #21456 (Rejected): IO.close does not work in a rescue IO::TimeoutError block.
dE (dE Techno) wrote:
> not sure what signal it sends, it's undocumented
No signal is sent.
Send a signal by yourself if you want to stop the process.
Since your example invokes a grand child process, add `pgroup` option and send...
nobu (Nobuyoshi Nakada)
08:56 AM Feature #21435 (Rejected): Kernel#then_try as a conditional #then
From my point of view, it doesn't make the code clearer. Besides that, the core Ruby does not provide even `#try`.
Maybe ActiveSupport wants to add this method, but not in the core.
Matz.
matz (Yukihiro Matsumoto)
08:53 AM Bug #21452 (Rejected): ARGS_SPLAT bytecode regression between 3.3 and 3.4
I agree with @jeremyevans0 here. I consider this as an optimization.
Matz.
matz (Yukihiro Matsumoto)
08:51 AM Feature #21386: Introduce `Enumerable#join_map`
FWIW, this function is called `mapconcat` in Emacs: https://www.gnu.org/software/emacs/manual/html_node/elisp/Mapping-Functions.html#index-mapconcat
I once wanted this when I implemented shelljoin() and chose to just call map and join...
knu (Akinori MUSHA)
08:38 AM Feature #21386 (Rejected): Introduce `Enumerable#join_map`
I reject this proposal. Simply combine join and map at the moment.
I hope JIT inlining will remove intermediate objects in the future.
Matz.
matz (Yukihiro Matsumoto)
02:54 AM Feature #21386: Introduce `Enumerable#join_map`
https://github.com/ruby/dev-meeting-log/blob/master/2019/DevMeeting-2019-03-11.md
> [Feature #15323] Proposal: Add Enumerable#filter_map
> ...
That's why I was against it 🤦
mame (Yusuke Endoh)
08:51 AM Feature #20205: Enable `frozen_string_literal` by default
Probably we would have Ruby4.0 in 2025, but I am not going to make frozen-string-literal default this year.
Matz.
matz (Yukihiro Matsumoto)
08:45 AM Feature #21455 (Rejected): Add a block argument to Array#join
It's fundamentally `join_map` we have rejected. Array#join should join, not mapping.
We are not going to add every enumerable method combined with map. `filter_map` is an exception.
Matz.
matz (Yukihiro Matsumoto)
08:33 AM Feature #4539 (Rejected): Array#zip_with
I don't think it's worth adding a new method.
Matz.
matz (Yukihiro Matsumoto)
08:30 AM Feature #21346: Introduce `String#ensure_suffix`
I don't think other candidates are better. Probably typical usage `str.ensure_suffix(".rb")` helps you understand the behavior.
Matz.
matz (Yukihiro Matsumoto)
08:19 AM Feature #21039: Ractor.make_shareable breaks block semantics (seeing updated captured variables) of existing blocks
I'd like to have `Ractor.shareble_proc` and `Ractor.sharable_lambda`. See the agenda from 20250710 developer meeting.
Matz.
matz (Yukihiro Matsumoto)
08:17 AM Feature #21459: Add Set C-API
I accept the proposal.
Matz.
matz (Yukihiro Matsumoto)
08:15 AM Feature #21442 (Assigned): Make tsort to bundled gems
I got the approval from @akr at https://bugs.ruby-lang.org/issues/21399
I added warning for this at commit:65a0f46880ecb13994d3011b7a95ecbc5c61c5a0
hsbt (Hiroshi SHIBATA)
07:48 AM Revision 65a0f468 (git): Warn to use tsort for Ruby 3.6 that will be released at 2026
hsbt (Hiroshi SHIBATA)
06:45 AM Revision bec1ff62 (git): Sort `COMMONOBJS` alphabetically
nobu (Nobuyoshi Nakada)
06:40 AM Revision 8cc109a8 (git): [rubygems/rubygems] Update vendored resolv to 0.6.2
https://github.com/rubygems/rubygems/commit/afbbc02763 hsbt (Hiroshi SHIBATA)
05:16 AM Feature #17473: Make Pathname to embedded class of Ruby
Regarding the original proposal, I'd accept making Pathname built-in, considering its wide accepting among the community, especially with Rails.
Whether to keep the built-in Pathname in the C implementation or implement it in Ruby is le...
matz (Yukihiro Matsumoto)
03:44 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
We know that signal handlers run in a trap context, but are there other ways this can happen? I was under the impression GC finalizers also run in a pseudo-trap context, preventing the use of Mutex too. Of course, using a mutex during GC... ioquatix (Samuel Williams)
12:28 AM Revision 581da51c (git): Fix whitespace on some RB_VM_LOCKING calls
jhawthorn (John Hawthorn)

07/09/2025

11:03 PM Revision f5085c70 (git): ZJIT: Mark profiled objects when marking ISEQ (#13784)
Takashi Kokubun
09:51 PM Revision 1e3d24a0 (git): [ruby/prism] Accept a newline after the defined? keyword [Backport #21197] (#13327)
* [ruby/prism] Accept a newline after the defined? keyword
[Bug #21197]
https://github.com/ruby/prism/commit/22be955ce9
* Fix a compilation error
Co-authored-by: Stan Lo <[email protected]>
---------
Co-authored-by: Kevin Newton...
Takashi Kokubun
09:50 PM Revision 1df94aaf (git): ZJIT: Name side-exit test cases correctly
Stan Lo
09:50 PM Revision e2a81c73 (git): ZJIT: Optimize `opt_and` and `opt_or` instructions for Fixnum
Stan Lo
09:50 PM Revision 10b582da (git): ZJIT: Profile `opt_and` and `opt_or` instructions
Stan Lo
09:01 PM Bug #21505: [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
I opened https://github.com/ruby/ruby/pull/13838 which fixes this
```
./miniruby -e 'Ractor.new { exit }.join'
-e:1: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implem...
jhawthorn (John Hawthorn)
06:42 PM Revision b146eae3 (git): [DOC] Tweaks for String#clear
burdettelamar (Burdette Lamar)
06:41 PM Revision 6c77a0c6 (git): [DOC] Tweaks for String#chop
burdettelamar (Burdette Lamar)
06:41 PM Revision 3baed2ea (git): [DOC] Tweaks for String#chr
burdettelamar (Burdette Lamar)
06:41 PM Feature #21386: Introduce `Enumerable#join_map`
I am against this.
Ergonomics: Adding a special "X_Y" method for every common pattern of "X followed by Y" is truly horrible for the ergonomics of the language. It only multiplies the number of useless details the programmer should reme...
Dan0042 (Daniel DeLorme)
05:38 PM Revision 94e702b0 (git): [DOC] Tweaks for String#chop
burdettelamar (Burdette Lamar)
05:38 PM Revision 54f28c1d (git): Avoid concurrently overflowing of shape_id
Previously it was possible for two atomic increments of next_shape_id
running concurrently to overflow MAX_SHAPE_ID. For this reason we need
to do the test atomically with the allocation in shape_alloc returning
NULL.
This avoids overfl...
jhawthorn (John Hawthorn)
05:38 PM Revision cfc006d4 (git): Always use atomics to get the shape count
When sharing between threads we need both atomic reads and writes. We
probably didn't need to use this in some cases (where we weren't running
in multi-ractor mode) but I think it's best to be consistent.
jhawthorn (John Hawthorn)
05:38 PM Revision 5dfd86cf (git): Fix off-by-one in shape_tree_mark/shape_tree_compact
This was using < so subtract one from the last shape id would have us
miss the last inserted shape. I think this is unlikely to have caused
issues because I don't think the newest shape will ever have edges.
We do need to use `- 1` beca...
jhawthorn (John Hawthorn)
04:40 PM Revision fd8a67fc (git): Re-ordered vcpkg related steps. It may be affected with VsDevCmd.bat
hsbt (Hiroshi SHIBATA)
04:40 PM Revision 942d64b4 (git): Use the latest version of Visual Studio with windows-2022 runner image
hsbt (Hiroshi SHIBATA)
03:54 PM Revision 1de0b28c (git): [DOC] Tweaks for String#chomp
burdettelamar (Burdette Lamar)
03:54 PM Revision f17e5c4d (git): [DOC] Tweaks for String#chomp!
burdettelamar (Burdette Lamar)
01:11 PM Revision 08738779 (git): Update to ruby/spec@ed254ba
andrykonchin (Andrew Konchin)
11:18 AM Revision ba246c5a (git): [ruby/io-wait] Revert "Fix dependency for ruby 2.6"
This reverts commit https://github.com/ruby/io-wait/commit/2eb3841e9c8f.
Ruby 2.6 support has been dropped.
https://github.com/ruby/io-wait/commit/bcc343683e
nobu (Nobuyoshi Nakada)
10:54 AM Bug #21506 (Closed): Fix timeout in `Addrinfo.getaddrinfo` to actually take effect
### Description
This change fixes an issue where the timeout option in `Addrinfo.getaddrinfo` was not functioning as expected.
https://github.com/ruby/ruby/pull/13803/files
It also addresses a related issue where specifying `fast_fa...
shioimm (Misaki Shioi)
10:40 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
> Yes, for example gems like webservers like Puma set trap handlers.
The trap handler code that has already been written and published probably does not use `Mutex#lock`, so it is not related to this problem. Such benign trap handlers...
mame (Yusuke Endoh)
08:37 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
mame (Yusuke Endoh) wrote in #note-25:
> Indeed, creating a new thread for each signal arrival is extremely simple.
It feels like a hack though and it's a pretty high cost to create a new Thread for every signal.
If this was the off...
Eregon (Benoit Daloze)
12:28 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
> Run signal handlers not on the main thread but another thread.
While I don't have a strong opinion on this, I personally feel this approach makes more sense.
However, ko1 said that users can just write this explicitly themselves....
mame (Yusuke Endoh)
10:34 AM Revision 0c1c3ffa (git): [ruby/io-wait] Revert https://github.com/ruby/io-wait/pull/9 "Make
the gem a noop on Rubies older than
2.6"
This reverts commit https://github.com/ruby/io-wait/commit/75fcb74c327f.
The version that does nothing with pre-ruby 2.6 has already been
released, so there is no longer need to consider older r...
nobu (Nobuyoshi Nakada)
10:34 AM Revision ddeefa2e (git): [ruby/io-wait] Bump up the required ruby version
io-wait became a default gem at ruby 3.0.
Even it can be installed on earlier versions, but the standard library
will be loaded instead of the installed gem.
https://github.com/ruby/io-wait/commit/15b96736cd
nobu (Nobuyoshi Nakada)
08:56 AM Revision 25afe7ef (git): Rename variables to suit each method
nobu (Nobuyoshi Nakada)
08:56 AM Revision cd10afed (git): Removed a left over from c71a60c1dd02
0a0eb2807ed7 has already replaced most of that code. nobu (Nobuyoshi Nakada)
08:12 AM Bug #21396: Set#initialize should call Set#add on items passed in
Regarding thread-safety, for `add?` the only thing is the return value where the old implementation might potentially return the Set even though the element was added concurrently.
It's still thread-safe in that it doesn't corrupt the S...
Eregon (Benoit Daloze)
06:35 AM Bug #21396: Set#initialize should call Set#add on items passed in
knu (Akinori MUSHA) wrote in #note-10:
> Jeremy, thanks for the reply.
> ...
I think that is a reasonable compromise. It keeps the advantages of core Set when not subclassed, and keeps backwards compatibility for subclasses (at least,...
jeremyevans0 (Jeremy Evans)
04:57 AM Bug #21396: Set#initialize should call Set#add on items passed in
Jeremy, thanks for the reply.
Your point about thread-safety is well taken. It is an important advantage. As a possible compromise, we could keep the C backing and switch the behavior of methods when the class is subclassed in excha...
knu (Akinori MUSHA)
12:41 AM Bug #21396: Set#initialize should call Set#add on items passed in
knu (Akinori MUSHA) wrote in #note-8:
> Considering the feedback we've received about compatibility in the new experimental Set implementation, it may be in our best interest to revert to the pure-Ruby version.
> ...
I don't think reve...
jeremyevans0 (Jeremy Evans)
06:59 AM Revision 3f0e0d5c (git): [ruby/io-nonblock] Bump up the required ruby version
io-nonblock became a default gem at ruby 3.0.
Even it can be installed on earlier versions, but the standard library
will be loaded instead of the installed gem.
https://github.com/ruby/io-nonblock/commit/c86d0d37af
nobu (Nobuyoshi Nakada)
04:48 AM Revision 4ed27575 (git): [rubygems/rubygems] Update gemspec based on provided github username when exists
* Conditionally set changelog_url if gh username passed
and enabled
* conditionally set homepage, source code uri, homepage uri when gh
username passed in
* update documentation to say username will also be used for gemspec file
https...
Sweta Sanghavi
04:48 AM Revision 3feba181 (git): [rubygems/rubygems] Let s3_uri_signer accept the HTTP method
https://github.com/rubygems/rubygems/commit/35fc7f9547 Peteris Rudzusiks
04:48 AM Revision 5d880b75 (git): [rubygems/rubygems] Correctly sign S3 HEAD requests
We sometimes send HEAD requests. The s3_uri_signer.rb code allways assumed GETs.
This lead to consistently getting 403 responses back from S3. Recently, S3
attempted to change the behaviour of how 403s are handled when TCP connections
ar...
Peteris Rudzusiks
04:48 AM Revision af6012b9 (git): [rubygems/rubygems] Fix date format in S3 URI signer
%M is minute of the hour.
%m is month of year.
We want the former, not the latter.
https://github.com/rubygems/rubygems/commit/d7ca3fa279
Peteris Rudzusiks
04:48 AM Revision c6da0197 (git): [rubygems/rubygems] Add blank line after every question
To try make output a bit less messy.
https://github.com/rubygems/rubygems/commit/92c8bc6769
deivid (David Rodríguez)
04:48 AM Revision 9942ff7c (git): [rubygems/rubygems] Use shorter questions as prompts in `bundle gem`
If we use long explanations as prompts, sometimes the prompt gets
printed twice due to a (I think) reline/readline bug.
https://github.com/rubygems/rubygems/commit/987e0dfa90
deivid (David Rodríguez)
04:48 AM Revision 9b0f9f81 (git): [rubygems/rubygems] Reword MIT explanation to make sense after reordering
Previous wording assumed explanation was displayed after the question,
not before.
https://github.com/rubygems/rubygems/commit/04eb3430ba
deivid (David Rodríguez)
03:56 AM Revision e9cd3060 (git): ZJIT: Support guarding *Exact types (#13797)
ZJIT already can generate guard type instructions for *Exact types.
For example:
```
def test(strings)
strings.map do |string|
string.bytesize
end
end
test(["foo", "bar"])
```
```
HIR:
fn block in test:
bb0(v0:BasicObject, v1...
Stan Lo

07/08/2025

09:26 PM Revision 5aaedc05 (git): Re-ordered vcpkg related steps. It may be affected with VsDevCmd.bat
hsbt (Hiroshi SHIBATA)
09:26 PM Revision 80bf0744 (git): Use the latest version of Visual Studio with windows-2022 runner image
hsbt (Hiroshi SHIBATA)
09:18 PM Revision 9f00b887 (git): Bump up resolv-0.2.3 for Ruby 3.2
hsbt (Hiroshi SHIBATA)
09:12 PM Bug #21505: [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
Yeah fair enough. It's probably not as complicated to fix as I initially thought. luke-gru (Luke Gruber)
08:54 PM Bug #21505: [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
`Kernel#exit` is basically just `raise SystemExit`, does it mean any exception in a Ractor hangs?
IOW, I don't think it should be disallowed because `exit` is just an Exception.
Eregon (Benoit Daloze)
07:58 PM Bug #21505 (Closed): [Ractor] calling exit from non-main ractor will hang if main ractor waits on it
```ruby
r = Ractor.new do
exit
end
r.join # hangs
```
Should `exit` be allowed in ractors? It would be easiest to disallow, as the code might be tricky if we allow it.
luke-gru (Luke Gruber)
08:52 PM Feature #21501: Include native filenames in backtraces as sources for native methods
ivoanjo (Ivo Anjo) wrote in #note-6:
> I must admit I'm a bit torn on this. As I mentioned above, often the `.c` files are not kept around in the filesystem, whereas in my proposed version I'm showing the exact file (including path) tha...
Eregon (Benoit Daloze)
08:41 PM Feature #21501: Include native filenames in backtraces as sources for native methods
matz (Yukihiro Matsumoto) wrote in #note-5:
> In my opinion, the typical Ruby user is not interested in line numbers in C source code or names of extension libraries.
I think most are or would not mind, because it is always valuable ...
Eregon (Benoit Daloze)
08:33 AM Feature #21501: Include native filenames in backtraces as sources for native methods
For me the usefulness is in understanding both what and where something is happening even without needing to go into the source code.
E.g. Let's consider that native extensions didn't exist. If I get an error in production and I see a...
ivoanjo (Ivo Anjo)
03:04 AM Feature #21501: Include native filenames in backtraces as sources for native methods
I didn't quite understand what makes you happy with this proposal. Could you explain a little more how it would be useful? In my opinion, the typical Ruby user is not interested in line numbers in C source code or names of extension libr... matz (Yukihiro Matsumoto)
08:33 PM Bug #19473: can't be called from trap context (ThreadError) is too limiting
OK, thank you all 3 for clarifying.
I understand that point of view, even though I don't fully agree with it.
One problem is this limitation makes it impossible to support `Timeout.timeout` in `trap`, see https://github.com/ruby/time...
Eregon (Benoit Daloze)
11:24 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
Locking multiple mutex with a fixed order is considered to be deadlock-safe, but permitting mutex in signal_handler, I think fixed order locking is hard or impossible.
The code below looks deadlock-safe, but it's not.
~~~ruby
trap(:...
tompng (tomoya ishida)
08:38 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
If `Mutex#lock` were permitted inside a trap handler, a program like the following would have a very hard-to-reproduce race condition bug.
```ruby
m = Mutex.new
trap(:INT) { m.synchronize { p :signalled } }
while true
sleep ...
mame (Yusuke Endoh)
05:10 AM Bug #19473: can't be called from trap context (ThreadError) is too limiting
Eregon (Benoit Daloze) wrote in #note-20:
> I think a simple way to look at this issue is to analyze all cases:
> ...
In most cases, (1) occurs, so it is difficult to notice the possibility of (2).
With the current behavior, it is pos...
ko1 (Koichi Sasada)
07:57 PM Revision c691095f (git): ZJIT: Use BitSet in HIR
tekknolagi (Maxwell Bernstein)
07:57 PM Revision e59f404b (git): ZJIT: Add a BitSet type
tekknolagi (Maxwell Bernstein)
07:51 PM Revision 342ada15 (git): ZJIT: Use nil? optimization to test guard generation against different types
Stan Lo
07:51 PM Revision 79915e6f (git): ZJIT: Profile `nil?` calls
This allows ZJIT to profile `nil?` calls and create type guards for
its receiver.
- Add `zjit_profile` to `opt_nil_p` insn
- Start profiling `opt_nil_p` calls
- Use `runtime_exact_ruby_class` instead of `exact_ruby_class` to determine
...
Stan Lo
06:50 PM Bug #21504 (Open): [Ractor] Process.waitpid blocks ractor, new NT doesn't pick up other ractors
The following code hangs when run with `RUBY_MAX_CPU=2 make run`:
Note: `RUBY_MAX_CPU` is set to 2 so that only 1 non-main ractor can run at once.
test.rb:
```ruby
rs = []
2.times do |i|
rs << Ractor.new(i) do |i|
if i =...
luke-gru (Luke Gruber)
05:26 PM Revision b1604708 (git): [DOC] Tweaks for String#chars
burdettelamar (Burdette Lamar)
05:26 PM Revision 14971e75 (git): [DOC] Tweaks for String#center
burdettelamar (Burdette Lamar)
04:32 PM Revision 5cd408a5 (git): Bump up resolv-0.6.2 for Ruby 3.4 (#13818)
hsbt (Hiroshi SHIBATA)
04:28 PM Revision 9e4157a0 (git): ZJIT: Make type definition code more consistent
Stan Lo
04:28 PM Revision af892c1b (git): ZJIT: More accurately model Class types
Stan Lo
04:28 PM Revision 6c200828 (git): ZJIT: Support inference of ModuleExact type
Stan Lo
03:10 PM Bug #21375: Set[] does not call #initialize
I'm leaning toward making Set subclass-friendly again. That's how I've always wanted Set to be (unlike Array and Hash), and the feedback shows that there are real users and use cases that share and rely on this concept, so we shouldn't ... knu (Akinori MUSHA)
02:57 PM Bug #21396: Set#initialize should call Set#add on items passed in
Considering the feedback we've received about compatibility in the new experimental Set implementation, it may be in our best interest to revert to the pure-Ruby version.
If improving performance and reducing memory footprint remain c...
knu (Akinori MUSHA)
02:34 PM Bug #21029: Prism behavior for `defined? (;x)` differs
@S_H_ I agree, I think the overhead is not worth it in this case and we should pretend the `;` do not exist on both cases. kddnewton (Kevin Newton)
02:23 PM Bug #21029: Prism behavior for `defined? (;x)` differs
I've fixed that `defined? (x;)` returns an `expression` when using parse.y.
https://github.com/ruby/ruby/pull/13821
However, I have a little skeptical about whether this change is a good idea. If any other good suggestions, I would app...
S_H_ (Shun Hiraoka)
10:30 AM Revision f5acefca (git): [ruby/uri] Prefer dedicated assertion methods
https://github.com/ruby/uri/commit/d79b3f5b94 nobu (Nobuyoshi Nakada)
10:00 AM Revision 100c0430 (git): [ruby/etc] Prefer dedicated assertions
https://github.com/ruby/etc/commit/9caddede76 nobu (Nobuyoshi Nakada)
09:25 AM Revision 7ce4db84 (git): [ruby/delegate] Prefer dedicated assertions
https://github.com/ruby/delegate/commit/5ee4189537 nobu (Nobuyoshi Nakada)
07:52 AM Feature #21455: Add a block argument to Array#join
I have a different view on this proposal.
If `Array#join` were to accept a block, I would expect its behavior to relate directly to the "join" action itself, not the transformation of each element (which is the responsibility of `map`...
mame (Yusuke Endoh)
07:26 AM Revision c913a635 (git): Update default gems list at b9782ab8932f9fb6a24a0522c579ca [ci skip]
git[bot]
07:25 AM Revision b9782ab8 (git): [ruby/resolv] v0.6.2
https://github.com/ruby/resolv/commit/a28aaed4cb hsbt (Hiroshi SHIBATA)
07:25 AM Revision 9aa0300d (git): [ruby/resolv] Limit decompressed name length
RFC 1035 specifies the 255-octet maximum name length. This change set
checks the limit.
https://github.com/ruby/resolv/commit/4c2f71b5e8
mame (Yusuke Endoh)
06:36 AM Revision 680383c6 (git): [ruby/tsort] Exclude gemspec and git-related files
https://github.com/ruby/tsort/commit/bf2e3a8695 nobu (Nobuyoshi Nakada)
06:36 AM Revision 51de7c75 (git): [ruby/tsort] Use git magic signatures to exclude files
https://github.com/ruby/tsort/commit/ab55dcb7f3 nobu (Nobuyoshi Nakada)
06:11 AM Revision 75786557 (git): [ruby/tsort] [DOC] Document constants
https://github.com/ruby/tsort/commit/1d1711ad23 nobu (Nobuyoshi Nakada)
05:37 AM Feature #21262 (Closed): Proposal: `Ractor::Port`
https://github.com/ruby/dev-meeting-log/blob/master/2025/DevMeeting-2025-06-05.md#feature-21262-proposal-ractorport
> matz: go ahead. I agree to delete Ractor#take.
ko1 (Koichi Sasada)
05:36 AM Bug #21362 (Assigned): Namespace: Inline method caches poisoned with builtins
mame (Yusuke Endoh)
02:12 AM Bug #21503: \p{Word} does not match on \p{Join_Control} while docs say it does
There is already a PR for that: https://github.com/ruby/ruby/pull/7711
Can you take a look? @duerst @naruse
mame (Yusuke Endoh)
12:11 AM Feature #20405: Inline comments
I like Marco's proposal, but I wonder how much code out there could potentially break. pabloh (Pablo Herrero)

07/07/2025

11:46 PM Revision e0841a79 (git): ZJIT: Fix Rust warnings (#13813)
Stan Lo
11:32 PM Revision 0239809a (git): Remove test/.excludes/_appveyor
We don't run AppVeyor anymore, so we shouldn't need this. k0kubun (Takashi Kokubun)
09:45 PM Feature #21501: Include native filenames in backtraces as sources for native methods
It seems nice, but I think it would be even more helpful to show lines in C files.
I think this could be achieved by defining `rb_define_method` as a macro using `__FILE__` and `__LINE__` and that should be perfectly portable (and doesn...
Eregon (Benoit Daloze)
07:58 AM Feature #21501: Include native filenames in backtraces as sources for native methods
> I don't think it will need such platform specific code.
> ...
I'm thinking that in this case it would only work with methods defined when the extension gets loaded (e.g. inside `require_internal`), not later.
Having said that, thos...
ivoanjo (Ivo Anjo)
03:45 AM Feature #21501: Include native filenames in backtraces as sources for native methods
I don't think it will need such platform specific code.
Probably it would be possible by:
* in `require_internal`, store the loading path on `struct rb_ext_config`.
* in `setup_method_cfunc_struct`, copy the path to `rb_method_cfunc_t`.
...
nobu (Nobuyoshi Nakada)
07:14 PM Revision e9d7e105 (git): [DOC] Tweaks for String#casecmp? (#13810)
burdettelamar (Burdette Lamar)
07:10 PM Revision c2c0c220 (git): [DOC] Tweaks for String#casecmp
burdettelamar (Burdette Lamar)
06:39 PM Bug #21503: \p{Word} does not match on \p{Join_Control} while docs say it does
What I mean is that the current implementation of `\p{Word}` does not seem to match `\p{Join_Control}` even though it should and it also says so in the docs procmarco (Marco Concetto Rudilosso)
06:02 PM Bug #21503 (Closed): \p{Word} does not match on \p{Join_Control} while docs say it does
in the [docs](https://ruby-doc.org/3.4.1/Regexp.html#:~:text=/%5Cp%7B-,Word,-%7D/%3A%20A%20member) it is mentioned that `\p{Word}` matches the equivalent of: `[\p{M}\p{Nd}\p{Pc}\p{Alpha}\p{Join_Control}]` as it's also defined in the [uni... procmarco (Marco Concetto Rudilosso)
06:26 PM Revision 1f024cfd (git): ZJIT: Add opnds macro for Vec<InsnId> to Vec<Opnd> (#13805)
Along the same lines as the `opnd` macro we already have, but for a
`Vec<InsnId>` instead of a single `InsnId`.
This gets a few for loops and `jit.get_opnd` calls out of the `gen_`
functions.
dodecadaniel (Daniel Colson)
03:45 PM Revision c1937480 (git): ZJIT: Add a simple HIR validator (#13780)
This PR adds a simple validator for ZJIT's HIR.
See issue https://github.com/Shopify/ruby/issues/591
Ken Jin
01:12 PM Revision 0bb44f29 (git): Rename `ractor_safe_set` into `concurrent_set`
There's nothing ractor related in them, and the classic terminology
for these sort of data structures is `concurrent-*`, e.g.
concurrent hash.
byroot (Jean Boussier)
01:03 PM Revision 0604d0c9 (git): [DOC] Tweaks for String#capitalize!
burdettelamar (Burdette Lamar)
01:02 PM Revision 987b5bf9 (git): [DOC] Tweaks for String#capitalize
burdettelamar (Burdette Lamar)
10:44 AM Revision 482f4cad (git): Autoload encodings on the main ractor
None of the datastructures involved in the require process are
safe to call on a secondary ractor, however when autoloading
encodings, we do so from the current ractor.
So all sorts of corruption can happen when using an autoloaded
enco...
byroot (Jean Boussier)
06:12 AM Revision 002d7464 (git): ZJIT: Avoid double negative in Mem debug
Prior to this commit the debug output for negative offsets would look
like:
```
Mem64[Reg(3) - -8
```
That makes it look like we're adding instead of subtracting. After this
commit we'll print:
```
Mem64[Reg(3) - 8
```
dodecadaniel (Daniel Colson)
02:53 AM Revision d0fdbef4 (git): [ruby/json] Improve consistency of code style
https://github.com/ruby/json/commit/a497c71960 byroot (Jean Boussier)
02:53 AM Revision e1d09ffe (git): [rubygems/rubygems] Update SPDX license list as of 2025-07-01
https://github.com/rubygems/rubygems/commit/56b55a198a License Update
02:53 AM Revision 3c552881 (git): [rubygems/rubygems] Document that `global_gem_cache` also caches compiled extensions
https://github.com/rubygems/rubygems/commit/265f718be7 deivid (David Rodríguez)
02:53 AM Revision 3eeffea2 (git): [rubygems/rubygems] Improve sentence
"locally to the installing Ruby installation" felt a bit confusing.
https://github.com/rubygems/rubygems/commit/c950720719
deivid (David Rodríguez)
02:53 AM Revision 6a580896 (git): [rubygems/rubygems] Stop allowing calling `#gem` on random objects
https://github.com/rubygems/rubygems/commit/4b8570ae15 deivid (David Rodríguez)
02:53 AM Revision 845e878f (git): [rubygems/rubygems] Add `default_cli_command` documentation
I suspect most experienced users won't like the change in defaults, so
document the setting to toggle back the current default.
https://github.com/rubygems/rubygems/commit/93e2e2bef9
deivid (David Rodríguez)
02:53 AM Revision cd3389e5 (git): [rubygems/rubygems] Cancel `path_relative_to_cwd` change
It only affected the `--path` flag which is actually getting removed, so
I don't think it makes sense to make such change. The current behavior
is reasonable and I tried to codify it with a few more specs.
https://github.com/rubygems/ru...
deivid (David Rodríguez)
02:53 AM Revision 5fa484a4 (git): [rubygems/rubygems] Move specs independent of gem name out of shared examples
And rename the shared examples to "paths dependent on gem name".
https://github.com/rubygems/rubygems/commit/cdcc8ba92a
deivid (David Rodríguez)
02:53 AM Revision 6d696fa3 (git): [rubygems/rubygems] Move specs independent from gem_name out of "generating a gem" shared specs
So that they don't run repeatedly.
https://github.com/rubygems/rubygems/commit/1f65e879f4
deivid (David Rodríguez)
02:53 AM Revision fab1323a (git): [rubygems/rubygems] Remove unnecessary nesting
https://github.com/rubygems/rubygems/commit/eac831a1b7 deivid (David Rodríguez)
02:53 AM Revision e7f11ecc (git): [rubygems/rubygems] Actually run "generating a gem" shared examples for the more standard name
They were only being run for "edge case" names, yet it tests all kind of
things about generation.
https://github.com/rubygems/rubygems/commit/3e9d805eea
deivid (David Rodríguez)
02:53 AM Revision 8a802f7e (git): [rubygems/rubygems] Fix assertions to not depend on specific gem name
https://github.com/rubygems/rubygems/commit/27a4af859e deivid (David Rodríguez)
02:53 AM Revision e95adbfa (git): [rubygems/rubygems] Remove unnecessary nesting from standalone specs
Originally, all the specs in this file were put inside a shared examples
block, and since then all specs were run only changing the cwd (either
from root, or a subdirectory).
This was in https://github.com/rubygems/rubygems/commit/d7291...
deivid (David Rodríguez)
02:53 AM Revision 9918ca16 (git): [rubygems/rubygems] Remove `default_install_uses_path` setting
The previous default can already be configured with `bundle config
path.system true`.
https://github.com/rubygems/rubygems/commit/cb483b79db
deivid (David Rodríguez)
02:52 AM Revision f609d339 (git): [rubygems/rubygems] Remove unnecessary feature flag check
This spec now only runs in Bundler 2 mode.
https://github.com/rubygems/rubygems/commit/f52cb240ca
deivid (David Rodríguez)
02:52 AM Revision fef00519 (git): [rubygems/rubygems] Remove `auto_clean_without_path` setting
There already different ways of toggling off this behavior, like setting
`bundle config clean false`, or configuring Bundler to install to system
gems with `bundle config path.system true`.
https://github.com/rubygems/rubygems/commit/6d...
deivid (David Rodríguez)

07/06/2025

05:20 PM Bug #21502: Segfault with 3.2.8 with frida gem
You just beat me to it - thanks Jeremy. MatzFan (Brian Cohen)
05:19 PM Bug #21502 (Closed): Segfault with 3.2.8 with frida gem
Reading https://github.com/hakivvi/frida-ruby/issues/2#issuecomment-3042173245, it looks like it was a bug in the gem that got fixed. jeremyevans0 (Jeremy Evans)
01:14 PM Bug #21502: Segfault with 3.2.8 with frida gem
Last good release running this code was 3.2.4. Segfault observed in 3.2.5 onwards - see my comment on the gem maintainer's page: https://github.com/hakivvi/frida-ruby/issues/2#issuecomment-3041319068 MatzFan (Brian Cohen)
12:44 PM Bug #21502 (Closed): Segfault with 3.2.8 with frida gem
I've just seen a segfault executing the following code in irb with the frida gem:
``` shell
$ rbenv versions
* 3.2.8 (set by /home/me/.rbenv/version)
$ gem install frida
Fetching frida-0.1.1.gem
Building native extensions. This c...
MatzFan (Brian Cohen)
07:04 AM Revision 4d7e6220 (git): Update bundled gems list as of 2025-07-06
git[bot]

07/05/2025

10:00 PM Feature #21501 (Open): Include native filenames in backtraces as sources for native methods
Consider this example:
```ruby
require 'bigdecimal'
BigDecimal.singleton_class.prepend(
Module.new do
def save_rounding_mode
super
end
end
)
[:example].each do
BigDecimal.save_rounding_mode do
pu...
ivoanjo (Ivo Anjo)
05:39 PM Feature #21386: Introduce `Enumerable#join_map`
nobu (Nobuyoshi Nakada) wrote in #note-4:
> This code would show the difference more clearly.
> ...
Hmm. I missed considering that behavior. In this example though, just the `map` would return wrapped arrays:
```ruby
[[1,2],3].map {|n|[n...
[email protected] (Prateek Choudhary)
02:27 PM Feature #21386: Introduce `Enumerable#join_map`
My expectation is that join_map would behave like map + join matheusrich (Matheus Richard)
07:57 AM Feature #21386: Introduce `Enumerable#join_map`
This code would show the difference more clearly.
```ruby
[[1,2],3].map {|n|[n]}.join("|") #=> "1|2|3"
[[1,2],3].join_map("|") {|n|[n]} #=> "[[1, 2]]|[3]"
```
nobu (Nobuyoshi Nakada)
07:50 AM Feature #21386: Introduce `Enumerable#join_map`
[email protected] (Prateek Choudhary) wrote in #note-2:
> PR: https://github.com/ruby/ruby/pull/13792
This difference is intentional?
```ruby
[1,2,3].map {|n|[n]}.join(",") #=> "1,2,3"
[1,2,3].join_map(",") {|n|[n]} #=> "[1]...
nobu (Nobuyoshi Nakada)
06:42 AM Feature #21386: Introduce `Enumerable#join_map`
PR: https://github.com/ruby/ruby/pull/13792 [email protected] (Prateek Choudhary)
02:03 PM Revision b6817392 (git): [ruby/openssl] pkey/ec: avoid calling SYM2ID() on user-supplied objects
Compare by the VALUE value instead of ID. Calling SYM2ID() on a dynamic
symbol will pin a permanent ID.
These methods only accept known static symbols, and passing anything
else is an incorrect usage that results in an exception. Noneth...
rhenium (Kazuki Yamaguchi)
10:38 AM Revision ad7d75c9 (git): Remove LIKELY macro for Universal Parser
Ruby Parser not used LIKELY macro.
So, can remove it.
S_H_ (Shun Hiraoka)

07/04/2025

09:54 PM Revision 365317f6 (git): Fix wrong GENIV WB on too_complex Ractor traversal
WBCHECK ERROR: Missed write barrier detected!
Parent object: 0x7c4a5f1f66c0 (wb_protected: true)
rb_obj_info_dump: 0x00007c4a5f1f66c0 T_IMEMO/<fields>
Reference counts - snapshot: 2, writebarrier: 0, current: 2, misse...
jhawthorn (John Hawthorn)
09:54 PM Revision 12b0ce38 (git): Remove unused src param from rb_shape_copy_fields
jhawthorn (John Hawthorn)
09:54 PM Revision 8cd58326 (git): Fix wrong write barrier on fields copy
Previously this write barrier was using the destination object as the
new parent, rather than the fields object.
Found by wbcheck
jhawthorn (John Hawthorn)
09:54 PM Revision 32453560 (git): Fix missed write barrier on Ractor send move
When moving a "generic IV" object, we need a write barrier to the fields
object.
WBCHECK ERROR: Missed write barrier detected!
Parent object: 0x7c913641d1a0 (wb_protected: true)
rb_obj_info_dump: 0x00007c913641d1a0 T_ARRA...
jhawthorn (John Hawthorn)
09:54 PM Revision 5f1ca8ff (git): Fix ractor imemo fields write barrier parent
$ RUBY_GC_LIBRARY=wbcheck ./miniruby -e 's = String.new; s.instance_variable_set(:@x, []); Ractor.make_shareable(s, copy: true)'
WBCHECK ERROR: Missed write barrier detected!
Parent object: 0x7ba8162dc890 (wb_protected: true)
...
jhawthorn (John Hawthorn)
09:41 PM Revision 116d1106 (git): Assume that symbol in rb_check_symbol is not garbage
rb_check_symbol is a public API, so it is always a bug if the user holds
on to a dead object and passes it in.
peterzhu2118 (Peter Zhu)
09:16 PM Bug #18940 (Closed): Ruby Ractor fails with IOError when handling higher concurrency
This doesn't reproduce on my machine on 3.5dev, and there have been a number of improvements to Ractors likely to have solved this. Please reopen if that's not the case :) jhawthorn (John Hawthorn)
08:49 PM Bug #19154 (Closed): Specify require and autoload guarantees in ractors
fxn (Xavier Noria) wrote in #note-13:
> Is constant access synchronized as it is for threads?
> ...
It does! Autoloads are forwarded to the main Ractor, where a new thread is spawned to perform the autoload (or block on the other thread).
jhawthorn (John Hawthorn)
03:42 PM Revision 350df4fb (git): [DOC] Tweaks for Case Mapping doc
burdettelamar (Burdette Lamar)
09:17 AM Revision 38993efb (git): [ruby/openssl] ssl: rename SSLContext#ecdh_curves= to #groups=
TLS 1.3 renamed the "elliptic_curves" extension to "supported_groups"
to reflect that it now covers more than just ECDH groups. OpenSSL 1.1.1
followed this change by renaming the corresponding API from
SSL_CTX_set1_curves_list() to SSL_C...
rhenium (Kazuki Yamaguchi)
07:05 AM Revision 4d6fac3e (git): Update bundled gems list as of 2025-07-03
git[bot]
06:31 AM Revision 5564e0a5 (git): Fixed wrong commit hash
hsbt (Hiroshi SHIBATA)
06:23 AM Revision 856962fa (git): ractor_sync.c: Optimize `ractor_set_successor_once` to be lock free
byroot (Jean Boussier)
06:23 AM Revision 95235fd5 (git): benchmark_driver: Stop using `Ractor#take`
byroot (Jean Boussier)
04:39 AM Revision 24ac9f11 (git): Revert "Add locks around accesses/modifications to global encodings table"
This reverts commit cf4d37fbc079116453e69cf08ea8007d0e1c73e6. jhawthorn (John Hawthorn)
04:39 AM Revision 50704fe8 (git): Revert "Make get/set default internal/external encoding lock-free"
This reverts commit dda5a04f2b4835582dba09ba33797258a61efafe. jhawthorn (John Hawthorn)
04:26 AM Revision b88cbe49 (git): Added io-nonblock and io-wait entries
hsbt (Hiroshi SHIBATA)
04:14 AM Revision 0ce4b43e (git): Update default gems and bundled gems list at expand_tabs.rb
hsbt (Hiroshi SHIBATA)
04:01 AM Revision 9503a77d (git): DRb has been extracted as bundled gems
hsbt (Hiroshi SHIBATA)
02:33 AM Revision 66aaf5b6 (git): actions/cache is working with relative path
hsbt (Hiroshi SHIBATA)
12:43 AM Revision 68af1929 (git): Support inference of ClassExact type
Stan Lo
12:43 AM Revision 0c694b56 (git): Add missed runtime_exact_ruby_class case for Regexp
Stan Lo
 

Also available in: Atom