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
-
09:11 PM Revision e0cb069c (git): Remove dead rb_st_nth_key
-
08:54 PM Bug #21111 (Assigned): RbConfig::CONFIG['CXX'] quietly set to "false" when Ruby cannot build C++ programs
-
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 ... -
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... -
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... -
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 -
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 ... -
08:04 PM Revision 127325a4 (git): [ruby/prism] No writing to numbered parameters
- Fixes [Bug #21117]
https://github.com/ruby/prism/commit/19d4bab5a0 -
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... -
06:59 PM Bug #21114: Prism hangs up while parsing deeply nested `def`
- https://github.com/ruby/prism/pull/3461
-
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 -
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 ...
-
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?
-
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... -
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?
-
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.
-
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... -
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... -
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... -
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 ... -
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.... -
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... -
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... -
03:44 PM Misc #21019 (Closed): DevMeeting-2025-02-13
-
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... -
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.
... -
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... -
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...
-
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 ... -
10:53 AM Bug #21132 (Closed): Changed postposition `rescue` and `if` behavior since Ruby 3.4
-
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 -
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... -
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.... -
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 -
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. -
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.
-
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"... -
09:01 AM Revision 4a67ef09 (git): [Feature #21116] Extract RJIT as a third-party gem
-
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... -
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... -
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.
-
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... -
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.
-
05:13 AM Revision 45397f82 (git): Extend timeout with resolv.rb and Windows platform. It's expired with 10sec sometimes.
-
04:12 AM Revision cf00b31b (git): Remove a stale function for MJIT
-
04:06 AM Revision 908fe85d (git): Remove stale comment for MJIT
-
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. -
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 -
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... -
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
-
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 -
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... -
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 -
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 -
12:37 AM Revision bb764e42 (git): [rubygems/rubygems] Extract some common materialization logic to a method
- https://github.com/rubygems/rubygems/commit/32982fcd33
-
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 -
12:37 AM Revision dc8cde47 (git): [rubygems/rubygems] Stub-out additional examples and removed needless Error definition
- https://github.com/rubygems/rubygems/commit/d24d0b5c43
-
12:17 AM Revision e9e4770a (git): Fix .vscode/settings.json for the latest extension
-
12:16 AM Bug #21130 (Closed): Update net-imap for ruby 3.2, 3.3, 3.4
-
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...
02/12/2025
-
11:53 PM Revision abd1b700 (git): [DOC] Fix description comment typo
-
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... -
10:51 PM Revision 0e34a883 (git): Fixed infinite loop with GitHub Actions
- Co-authored-by: Nobuyoshi Nakada <[email protected]>
-
07:18 PM Bug #21129 (Closed): Backporting strscan fix in Ruby 3.2
-
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...
-
07:09 PM Revision 207c6750 (git): Fix rjit_c.rb
-
07:03 PM Revision 16f41eca (git): Remove dead iv_index_tbl field in RObject
-
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 ... -
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.
-
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...
-
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... -
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...
-
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... -
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) ... -
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... -
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... -
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...
-
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... -
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 ... -
01:02 PM Feature #15663: Documenting autoload semantics
- BTW, I am _describing_ how it works, not implying I like it :).
-
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 ... -
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... -
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... -
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... -
08:29 AM Bug #21114 (Assigned): Prism hangs up while parsing deeply nested `def`
-
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
-
08:29 AM Bug #21029 (Assigned): Prism behavior for `defined? (;x)` differs
-
08:29 AM Bug #21120 (Assigned): Segmentation fault when running Rails with MN threads enabled on 3.4.1
-
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... -
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,
... - 04:25 AM Revision b8db606d (git): Update default gems list at abcafb080ce9fe94cb13cca0e813a0 [ci skip]
-
04:15 AM Revision abcafb08 (git): [ruby/json] Release 2.10.1
- https://github.com/ruby/json/commit/aa5b7d6acb
-
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. -
04:12 AM Revision 502bd6ba (git): [ruby/json] Release 2.10.0
- https://github.com/ruby/json/commit/8b56d47254
-
12:46 AM Revision bfcf36fe (git): YJIT doesn't merge archives anymore [ci skip]
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?
-
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... - 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).
-
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 -
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 -
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... -
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... -
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... -
01:04 PM Bug #21124 (Rejected): Enumerable#find called without a block returns Enumerator without size
- Thanks for your confirmation. Closing.
-
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.
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.
-
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... -
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... -
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... -
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 -
08:37 PM Revision b74077c1 (git): [ruby/mmtk] Set Immix as the default plan
- https://github.com/ruby/mmtk/commit/e52b973611
-
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 -
07:32 PM Revision b4bf3ed1 (git): [DOC] Adds section "Hash Inclusion" (#12634)
-
07:31 PM Revision 7fd589c7 (git): [DOC] Tweaks for Hash#assoc (#12726)
-
07:31 PM Revision 57b9b921 (git): [DOC] Tweaks for Hash#clear (#12727)
-
07:23 PM Revision 35afc0d6 (git): [DOC] Tweaks for Hash#any?
- 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. -
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]
``` -
02:23 AM Bug #21124 (Feedback): Enumerable#find called without a block returns Enumerator without size
-
04:29 PM Revision 5b226fdb (git): Support `git ls-files ...`.split style for file list of gemspec
-
04:29 PM Revision 84b60a03 (git): Bump up net-smtp-0.5.1
-
01:47 PM Revision 3fb455ad (git): Move global symbol reference updating to rb_sym_global_symbols_update_references
-
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... -
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... -
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.
-
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. -
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.
-
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
... -
01:05 AM Bug #21122: library/socket/basicsocket/recv_nonblock_spec.rb fails with IO::EAGAINWaitReadable sometimes.
- @andrykonchin Thank you for quick fix.
-
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]>
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. -
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. -
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... -
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... -
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... -
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.
-
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
```... -
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... -
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 -
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 -
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... -
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 -
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 -
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 ... -
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 -
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... -
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. -
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, ... -
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...
-
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... -
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... -
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? -
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... -
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...
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, ... -
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`. -
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`,... -
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?
- 06:59 AM Revision b4865b14 (git): Update bundled gems list as of 2025-02-07
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
-
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... -
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.
... -
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...
-
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. -
08:14 PM Bug #21122 (Closed): library/socket/basicsocket/recv_nonblock_spec.rb fails with IO::EAGAINWaitReadable sometimes.
-
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. -
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... -
08:13 PM Revision 5454188f (git): Retry on IO::EAGAINWaitReadable when a closed socket is still not available for reading
-
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]> - 07:00 AM Revision 8dbbc79e (git): Update bundled gems list as of 2025-02-06
-
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. `_... -
02:47 AM Revision e776efdc (git): Support `git ls-files ...`.split style for file list of gemspec