Project

General

Profile

Activity

From 02/07/2025 to 02/13/2025

02/13/2025

10:27 PM Revision 41251fdd (git): YJIT: Fix linker warnings on macOS for Cargo (development) builds
alanwu (Alan Wu)
09:11 PM Revision e0cb069c (git): Remove dead rb_st_nth_key
peterzhu2118 (Peter Zhu)
08:54 PM Bug #21111 (Assigned): RbConfig::CONFIG['CXX'] quietly set to "false" when Ruby cannot build C++ programs
hsbt (Hiroshi SHIBATA)
01:31 PM Bug #21111: RbConfig::CONFIG['CXX'] quietly set to "false" when Ruby cannot build C++ programs
At first, it’s rare to have a situation where Ruby itself can be built but no C++ compiler is available. The macOS example mentioned in the ticket is an unusual case caused by broken Command Line Tools.
Having said that, I agree that ...
katei (Yuta Saito)
08:24 PM Feature #21135 (Closed): Feature request: Enumerable.compare_count
Enumerables at times can be quite expensive to complete expand. If all is desired is to compare the count, we can terminate the enumeration once the result is known.
The functionality that I envision, if implemented in ruby, might lo...
Student (Nathan Zook)
08:12 PM Revision 31162bf4 (git): [ruby/prism] Handle zero-sized allocation in pm_constant_id_list_init_capacity
According to the calloc(3) man page, when nmemb or size is 0, `calloc()` can either return NULL or a unique pointer that can be passed to `free()`.
While gcc and clang typically return a unique pointer, mruby's `mrb_calloc()` returns NUL...
hasumikin (hitoshi hasumi)
08:04 PM Bug #21117 (Closed): Inconsistent behaviour between "_1" and "it" variables
Applied in changeset commit:git|127325a4bad409ee5da91084fac768934a8fd9e3.
----------
[ruby/prism] No writing to numbered parameters
Fixes [Bug #21117]
https://github.com/ruby/prism/commit/19d4bab5a0
kddnewton (Kevin Newton)
04:55 PM Bug #21117 (Assigned): Inconsistent behaviour between "_1" and "it" variables
These two should be SyntaxError, and is actually SyntaxError with --parser=parse.y
~~~ruby
[1, 2, 3].each { _1 += 1; p _1 }
[1, 2, 3].map { _1 += 1 }
~~~
Some difference between `it` and `_1` is by design, but the inconsistencies ...
tompng (tomoya ishida)
08:04 PM Revision 127325a4 (git): [ruby/prism] No writing to numbered parameters
Fixes [Bug #21117]
https://github.com/ruby/prism/commit/19d4bab5a0
kddnewton (Kevin Newton)
07:12 PM Bug #21114 (Closed): Prism hangs up while parsing deeply nested `def`
Applied in changeset commit:git|b21e1aed2ed5b22b50efc658289a403eeed581df.
----------
[ruby/prism] Fix infinite loop in error recovery
When recovering from a depth error that occurs at the end of the
file, we need to break out of parsin...
kddnewton (Kevin Newton)
06:59 PM Bug #21114: Prism hangs up while parsing deeply nested `def`
https://github.com/ruby/prism/pull/3461 kddnewton (Kevin Newton)
07:12 PM Revision b21e1aed (git): [ruby/prism] Fix infinite loop in error recovery
When recovering from a depth error that occurs at the end of the
file, we need to break out of parsing statements.
Fixes [Bug #21114]
https://github.com/ruby/prism/commit/a32e268787
kddnewton (Kevin Newton)
06:13 PM Feature #21020: Sync sig directory for prism of default gem.
I think the code in the PR is good, but I agree I don't think the sig should live under `prism/sig`. I think it should be top directory of ruby repository `sig`. When it's installed I agree with @Eregon but I also think @hsbt's solution ... kddnewton (Kevin Newton)
11:09 AM Feature #21020: Sync sig directory for prism of default gem.
How about `$prefix/lib/ruby/gems/3.5.0+0/gems/$name-$version/sig` so it would be consistent between default and bundled gems? Eregon (Benoit Daloze)
10:36 AM Feature #21020 (Assigned): Sync sig directory for prism of default gem.
I'm interesting that location of signature with fresh installation of ruby.
The sig directory under the `prism` is fine if we have only prism signature. Where is the best location if we will add `json` or `psych` signatures?
```
1...
hsbt (Hiroshi SHIBATA)
06:09 PM Bug #21097: `x = a rescue b in c` and `def f = a rescue b in c` parsed differently between parse.y and prism
In this case, I'm not sure if the assignee should be prism, if we now have the desired behavior. @tompng does this match your understanding? kddnewton (Kevin Newton)
08:56 AM Bug #21097: `x = a rescue b in c` and `def f = a rescue b in c` parsed differently between parse.y and prism
The behavior of Prism in 3.5 is close to my intention.
Matz.
matz (Yukihiro Matsumoto)
06:07 PM Bug #21029: Prism behavior for `defined? (;x)` differs
@matz for what it's worth, it makes it much more complicated in the Prism compiler because we don't have empty statements. So it's not a recursive situation at the moment, it's just a single statement.
As @qnighy points out, should th...
kddnewton (Kevin Newton)
07:03 AM Bug #21029: Prism behavior for `defined? (;x)` differs
> I think compound expressions (expressions (including empty) concatenated by semicolons) should be “expression” as `parse.y`.
Interestingly enough though:
```
% ruby --parser=prism -e "p defined? (x;)"
nil
% ruby --parser=parse...
qnighy (Masaki Hara)
06:41 AM Bug #21029: Prism behavior for `defined? (;x)` differs
I think compound expressions (expressions (including empty) concatenated by semicolons) should be “expression” as `parse.y`.
It makes `defined?` simpler. I know the current `defined?` behavior recursively check for defined-ness (e.g., m...
matz (Yukihiro Matsumoto)
05:49 PM Revision 2b921728 (git): [ruby/prism] Split assertion per expressions
Expressions joined with `&&` are better asserted separately, so that
it is clear from the failure message which expression is false.
Also, `unsigned long` may not be enough for `ptrdiff_t`, e.g., Windows.
Saying that `ptrdiff_t` can be ...
nobu (Nobuyoshi Nakada)
04:58 PM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
> This case was in a circular require pattern, which is unrecommended, so that it was not considered worth discussing anything based on this case.
I don't think there is a circular require, because `m.rb` is not doing a require of `foo....
fxn (Xavier Noria)
03:18 PM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
This ticket was discussed briefly at the dev meeting.
fxn (Xavier Noria) wrote in #note-3:
> Let me give you a generic example that does not fire an autoload:
> ...
This case was in a circular require pattern, which is unrecommended...
mame (Yusuke Endoh)
03:45 PM Misc #21134 (Closed): DevMeeting-2025-03-13
# The next dev meeting
**Date: 2025/03/13 13:00-17:00** (JST)
Log: https://github.com/ruby/dev-meeting-log/blob/master/2025/DevMeeting-2025-03-13.md
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at t...
mame (Yusuke Endoh)
03:44 PM Misc #21019 (Closed): DevMeeting-2025-02-13
mame (Yusuke Endoh)
03:42 PM Feature #20953: Array#fetch_values vs #values_at protocols
It was discussed at the dev meeting. @matz said that it would be good to raise an IndexError consistently if beginless or endless range is passed to `Array#fetch_values`.
The expected behavior of `Array#fetch_values` when given beginl...
mame (Yusuke Endoh)
03:32 PM Feature #21105: Improve Ruby Stack Trace to Include Exact Error Position (Column Number)
I think it is worth to display column info as `trace.rb:3:7: in 'run': ... `. When you click on it in the vscode terminal, it will open the file and jumpto that location.
However, there are numerous problems to making this happen.
...
mame (Yusuke Endoh)
07:30 AM Feature #21105 (Closed): Improve Ruby Stack Trace to Include Exact Error Position (Column Number)
I like introducing the column number in the error message, but in reality, it is hard to get column numbers from the error object, and I don't think it's worth the extensive overhaul to make that possible.
Probably we will add this in t...
matz (Yukihiro Matsumoto)
03:09 PM Bug #20998: rb_str_locktmp() changes flags of frozen strings and string literals
Discussed at the dev meeting. @akr preferred raising an Exception. The current purpose of `rb_str_locktmp` is to prevent the `RSTRING_PTR` from being moved (by realloc, compaction, etc.) when passing the pointer to a C function that bloc... mame (Yusuke Endoh)
12:33 PM Feature #21133 (Closed): [ruby/logger] Add an option to disable writing the header when creating a new log file
Creating a logger automatically writes a hardcoded header comment ("# Logfile created on ..."):
https://github.com/ruby/logger/blob/0eb10f2d278435899ce9055c98eb5b53caa0092a/lib/logger/log_device.rb#L149-L153
As far as I can see, it ...
viralpraxis (Iaroslav Kurbatov)
10:53 AM Bug #21132 (Closed): Changed postposition `rescue` and `if` behavior since Ruby 3.4
watson1978 (Shizuo Fujita)
10:52 AM Bug #21132: Changed postposition `rescue` and `if` behavior since Ruby 3.4
My problem will be solved by https://github.com/ruby/ruby/commit/c2908613368b2ae404d094a15df61d830fc46dc9
Thanks
watson1978 (Shizuo Fujita)
02:44 AM Bug #21132: Changed postposition `rescue` and `if` behavior since Ruby 3.4
When I switched parser to parse.y, it has same result with Ruby 3.3.
```
[~/tmp]$ ruby -v --parser=parse.y t.rb
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) [x86_64-linux]
"fugafuga"
[~/tmp]$ ruby -v --parser=prism t.rb
ruby 3.4.1...
watson1978 (Shizuo Fujita)
02:14 AM Bug #21132 (Closed): Changed postposition `rescue` and `if` behavior since Ruby 3.4
When I use postposition `rescue` and `if` at same line, the behavior is changed since Ruby 3.4.
## Reproduction
```ruby
def foo
return "hogehoge" rescue nil if false
return "fugafuga"
end
foo
```
## Result with Ruby 3....
watson1978 (Shizuo Fujita)
10:38 AM Feature #21116 (Closed): Extract RJIT as a third-party gem
Applied in changeset commit:git|4a67ef09ccd703047552b740431cfe15e32451f4.
----------
[Feature #21116] Extract RJIT as a third-party gem
nobu (Nobuyoshi Nakada)
10:38 AM Revision 9826047f (git): Array#sort_by! return early if sorting is useless
`Array#sort!` does that check, but `#sort_by!` always tries to
sort, which is wasteful.
byroot (Jean Boussier)
09:29 AM Bug #21119: Programs containing `Dir.glob` with a thread executing a CPU-heavy task run very slowly.
If there is a C Dir.glob implementation, we can run it in another pthread in parallel. naruse (Yui NARUSE)
09:21 AM Feature #21028: Method for finding why an object isn't Ractor shareable
Is `ObjectSpace.reachable_objects_from` usable for the use case? It's a bit tedious, but I think it's more flexible not only to get an unshareable object, but also to get the path to the object in question.
```ruby
require "objspace"...
mame (Yusuke Endoh)
09:01 AM Revision 4a67ef09 (git): [Feature #21116] Extract RJIT as a third-party gem
nobu (Nobuyoshi Nakada)
08:56 AM Bug #21102 (Rejected): Unexpected encoding when concatenating ASCII string with ASCII compatible string with non ASCII encoding
This behavior is for the case when a string is used as as buffer.
In that case the first string is the buffer, and following strings are inputs. Therefore the encoding of the buffer should be respected as far as it can.
If you have a...
naruse (Yui NARUSE)
08:43 AM Feature #19555 (Closed): Allow passing default options to `Data.define`
As a programmer, I can imagine the convenience of this default value for Data attributes, but as @zverok mentioned, I can also imagine the trouble caused by this (just like Python's famous optional argument issue).
So as a conclusion, w...
matz (Yukihiro Matsumoto)
06:44 AM Feature #21082 (Rejected): Alias it to its
Some people want to make Ruby more English-like, but I don't agree with that direction.
Matz.
matz (Yukihiro Matsumoto)
06:35 AM Revision d35cc0cc (git): tool/downloader.rb: Stop caching already existing files
Previously, the script was caching any file already present in the
destination directory, regardless of its origin. This caused issues
when the directory contained files copied from external sources like
`autoreconf --install`.
For exam...
katei (Yuta Saito)
05:58 AM Bug #21049: Reconsider handling of the numbered parameters and "it" parameter in `Binding#local_variables`
I take all three "expected" in the first example. I'd rather wait for the request for the new (additional) APIs with real-world use-case.
Matz.
matz (Yukihiro Matsumoto)
05:13 AM Revision 45397f82 (git): Extend timeout with resolv.rb and Windows platform. It's expired with 10sec sometimes.
hsbt (Hiroshi SHIBATA)
04:12 AM Revision cf00b31b (git): Remove a stale function for MJIT
nobu (Nobuyoshi Nakada)
04:06 AM Revision 908fe85d (git): Remove stale comment for MJIT
nobu (Nobuyoshi Nakada)
03:48 AM Revision 38cf09fc (git): Header files for MJIT is not generated already
The glob patterns are replaced by rote, but these files have been
removed before it.
nobu (Nobuyoshi Nakada)
12:37 AM Revision ee03df26 (git): [rubygems/rubygems] `--prefer-local` should resolve to latest version if no gems are available locally
Filtering out remote specs should only apply where there are locally
installed specs. Otherwise they should always be considered.
https://github.com/rubygems/rubygems/commit/118f8389a1
deivid (David Rodríguez)
12:37 AM Revision 151b436c (git): [rubygems/rubygems] Fix incorrect error message in frozen mode
When Bundler refuses to install in frozen mode, sometimes it would
incorrectly claim that some dependencies have been added to the Gemfile
when that's not really the case. Fix that by making sure
`locked_dependencies` always has all lock...
deivid (David Rodríguez)
12:37 AM Revision d9267b4a (git): [rubygems/rubygems] Fix `type` and `gemfile` not getting reported as invalid options
https://github.com/rubygems/rubygems/commit/5b6077a1e8 deivid (David Rodríguez)
12:37 AM Revision 0423fde3 (git): [rubygems/rubygems] Fix spec wording
This feature is not really deprecated, it's removed.
https://github.com/rubygems/rubygems/commit/e7f5f061f5
deivid (David Rodríguez)
12:37 AM Revision e7720ef8 (git): [rubygems/rubygems] Materializing specs for vendor/cache should not be strict
Platforms specific gems not compatible with the current Ruby should not
make `bundle cache` fail and should not get removed from the cache since
they still may be useful in other rubies.
https://github.com/rubygems/rubygems/commit/717b4...
deivid (David Rodríguez)
12:37 AM Revision 5adbad73 (git): [rubygems/rubygems] Move logic to materialize gems for cache to a new method
And make the current `materialize_strictly` private.
https://github.com/rubygems/rubygems/commit/3fc2129147
deivid (David Rodríguez)
12:37 AM Revision 06e3943c (git): [rubygems/rubygems] Remove unnecessary source change
We materializing for installation, we already do this, and we
materializing for cache, it does not seem necessary.
https://github.com/rubygems/rubygems/commit/1a983c6cbc
deivid (David Rodríguez)
12:37 AM Revision bb764e42 (git): [rubygems/rubygems] Extract some common materialization logic to a method
https://github.com/rubygems/rubygems/commit/32982fcd33 deivid (David Rodríguez)
12:37 AM Revision 7ac29372 (git): [rubygems/rubygems] Make LazySpecification#__materialize__ private
And rename it to something better.
https://github.com/rubygems/rubygems/commit/321174d1ad
deivid (David Rodríguez)
12:37 AM Revision dc8cde47 (git): [rubygems/rubygems] Stub-out additional examples and removed needless Error definition
https://github.com/rubygems/rubygems/commit/d24d0b5c43 hsbt (Hiroshi SHIBATA)
12:17 AM Revision e9e4770a (git): Fix .vscode/settings.json for the latest extension
k0kubun (Takashi Kokubun)
12:16 AM Bug #21130 (Closed): Update net-imap for ruby 3.2, 3.3, 3.4
hsbt (Hiroshi SHIBATA)
12:11 AM Bug #21131 (Closed): IO.copy_stream: yielded string changes value when duped
I found an odd situation, when using IO.copy_stream with a File writer quack class, where the data passed to #write somehow ends overwritten, despite the instance being duped.
class ProcIO
def initialize(block)
@bl...
chucke (Tiago Cardoso)

02/12/2025

11:53 PM Revision abd1b700 (git): [DOC] Fix description comment typo
tyatin (Serg Tyatin)
11:05 PM Bug #21130 (Closed): Update net-imap for ruby 3.2, 3.3, 3.4
The bundled versions are vulnerable to CVE-2024-25186 (GHSA-7fc5-f82f-cx69). Fixing the issue requires upgrading to v0.3.8, v0.4.19, or v0.5.4.
* ruby 3.2.7 bundles net-imap v0.3.4.1
PR: Bump net-imap to 0.3.8 for Ruby 3.2
http...
nevans (Nicholas Evans)
10:51 PM Revision 0e34a883 (git): Fixed infinite loop with GitHub Actions
Co-authored-by: Nobuyoshi Nakada <[email protected]> hsbt (Hiroshi SHIBATA)
07:18 PM Bug #21129 (Closed): Backporting strscan fix in Ruby 3.2
k0kubun (Takashi Kokubun)
12:10 PM Bug #21129 (Closed): Backporting strscan fix in Ruby 3.2
An `strscan` version shipped with Ruby 3.2 (`strscan` v3.0.5) has a bug. It was fixed long time ago in `strscan` v3.0.7 (in https://github.com/ruby/strscan/pull/61) but reported recently again in https://github.com/ruby/strscan/issues/13... andrykonchin (Andrew Konchin)
07:09 PM Revision 207c6750 (git): Fix rjit_c.rb
peterzhu2118 (Peter Zhu)
07:03 PM Revision 16f41eca (git): Remove dead iv_index_tbl field in RObject
peterzhu2118 (Peter Zhu)
06:03 PM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
I recalled and searched for a couple places that rely on `defined?(Foo)` to be `nil` while autoloading `Foo`.
I found https://github.com/ruby/ruby/blob/f32d5071b7b01f258eb45cf533496d82d5c0f6a1/lib/bundler/deprecate.rb#L12-L13
This ...
Eregon (Benoit Daloze)
05:03 PM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
Yeah, I don't disagree (see the sentence I wrote below that one), I was just guessing why it's the way it is. Eregon (Benoit Daloze)
02:36 PM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
> BTW, const_defined?(:Foo) is similar to defined?(Foo) and I guess when performing an autoload it makes some sense for those to return false/nil, because the autoloaded file should define those constants (and defining those constants sh... fxn (Xavier Noria)
11:36 AM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
Right that last example is weird, it's like it considers the `autoload :Foo` is ongoing even though `Foo` was never accessed.
I think it does consider the autoload to be ongoing because there is a feature `foo.rb` being loaded.
In ge...
Eregon (Benoit Daloze)
09:30 AM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
BTW, my personal take is that the behavior should change, if you present that code above to anyone, expectation would be to return `true` and `foo` always, since the autoload was just defined and nothing happened (and `constants` lists t... fxn (Xavier Noria)
09:24 AM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
Your example kind of shows this by firing an autoload. But that is not the general case, even if the autoload is not fired you get that extra logic. Let me give you a generic example that does not fire an autoload:
``` ruby
# main.rb
re...
fxn (Xavier Noria)
09:14 AM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
Hi @mame!
Not exactly. Let's consider your first example:
``` ruby
# main.rb
module M
autoload :Foo, './foo'
constants # => [:Foo] (as expected)
const_defined?(:Foo) # => true (as expected), (1)
autoload?(:Foo) ...
fxn (Xavier Noria)
09:03 AM Misc #21035: Clarify or redefine Module#autoload? and Module#const_defined?
@fxn Please write expected behavior and actual result clearly. I understood your issue as the following, is it correct?
```ruby
# main.rb
module M
autoload :Foo, './foo'
constants # => [:Foo] (as expected)
cons...
mame (Yusuke Endoh)
05:14 PM Feature #15663: Documenting autoload semantics
Right, that's a good summary. It's natural for the constant lookup to use the constant scope as usual, and that part is fine.
The part that's messy is when doing the `require` for an `autoload`, and it doesn't define the constant it "pr...
Eregon (Benoit Daloze)
02:17 PM Feature #15663: Documenting autoload semantics
I see what you mean, but let me rephrase it a bit. The autoload does not depend on the nesting (depending on your definition of "autoload"). It is triggered by a missing constant reference when the constant is being looked up in the rece... fxn (Xavier Noria)
01:59 PM Feature #15663: Documenting autoload semantics
fxn (Xavier Noria) wrote in #note-9:
> Autoload is just a trigger for Kernel#require, there is no expectation on its side-effects.
There certainly is for any Rubyist though (the whole point of an autoload is it lazily defines some co...
Eregon (Benoit Daloze)
01:55 PM Feature #15663: Documenting autoload semantics
Right, I recall those, I feel these should really give a NameError or LoadError when the autoload is triggered, because it's basically an incorrect usage of autoload.
It can result in a pretty weird state for M::N::X / MyGem::Date, what ...
Eregon (Benoit Daloze)
01:02 PM Feature #15663: Documenting autoload semantics
BTW, I am _describing_ how it works, not implying I like it :). fxn (Xavier Noria)
01:01 PM Feature #15663: Documenting autoload semantics
A classic way to exploit that behavior I've seen out there (in the past):
```ruby
module MyGem
autoload :Date, 'date'
end
```
That meant, make `Date` available in case client code uses my gem in a way that hits an internal reference ...
fxn (Xavier Noria)
12:35 PM Feature #15663: Documenting autoload semantics
Hi @eregon!
> From that POV any autoload which when triggered does not define the constant should be an error, specifically a LoadError
Not quite! Autoload is just a trigger for `Kernel#require`, there is no expectation on its side-eff...
fxn (Xavier Noria)
11:43 AM Feature #15663: Documenting autoload semantics
@fxn Regarding the comment above, I think always treating autoload constants as if they already existed seems one way to be more consistent.
From that POV any autoload which when triggered does not define the constant should be an error...
Eregon (Benoit Daloze)
09:23 AM Revision f32d5071 (git): Elide string allocation when using `String#gsub` in MAP mode
If the provided Hash doesn't have a default proc, we know for
sure that we'll never call into user provided code, hence the
string we allocate to access the Hash can't possibly escape.
So we don't actually have to allocate it, we can us...
byroot (Jean Boussier)
08:29 AM Bug #21114 (Assigned): Prism hangs up while parsing deeply nested `def`
hsbt (Hiroshi SHIBATA)
08:29 AM Bug #21097 (Assigned): `x = a rescue b in c` and `def f = a rescue b in c` parsed differently between parse.y and prism
hsbt (Hiroshi SHIBATA)
08:29 AM Bug #21029 (Assigned): Prism behavior for `defined? (;x)` differs
hsbt (Hiroshi SHIBATA)
08:29 AM Bug #21120 (Assigned): Segmentation fault when running Rails with MN threads enabled on 3.4.1
hsbt (Hiroshi SHIBATA)
05:20 AM Bug #21128: dir.c defines O_CLOEXEC before it is defined by the system.
Opened a pull request [1].
Also, POSIX requires unistd.h to define O_CLOEXEC, so this is a glibc bug that is easy to reproduce [2]. I'll have a look at fixing it in glibc and gnulib.
[1] https://github.com/ruby/ruby/pull/12735
[2] http...
collinfunk (Collin Funk)
05:06 AM Bug #21128 (Closed): dir.c defines O_CLOEXEC before it is defined by the system.
Building from master commit hash bfcf36fe2243d34a01b5707754be9164849150c9 on GNU/Linux, I see:
```
compiling dir.c
In file included from /usr/include/bits/fcntl.h:61,
from /usr/include/fcntl.h:35,
...
collinfunk (Collin Funk)
04:25 AM Revision b8db606d (git): Update default gems list at abcafb080ce9fe94cb13cca0e813a0 [ci skip]
git[bot]
04:15 AM Revision abcafb08 (git): [ruby/json] Release 2.10.1
https://github.com/ruby/json/commit/aa5b7d6acb byroot (Jean Boussier)
04:15 AM Revision 293ad8a4 (git): Fix a compatibility issue with `MultiJson.dump(obj, pretty: true)`
Fix: https://github.com/ruby/json/issues/748
`MultiJson` pass `State#to_h` as options, and the `as_json`
property defaults to `false` but `false` wasn't accepted by
the constructor.
byroot (Jean Boussier)
04:12 AM Revision 502bd6ba (git): [ruby/json] Release 2.10.0
https://github.com/ruby/json/commit/8b56d47254 byroot (Jean Boussier)
12:46 AM Revision bfcf36fe (git): YJIT doesn't merge archives anymore [ci skip]
alanwu (Alan Wu)

02/11/2025

11:42 PM Bug #18605: Fails to run on (newer) 32bit Windows with ucrt
I'm trying to get ARM64 build of Windows to work so I can debug an issue I was having with a branch I'm working on that's failing in CI with Visual Studio 2022. It would be great if ARM64 Windows was working. Any news on this? luke-gru (Luke Gruber)
11:03 PM Bug #16145: regexp match error if mixing /i, character classes, and utf8
I've tested it for Polish letters, the bug appears only for `ó`, all other work OK:
```
pry(main)> ['ą', 'ę', 'ó', 'ś', 'ł', 'ć', 'ź', 'ż', 'ń'].map { [_1, _1.bytes, /[x#{_1}]/i.match?("qwer#{_1.capitalize}")] }
=> [["ą", [196, 133...
mjrzasa (Maciek Rząsa)
05:21 PM Revision f8b9e2c0 (git): Bump net-imap to 0.4.19 for Ruby 3.3 (CVE-2025-25186) (#12732)
This update addresses CVE-2025-25186 (GHSA-7fc5-f82f-cx69). nicholas a. evans
04:42 PM Revision 4ac75f6f (git): [ruby/openssl] x509name: do not check for negative return from X509_NAME_entry_count()
The function never returns a negative number.
https://github.com/ruby/openssl/commit/895ce6fdfc
rhenium (Kazuki Yamaguchi)
04:42 PM Revision 47cdf98f (git): [ruby/openssl] x509: do not check for negative return from X509_*_get_ext_count()
These functions wrap X509v3_get_ext_count(). The implementation can
never return a negative number, and this behavior is documented in the
man page.
https://github.com/ruby/openssl/commit/5164725855
rhenium (Kazuki Yamaguchi)
04:42 PM Revision 8888ad69 (git): [ruby/openssl] ossl.c: avoid using sk_*() functions with NULL
Always use explicit NULL checks before interacting with STACK_OF(*).
Even though most OpenSSL functions named sk_*() do not crash if we pass
NULL as the receiver object, depending on this behavior would be a bad
idea.
Checks for a negat...
rhenium (Kazuki Yamaguchi)
04:42 PM Revision dedd05e9 (git): [ruby/openssl] pkcs7: add a test case for the data content type
While it is not useful alone, it is still a valid content type. Some
methods on OpenSSL::PKCS7 are only meant to work with the signed-data
or enveloped-data content type. Add some assertions for their behavior
with unsupported content ty...
rhenium (Kazuki Yamaguchi)
03:35 PM Revision 06faf285 (git): [ruby/openssl] Add build support for AWS-LC
CI Changes
1. I've split the original patch up to make it easier to digest, but
that forces my hand to turn off testing in the AWS-LC CI for the time
being. However, do let me know if you would prefer to review the test
adjustments in th...
sachiang (Samuel Chiang)
01:04 PM Bug #21124 (Rejected): Enumerable#find called without a block returns Enumerator without size
Thanks for your confirmation. Closing. mame (Yusuke Endoh)
05:26 AM Bug #21030: Bug: #step with Range<ActiveSupport::Duration> behavior broken on Ruby 3.4.1
May we mark this as 3.4 backport? I'm hesitant to upgrade my app to 3.4 without this fix. johnnyshields (Johnny Shields)

02/10/2025

11:24 PM Feature #21121: Ractor channels
I made a PoC branch here: https://github.com/luke-gru/ruby/commits/ractor_channels but it's not totally ready yet. luke-gru (Luke Gruber)
09:30 PM Revision e603a420 (git): [DOC] Fix call-seq consistency in Array
The documentation guide (https://docs.ruby-lang.org/en/master/contributing/documentation_guide_md.html#label-Calling+Sequence+-28for+methods+written+in+C-29)
says that the call-seq for instance methods should only include the method
name...
peterzhu2118 (Peter Zhu)
09:30 PM Revision eada3cdf (git): [DOC] Fix call-seq consistency in Hash
The documentation guide (https://docs.ruby-lang.org/en/master/contributing/documentation_guide_md.html#label-Calling+Sequence+-28for+methods+written+in+C-29)
says that the call-seq for instance methods should only include the method
name...
peterzhu2118 (Peter Zhu)
09:24 PM Bug #20919: IO#seek and IO#pos= do not clear the character buffer in some cases while transcoding
I believe the fix is ready for review https://github.com/ruby/ruby/pull/12714
Some CI jobs were failing (WebAssembly/Cygwin) but the failures seem not to be related to my changes and they're inconsistent (after rebasing Cygwin passed an...
mjrzasa (Maciek Rząsa)
08:50 PM Revision d680a13a (git): Always return jit_entry even if NULL
We can just always return the jit_entry since it will be initialized to
NULL. There is no reason to specifically return NULL if yjit / rjit are
disabled
tenderlovemaking (Aaron Patterson)
08:37 PM Revision b74077c1 (git): [ruby/mmtk] Set Immix as the default plan
https://github.com/ruby/mmtk/commit/e52b973611 peterzhu2118 (Peter Zhu)
07:33 PM Revision 50469809 (git): [ruby/mmtk] Use RUBY_TEST_TIMEOUT_SCALE for tests
RUBY_TEST_TIMEOUT_SCALE is set for debug builds because they are slower
to run. We should respect this environment variable in MMTk tests too.
https://github.com/ruby/mmtk/commit/0a66c518bf
peterzhu2118 (Peter Zhu)
07:32 PM Revision b4bf3ed1 (git): [DOC] Adds section "Hash Inclusion" (#12634)
burdettelamar (Burdette Lamar)
07:31 PM Revision 7fd589c7 (git): [DOC] Tweaks for Hash#assoc (#12726)
burdettelamar (Burdette Lamar)
07:31 PM Revision 57b9b921 (git): [DOC] Tweaks for Hash#clear (#12727)
burdettelamar (Burdette Lamar)
07:23 PM Revision 35afc0d6 (git): [DOC] Tweaks for Hash#any?
burdettelamar (Burdette Lamar)
07:21 PM Revision c7e35e55 (git): gc.c: Remove no-op code
In this context, `vm_locked` is a argument variable, and is not used
later in the function.
Daisuke Aritomo
06:08 PM Bug #21124: Enumerable#find called without a block returns Enumerator without size
Yes, indeed. You are right. My bad.
I was confused by result of `#to_a` called on such Enumerator:
```ruby
[1, 2, 3].find.to_a # => [1, 2, 3]
```
andrykonchin (Andrew Konchin)
02:23 AM Bug #21124 (Feedback): Enumerable#find called without a block returns Enumerator without size
nobu (Nobuyoshi Nakada)
04:29 PM Revision 5b226fdb (git): Support `git ls-files ...`.split style for file list of gemspec
hsbt (Hiroshi SHIBATA)
04:29 PM Revision 84b60a03 (git): Bump up net-smtp-0.5.1
hsbt (Hiroshi SHIBATA)
01:47 PM Revision 3fb455ad (git): Move global symbol reference updating to rb_sym_global_symbols_update_references
peterzhu2118 (Peter Zhu)
01:47 PM Revision 8d0416ae (git): Make ruby_global_symbols movable
The `ids` array and `dsymbol_fstr_hash` were pinned because they were
kept alive by rb_vm_register_global_object. This prevented the GC from
moving them even though there were reference updating code.
This commit changes it to be marked...
peterzhu2118 (Peter Zhu)
01:18 PM Bug #19288: Ractor JSON parsing significantly slower than linear parsing
tenderlovemaking (Aaron Patterson) wrote in #note-17:
> We could also add an fstring table to each Ractor [...] but at least we would be limited to the number of Ractors
The number of Ractors can be high though since M-N threads.
Al...
Eregon (Benoit Daloze)
01:11 PM Feature #21126 (Rejected): Drop default_proc when Hash#freeze is called for better Ractor support
Looks like we are on the same page here, `freeze` should never break semantics like this. Eregon (Benoit Daloze)
09:04 AM Revision 397bb7e4 (git): Do not overwrite `GEM_PATH` if already set
The bundler's test sets the `GEM_PATH` and `GEM_HOME` environment
variables by itself. Overwriting them results in tons of errors.
nobu (Nobuyoshi Nakada)
07:55 AM Revision cd27c580 (git): Launchable: Add a workflow name as a flavor (#12720)
Adding a workflow name would be easier to understand the connection between a test session and GitHub workflow. ono-max (Naoto Ono)
07:53 AM Bug #21127 (Closed): Thread deadlock does not display backtraces
Previously, Ruby displayed backtraces for each thread on deadlock. However, it has not been shown since Ruby 3.0.
It should display the backtrace for debugging. (related: https://bugs.ruby-lang.org/issues/8214)
## Step to reproduce
...
pocke (Masataka Kuwabara)
01:05 AM Bug #21122: library/socket/basicsocket/recv_nonblock_spec.rb fails with IO::EAGAINWaitReadable sometimes.
@andrykonchin Thank you for quick fix. hsbt (Hiroshi SHIBATA)
12:27 AM Revision 135479a5 (git): [rubygems/rubygems] Allocate strings from Requirement match only once
https://github.com/rubygems/rubygems/commit/c65b8644e6
Co-authored-by: Samuel Giddins <[email protected]>
deivid (David Rodríguez)

02/09/2025

10:11 PM Revision 5232c86f (git): Use the default MMTk plan
The default MMTk plan is no longer MarkSweep, so we shouldn't force it
to be MarkSweep.
peterzhu2118 (Peter Zhu)
10:11 PM Revision 5fcbf3e8 (git): Remove MMTk configuration for debug builds
We are no longer running debug builds of MMTk here, so we don't need this
configuration anymore.
peterzhu2118 (Peter Zhu)
07:33 PM Bug #19288: Ractor JSON parsing significantly slower than linear parsing
> I'm not sure if this one is possible. If some Ractor is updating the hash, it could be in an inconsistent state when another Ractor is trying to read.
A RW-lock doesn't allow reads while the write lock is held.
> ...
That's an i...
byroot (Jean Boussier)
07:30 PM Bug #19288: Ractor JSON parsing significantly slower than linear parsing
byroot (Jean Boussier) wrote in #note-16:
> I profiled this repro out of curiosity, and ractors spend 32% of their time waiting for the VM lock (`vm_lock_enter` + the unlock) to be able to lookup in the `fstring` table: https://share.fi...
tenderlovemaking (Aaron Patterson)
09:15 AM Bug #19288: Ractor JSON parsing significantly slower than linear parsing
I profiled this repro out of curiosity, and ractors spend 32% of their time waiting for the VM lock (`vm_lock_enter` + the unlock) to be able to lookup in the `fstring` table: https://share.firefox.dev/4152X8a
Currently this is done e...
byroot (Jean Boussier)
06:40 PM Feature #21126: Drop default_proc when Hash#freeze is called for better Ractor support
I was about to write the same thing as @jeremyevans0, the `default_proc` doesn't necessarily mutate the hash, hence dropping it on freeze isn't correct. byroot (Jean Boussier)
06:37 PM Feature #21126: Drop default_proc when Hash#freeze is called for better Ractor support
I think this is a bad idea. It makes `freeze` change the hash in a non-backwards compatible way.
For `Hash#default`, I think it makes no sense at all:
```ruby
h = Hash.new(0)
h[1] # 0
h.freeze
h[1] # Before: 0, After: nil
```...
jeremyevans0 (Jeremy Evans)
09:08 AM Feature #21126 (Rejected): Drop default_proc when Hash#freeze is called for better Ractor support
Hash instances with default_proc set cannot be sent/moved across Ractors, even if they are frozen.
Consider the following code. Using a default proc to set an empty Array is a very common pattern, even introduced in the docs.
```ru...
osyoyu (Daisuke Aritomo)
10:26 AM Revision 7d10c22a (git): [ruby/openssl] Revert "Skip a new test when old OpenSSL"
This reverts commit https://github.com/ruby/openssl/commit/8c96a69b0d47.
This is no longer necessary since we do not support OpenSSL 1.1.0
anymore.
https://github.com/ruby/openssl/commit/4987688cb4
rhenium (Kazuki Yamaguchi)
10:26 AM Revision 581dbcec (git): [ruby/openssl] ssl: prefer SSLContext#max_version= in tests
Avoid using the deprecated OpenSSL::SSL::SSLContext#ssl_version= outside
the tests specifically written for it.
https://github.com/ruby/openssl/commit/93a564dec2
rhenium (Kazuki Yamaguchi)
10:26 AM Revision 64a98dec (git): [ruby/openssl] ssl: fix misuse of assert_handshake_error in tests
assert_handshake_error is useful for checking handshake failures
triggered by the peer, as the underlying socket may be closed
prematurely, leading to different exceptions depending on the platform
and timing.
However, when the local en...
rhenium (Kazuki Yamaguchi)
10:26 AM Revision 5791c93f (git): [ruby/openssl] ssl: refactor test case test_verify_mode_server_cert
Minimize the amount of code inside the assert_raise block to avoid
accidentally catching a wrong exception.
https://github.com/ruby/openssl/commit/5089b2d311
rhenium (Kazuki Yamaguchi)
10:26 AM Revision a8b36314 (git): [ruby/openssl] ssl: fix test case test_npn_advertised_protocol_too_long
The list of NPN protocols is validated in SSLContext#setup.
The assert_handshake_error is misleading. The client is unable to start
a handshake at all because the server is not running.
https://github.com/ruby/openssl/commit/e8db6ffd9e
rhenium (Kazuki Yamaguchi)
10:26 AM Revision 1f4fc2e6 (git): [ruby/openssl] ssl: remove start_server_version from tests
Use start_server instead of start_server_version.
start_server_version is a wrapper around start_server that forces the
server to a specific protocol version using the now-deprecated method
SSLSocket#ssl_version=, but it does more than ...
rhenium (Kazuki Yamaguchi)
10:26 AM Revision 237c71fc (git): [ruby/openssl] ssl: remove start_immediately kwarg from test helper start_server
The keyword argument is no longer used by any test cases.
https://github.com/ruby/openssl/commit/2f31605d47
rhenium (Kazuki Yamaguchi)
09:15 AM Misc #21110: Should Marshal.dump always use object links for repeated Float values?
nobu (Nobuyoshi Nakada) wrote in #note-3:
> At least, `Float` should be distinguished only by its value, not its object ID
Bigint has similar behaviour:
``` ruby
Marshal.dump([2**64, 2**64]) #=> "\x04\b[\al+\n\x00\x00\x00\x00\x00\x...
herwin (Herwin W)
08:49 AM Bug #21123 (Rejected): instance_exec with curried proc
I agree with @mame this isn't a bug, and by design.
And I don't see how it could reasonably be changed without breaking lots of code.
byroot (Jean Boussier)
08:48 AM Bug #21124: Enumerable#find called without a block returns Enumerator without size
I really don't understand what the "size" of the Enumerator returned by `find` means, but I guess it returns `nil`, which means "unknown size", because the number of calls depends on the return value of the block.
```ruby
i = 0; [1, ...
mame (Yusuke Endoh)
02:45 AM Bug #21125: Kernel is called first
The reason this works in Ruby 3.3 and below is that `system` is a private method and not a public method, and calls to private methods where the receiver is not `self` call `method_missing`. `raw.system` is a method call where the recei... jeremyevans0 (Jeremy Evans)
02:34 AM Bug #21125: Kernel is called first
jeremyevans0 (Jeremy Evans) wrote in #note-3:
> mikik0 (Hashino Mikiko) wrote in #note-2:
> ...
Sorry, that was me testing the wrong version. The behavior is the same between prism and parse.y, so this is a difference in behavior betw...
jeremyevans0 (Jeremy Evans)
02:32 AM Bug #21125 (Open): Kernel is called first
mikik0 (Hashino Mikiko) wrote in #note-2:
> @jeremyevans0 san
> ...
You are correct. It also works on Ruby 3.4 when using `--parser=parse.y`, so this appears to be related to prism. I'll have to do more analysis to determine which be...
jeremyevans0 (Jeremy Evans)
02:21 AM Bug #21125: Kernel is called first
@jeremyevans0 san
It works with Ruby 3.3 series, but not from Ruby 3.4. Is it a specification?
mikik0 (Hashino Mikiko)
02:01 AM Bug #21125 (Rejected): Kernel is called first
This isn't a bug. If you want `method_missing` to be called instead of a method in Kernel, you need to undefine the existing method:
```ruby
class ObjectifiedHash
undef_method :system
# rest of your example
```
You could...
jeremyevans0 (Jeremy Evans)
01:43 AM Bug #21125 (Closed): Kernel is called first
Kernel#system is being called when there is a column or method name named system.
The other methods of Kernel reproduce the problem.
Ex.Rand returns a random value, and exit terminates the program.
This problem did not occur until R...
mikik0 (Hashino Mikiko)

02/08/2025

10:13 PM Bug #21124 (Rejected): Enumerable#find called without a block returns Enumerator without size
When a collection's size is known then enumerator that iterates it usually has size (that's `#size` returns a collection size).
But an enumerator returned by `Enumerable#find` called without a block doesn't have size:
```ruby
[1, ...
andrykonchin (Andrew Konchin)
03:44 PM Bug #21123: instance_exec with curried proc
Hi @mame san,
Thanks for your explanation and I understood the reason of this behavior.
I have no reasonable thought but I think it would be nice that curried blocks are able to be executed by `#instance_exec`.
taichi730 (Taichi Ishitani)
01:36 PM Bug #21117: Inconsistent behaviour between "_1" and "it" variables
Prism and parse.y parses these two code in the example differently.
~~~ruby
[1, 2, 3].each { it = it + 1; p it }
[1, 2, 3].each { it += 1; p it }
~~~
I think `it` was designed not to break old code that uses local variable `it`,...
tompng (tomoya ishida)
09:29 AM Misc #21019: DevMeeting-2025-02-13
* [Bug #21102] Unexpected encoding when concatenating ASCII string with ASCII compatible string (toy)
* Should `ascii_string + utf8_string` return an ASCII or UTF-8 string when both have 7bit coderange?
byroot (Jean Boussier)
06:59 AM Revision b4865b14 (git): Update bundled gems list as of 2025-02-07
git[bot]

02/07/2025

11:22 PM Bug #20919: IO#seek and IO#pos= do not clear the character buffer in some cases while transcoding
I have a draft of a fix for this one https://github.com/ruby/ruby/pull/12714 mjrzasa (Maciek Rząsa)
09:21 PM Bug #21123: instance_exec with curried proc
I believe this behavior is by design.
`Proc#curry` returns a wrapper Proc that calls to a given Proc. In other words, your code is essentially the same as the following code.
```ruby
a = Object.new
def a.foo(n)
p
end
b = p...
mame (Yusuke Endoh)
02:54 PM Bug #21123 (Rejected): instance_exec with curried proc
I have a question about behavior of `#instance_exec` with a curried proc.
When running `#instance_exex` with a curried proc, it appears that the given proc is executed on the context where it is created but not the receiver object.
...
taichi730 (Taichi Ishitani)
08:47 PM Feature #21121: Ractor channels
I think adding a channel object would be very helpful. I'm looking through shared data structures in Rails, trying to understand what we need to change for Ractor safety. One popular data structure is a Concurrent::Map, and there are v... tenderlovemaking (Aaron Patterson)
08:44 PM Revision e12f5259 (git): Add timeout to compilers workflow
The default timeout on GitHub Actions is 360 minutes, the job usually takes
around 20 to 30 minutes to complete. This commit sets the timeout to be
40 minutes so jobs that hang will timeout faster.
peterzhu2118 (Peter Zhu)
08:14 PM Bug #21122 (Closed): library/socket/basicsocket/recv_nonblock_spec.rb fails with IO::EAGAINWaitReadable sometimes.
Eregon (Benoit Daloze)
01:41 PM Bug #21122: library/socket/basicsocket/recv_nonblock_spec.rb fails with IO::EAGAINWaitReadable sometimes.
Oh, my bad.
Fixed in https://github.com/ruby/ruby/pull/12710.
andrykonchin (Andrew Konchin)
08:30 AM Bug #21122 (Closed): library/socket/basicsocket/recv_nonblock_spec.rb fails with IO::EAGAINWaitReadable sometimes.
After https://github.com/ruby/ruby/commit/d7a5ad2a21f7d2c45e3fea674ff077bb0e2cadae, I got test failure with `library/socket/basicsocket/recv_nonblock_spec.rb` sometimes.
* https://github.com/ruby/ruby/actions/runs/13108171270/job/3656...
hsbt (Hiroshi SHIBATA)
08:13 PM Revision 5454188f (git): Retry on IO::EAGAINWaitReadable when a closed socket is still not available for reading
andrykonchin (Andrew Konchin)
09:40 AM Revision 71785935 (git): Simplified to find gemspecs for bundled gems (#12709)
* Simplified to find gemspecs for bundled gems
Co-authored-by: Nobuyoshi Nakada <[email protected]>
hsbt (Hiroshi SHIBATA)
07:00 AM Revision 8dbbc79e (git): Update bundled gems list as of 2025-02-06
git[bot]
03:09 AM Bug #21117: Inconsistent behaviour between "_1" and "it" variables
> I believe variables `_1` and `it` should have consistent behaviour
Assignments to `it` are currently allowed for compatibility considerations, but I believe they may be prohibited in the future.
BTW, `_1` and `it` are different. `_...
mame (Yusuke Endoh)
02:47 AM Revision e776efdc (git): Support `git ls-files ...`.split style for file list of gemspec
hsbt (Hiroshi SHIBATA)
 

Also available in: Atom