Project

General

Profile

Activity

From 07/03/2025 to 07/09/2025

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 <stan001212@gmail.com>
---------
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...
prateekkish@gmail.com (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`
prateekkish@gmail.com (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 prateekkish@gmail.com (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

07/03/2025

08:33 PM Revision dda5a04f (git): Make get/set default internal/external encoding lock-free
Also, make sure autoloading of encodings is safe across ractors. Luke Gruber
08:33 PM Revision cf4d37fb (git): Add locks around accesses/modifications to global encodings table
This fixes segfaults and errors of the type "Encoding not found" when
using encoding-related methods and internal encoding c functions across
ractors.
Example of a possible segfault in release mode or assertion error in debug mode:
```...
Luke Gruber
08:20 PM Revision 4f4408e9 (git): Get transcoding to work across ractors by locking certain operations
Ex: `str.encode` and `str.encode!` work across ractors now.
The global table `transcoder_table` needs a lock around each st_lookup/st_insert, and it's a two-level
table so the second level also needs to be locked around insertion/deleti...
Luke Gruber
08:09 PM Revision ed3fd94e (git): ZJIT: Panic on BOP redefinition only when needed (#13782)
Takashi Kokubun
04:40 PM Revision c584cc07 (git): ZJIT: Enable one more btest (#13781)
Takashi Kokubun
04:30 PM Revision 0abe17da (git): ZJIT: Bail out on register spill (#13773)
Takashi Kokubun
04:22 PM Revision 57f4460f (git): ZJIT: Skip a hanging ractor test (#13774)
Takashi Kokubun
01:05 PM Revision 8b2d7613 (git): Assume that the symbol is not garbage in rb_sym2id
rb_sym2id 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)
12:44 PM Revision 4592d637 (git): Suppress a warning in code for SOCKS5
nobu (Nobuyoshi Nakada)
10:19 AM Revision 1f976509 (git): symbol.c: enforce `intern_str` is always called with a lock
Add missing locks in `rb_intern_str`, `rb_id_attrset` and `rb_intern3`. byroot (Jean Boussier)
08:44 AM Bug #21499 (Closed): make install - power_assert is a runtime_dependency of test-unit
Please wait a stable release. master is development branch. hsbt (Hiroshi SHIBATA)
01:42 AM Bug #21499 (Closed): make install - power_assert is a runtime_dependency of test-unit
The below is shown in the `make install` log of master. But, `test-unit` has `power_assert` as a runtime_dependency.
```
Extracting bundle gem power_assert-2.0.5...
Try with hash version of bundled gems instead of gems/power_assert...
MSP-Greg (Greg L)
07:20 AM Revision 517c1067 (git): imemo_fields_set: save copying when reassigning a variable
If we still fit in the existing imemo/fields object we can
update it atomically, saving a reallocation.
byroot (Jean Boussier)
06:46 AM Revision a020e349 (git): [DOC] Deleted the description about 2.2 and earlier
nobu (Nobuyoshi Nakada)
06:44 AM Revision c31bfd54 (git): [DOC] Fix markup in security.rdoc
nobu (Nobuyoshi Nakada)
05:29 AM Revision 5817e58a (git): Extract last-modified time after fetch completes
nobu (Nobuyoshi Nakada)
05:29 AM Revision 319062e4 (git): Prefer autotools repository mirror for build-aux files
gcc master is still using 2021 version files. nobu (Nobuyoshi Nakada)
05:29 AM Revision 9782bd52 (git): Drop HTTP support in downloader.rb
The only use case is access to `repo.or.cz`, and it redirects HTTP
requests to HTTPS now.
nobu (Nobuyoshi Nakada)
04:43 AM Revision 81da38b3 (git): Sync RubyGems
deivid (David Rodríguez)
04:43 AM Revision f679202a (git): Remove old `bundle.rb` script usage
deivid (David Rodríguez)
04:43 AM Revision 4126c1c5 (git): Adapt to upstream change in Bundler specs
deivid (David Rodríguez)
03:36 AM Bug #21500 (Closed): Backport gcc 15 support
commit:b42afa1dbcb Suppress gcc 15 unterminated-string-initialization warnings
commit:f1f0cc14cc7 Separate `__has_attribute` from `defined(__has_attribute)`
commit:543e3a1896a Cast up `int` instruction code to `VALUE`
commit:ed2806117...
nobu (Nobuyoshi Nakada)
12:39 AM Bug #17359: Ractor copy mode is not Ractor-safe
Seems to still be an issue. Here's an updated reproduction for 3.5dev (Using Ractor::Port instead of take/yield)
``` ruby
class Foo
attr_accessor :x
def initialize_copy(*)
$last = self
super
end
end
o = Foo.new...
jhawthorn (John Hawthorn)
12:05 AM Bug #18733: Heavy GC allocations cause performance issue with Ractor
This performance gap _in the original benchmark_ no longer exists on master. Benchmark from my Ryzen 7 3700X running linux:
```
❯ ruby -v
ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux]
❯ RUBY_MAX_CPU=16 ruby test.rb
...
jhawthorn (John Hawthorn)
 

Also available in: Atom