Project

General

Profile

Activity

From 02/05/2025 to 02/11/2025

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 <segiddins@segiddins.me>
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 <nobu.nakada@gmail.com>
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)

02/06/2025

11:49 PM Revision 2ed1962c (git): [CI] add CI matrix for clang-21
see also https://github.com/llvm/llvm-project/pull/124870 shyouhei (Shyouhei Urabe)
11:15 PM Feature #21121 (Closed): Ractor channels
# Motivation:
It would be nice be able to `Ractor.yield` in a non-blocking way. Right now a `Ractor.yield` blocks until another ractor calls `r.take` on the yielding ractor.
This is bad in the following scenario:
```ruby
main = R...
luke-gru (Luke Gruber)
09:03 PM Bug #21115: Etc.getgrgid is not Ractor-safe but is marked as such
I think having a mutex per unsafe C extension (that you want to make safe) to lock around those library calls would be a good idea. The alternative would
be confusing to users imo, the ractor safety would be system dependant (OS version ...
luke-gru (Luke Gruber)
10:22 AM Bug #21115: Etc.getgrgid is not Ractor-safe but is marked as such
nobu (Nobuyoshi Nakada) wrote in #note-2:
> MT-Safe variants such as `getgrgid_r` may be available, but we don't provide per-method ractor-safe declaration API, for now.
I think it's possible, like:
```c
void Init_foo() {
rb_ext_rac...
Eregon (Benoit Daloze)
03:05 AM Bug #21115: Etc.getgrgid is not Ractor-safe but is marked as such
MT-Safe variants such as `getgrgid_r` may be available, but we don't provide per-method ractor-safe declaration API, for now.
Also `ractor_unsafe_check()` is not exposed.
nobu (Nobuyoshi Nakada)
08:48 PM Bug #21119: Programs containing `Dir.glob` with a thread executing a CPU-heavy task run very slowly.
Yeah sorry it is the GVL, like you guys are saying. There are many syscalls here, it would be nice to just release it at the top and get it back after all the syscalls, but then
there's probably a lot of ruby functions in between the sy...
luke-gru (Luke Gruber)
08:17 PM Bug #21119: Programs containing `Dir.glob` with a thread executing a CPU-heavy task run very slowly.
I don't think we should revert the GVL freeing, but we should really start to think about a smarter scheduler that don't penalize threads that release the GVL. It's a longer project though. byroot (Jean Boussier)
07:25 PM Bug #21119: Programs containing `Dir.glob` with a thread executing a CPU-heavy task run very slowly.
It is simple to revert the GVL-releasing, but then no other thread can run while accessing the filesystem (which may block for a long period of time for networked filesystems). GVL-releasing is a tradeoff. It mitigates damage if the fi... jeremyevans0 (Jeremy Evans)
07:11 PM Bug #21119: Programs containing `Dir.glob` with a thread executing a CPU-heavy task run very slowly.
This might be an issue with Kernel#loop being defined now in Ruby itself, and it never calls a primitive to check interrupts. Checking interrupts and having a timer interrupt would switch threads. You can mimic this by calling `Thread.pa... luke-gru (Luke Gruber)
03:50 PM Bug #21119 (Open): Programs containing `Dir.glob` with a thread executing a CPU-heavy task run very slowly.
Executing the following code in Ruby 3.4.1 takes a very long time, especially when there are many files \(100~\) in the current directory.
This delay does not occur in Ruby 3.3.6.
## Reproducible script
```ruby
# hoge.rb
# Lau...
genya0407 (Yusuke Sangenya)
08:14 PM Bug #21118 (Closed): Calling defined?(it) segfaults
Closing as the other bug is marked as backport for 3.4 already. byroot (Jean Boussier)
07:44 PM Bug #21118: Calling defined?(it) segfaults
It looks like this was fixed in https://github.com/ruby/ruby/pull/12584 so this is working fine on `master`. ufuk (Ufuk Kayserilioglu)
03:36 PM Bug #21118 (Closed): Calling defined?(it) segfaults
```
$ ruby -e '[1, 2, 3].each { p defined?(it) }'
-e: [BUG] Unsupported node PM_IT_LOCAL_VARIABLE_READ_NODE
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24]
-- Crash Report log information -----------------------...
radarek (Radosław Bułat)
05:38 PM Bug #21120 (Closed): Segmentation fault when running Rails with MN threads enabled on 3.4.1
The error can be replicated by checking out the following branch: https://github.com/p8/FrameworkBenchmarks/tree/rails/enable-MN-threads
and running:
```bash
./tfb --test rails --mode verify
```
The following error is raised:
...
p8 (Petrik de Heus)
03:32 PM Bug #21117 (Closed): Inconsistent behaviour between "_1" and "it" variables
I believe variables `_1` and `it` should have consistent behaviour and the same as normal local variables. Here are inconsistencies:
```ruby
# 1. Assigning new value
[1, 2, 3].each { |v| v = v + 1; p v } # works as expected
[1, 2, ...
radarek (Radosław Bułat)
03:01 PM Feature #21084: Declare objects have weak references
Ah yes, I forgot to link the PR: https://github.com/ruby/ruby/pull/12606 peterzhu2118 (Peter Zhu)
12:49 PM Feature #21084: Declare objects have weak references
Is there a PR already? I don't see the link in the description. Eregon (Benoit Daloze)
02:12 PM Revision 9baa0f8c (git): Enable bundled gems in ruby-runner
nobu (Nobuyoshi Nakada)
02:10 PM Revision adbf9c5b (git): [ruby/openssl] test_ssl.rb: Test respecting system default min.
https://github.com/ruby/openssl/commit/7de5ff583a Jun Aruga
12:06 PM Misc #21019: DevMeeting-2025-02-13
* [Feature #21116] Extract RJIT as a third-party gem (k0kubun)
* Are we okay with removing RJIT (`--rjit`) from the Ruby core?
k0kubun (Takashi Kokubun)
11:55 AM Feature #21116 (Closed): Extract RJIT as a third-party gem
## Proposal
* Extract the implementation of `RJIT::C` to ruby/rjit and publish it as a thirt-party gem `rjit`
* Allow `jit_exec()` to call `body->jit_entry` even when `--yjit` is not given
* Remove RJIT from the Ruby core
* Remov...
k0kubun (Takashi Kokubun)
09:22 AM Feature #20309 (Closed): Bundled gems for Ruby 3.5
I migrated all of target gems to bundled gems in master branch.
@k0kubun
FYI: I added workaround to load fiddle from bundled gems at rjit.rb now.
https://github.com/ruby/ruby/blob/master/rjit.rb#L33
This workaround should be...
hsbt (Hiroshi SHIBATA)
07:44 AM Revision ec8e3e37 (git): Only modified LOAD_PATH for RJIT with fiddle provided by bundled gems
hsbt (Hiroshi SHIBATA)
07:02 AM Revision b4bfbcad (git): Optimize Symbol generation in strict mode
Co-authored-by: Jean Boussier <jean.boussier@gmail.com> etienne (Étienne Barrié)
07:02 AM Revision f865148e (git): Fix JSON::Coder to call as_json proc for NaN and Infinity
Co-authored-by: Jean Boussier <jean.boussier@gmail.com> etienne (Étienne Barrié)
06:58 AM Revision dd1fe03b (git): [rubygems/rubygems] Add `irb` to a Gemfile for a newly created gem
I think we need this to silence the following warning when running
`bin/console` with Ruby 3.4
```
./bin/console:10: warning: irb was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3....
y-yagi (Yuji Yaginuma)
06:58 AM Revision ac093f43 (git): [rubygems/rubygems] Auto-heal empty installation directory
https://github.com/rubygems/rubygems/commit/9720a9b980 deivid (David Rodríguez)
06:57 AM Revision 78ef59ac (git): [rubygems/rubygems] Refine messages about gem installations being missing
The previous wording was too specific, there may be situations when the
gem has actually never installed (so never deleted either).
https://github.com/rubygems/rubygems/commit/e4a0d71fbe
deivid (David Rodríguez)
06:57 AM Revision 385dc5dc (git): [rubygems/rubygems] Don't potentially load remote metadata when expanding dependencies
For installed specifications, we can ignore any constraints they may
have, since we know they match the current version of Ruby or otherwise
would not be installed.
For remote specifications, we already resolve optimistically without
me...
deivid (David Rodríguez)
06:57 AM Revision a1716e23 (git): [rubygems/rubygems] Move expanding dependencies with metadata to specification classes
https://github.com/rubygems/rubygems/commit/7f921aa46e deivid (David Rodríguez)
06:57 AM Revision 24f5e301 (git): [rubygems/rubygems] Metadata dependencies can be `Gem::Dependency` instances
They use less memory that way.
When resolving from scratch a Gemfile including only `"gem "rails", "~>
8.0.1"`, I get the following results:
### Before
Total allocated: 265.06 MB (3186053 objects)
Total retained: 116.98 MB (1302280 o...
deivid (David Rodríguez)
06:57 AM Revision 7fed6c88 (git): [rubygems/rubygems] Remove unnecessary remapping of dependencies
Sometimes we'll resolve using bare `Gem::Dependency` instances rather
than `Bundler::Dependency` instances, which is fine, simpler, and saves
some memory.
When resolving from scratch a Gemfile including only `"gem "rails", "~>
8.0.1"`, ...
deivid (David Rodríguez)
06:57 AM Revision 4c0cf2de (git): [rubygems/rubygems] Make `Bundler::Dependency` more memory efficient
When resolving from scratch a Gemfile including only `"gem "rails", "~>
8.0.1"`, I get the following results:
### Before
Total allocated: 288.21 MB (3498515 objects)
Total retained: 119.10 MB (1357976 objects)
### After
Total alloca...
deivid (David Rodríguez)
06:57 AM Revision 8e788301 (git): [rubygems/rubygems] Lazily parse dependencies in EndpointSpecification
Since not every dependency gets referenced.
When resolving from scratch a Gemfile including only `"gem "rails", "~>
8.0.1"`, I get the following results:
### Before
Total allocated: 295.01 MB (3624335 objects)
Total retained: 119.31 ...
deivid (David Rodríguez)
04:07 AM Revision c8337067 (git): Improve bundled gems warning messages
Currently evenn if the require actually fails, they suggest that the
file was actually loaded, which is confusing. I reworded them to reduce
this confusion.
deivid (David Rodríguez)
04:07 AM Revision 03a0c4e0 (git): Rename "gem" to "name"
The name "gem" could be confused with RubyGems activation method. deivid (David Rodríguez)
04:07 AM Revision 433f4e30 (git): Simplify bundled gems warnings implementation
Most of the stuff is not actually necessary. deivid (David Rodríguez)
04:07 AM Revision 68bb6cee (git): Remove unnecessary SINCE_FAST_PATH constant
If anything, I think this may be causing some false positives. deivid (David Rodríguez)
12:49 AM Revision da75893d (git): Bump up actions/upload-artifact-4.4.1
hsbt (Hiroshi SHIBATA)
12:49 AM Revision 15b77a09 (git): [DOC] ractor.md: Remove link to Complex class
Daisuke Aritomo

02/05/2025

11:57 PM Revision 6ca8bc85 (git): Launchable: Fix broken links by passing GITHUB_SERVER_URL (#12704)
@peterzhu2118 mentioned that "View workflow run" button is broken in Launchable. It's because invalid URL is sent from compilers/actions.yaml. Launchable CLI builds URL based on the environment variables. In those variables, GITHUB_SERVE... ono-max (Naoto Ono)
10:09 PM Bug #20919: IO#seek and IO#pos= do not clear the character buffer in some cases while transcoding
I rerun tests on 3.5.0 and it's indeed related to transcoding
```
puts "Hello dev-ruby! #{RUBY_VERSION}"
require 'tempfile'
Tempfile.open() do |f|
f.write('0123456789')
f.rewind
f.ungetc('a')
# Character buffer WILL NOT...
mjrzasa (Maciek Rząsa)
09:19 PM Bug #20919: IO#seek and IO#pos= do not clear the character buffer in some cases while transcoding
It works OK with StringIO (unsurprisingly)
```
StringIO.open() do |f|
f.write('0123456789')
f.rewind
f.ungetc('a')
# Character buffer WILL NOT be cleared
f.seek(2)
f.getc
end
# => "1"
```
mjrzasa (Maciek Rząsa)
02:56 PM Bug #20919: IO#seek and IO#pos= do not clear the character buffer in some cases while transcoding
I've reproduced it without transcoding:
```ruby
Tempfile.open() do |f|
f.write('0123456789')
f.rewind
f.ungetc('a')
# Character buffer WILL NOT be cleared
f.seek(2, :SET)
f.getc # => 'a'
end
# => 'a'
```
mjrzasa (Maciek Rząsa)
04:05 PM Bug #21115: Etc.getgrgid is not Ractor-safe but is marked as such
I think most methods of Etc have the same problem, so it's probably best to mark none of them as thread-safe, or only some known as thread-safe and frequently-used like `Etc.nprocessor` and `Etc.uname` (but should still be reviewed if th... Eregon (Benoit Daloze)
04:00 PM Bug #21115 (Closed): Etc.getgrgid is not Ractor-safe but is marked as such
```ruby
require 'etc'
20.times.map do
Ractor.new do
1000.times do
raise unless Etc.getgrgid(Process.gid).gid == Process.gid
end
end
end.each(&:take)
```
(inspired from https://github.com/ruby/spec/blob/658b5...
Eregon (Benoit Daloze)
11:24 AM Bug #21114 (Closed): Prism hangs up while parsing deeply nested `def`
~~~ruby
Prism.parse "def f\n" * 500 # Ruby 3.4
Prism.parse "def f\n" * 5000 # Ruby 3.5
Prism.parse "def initialize: ()->void\n" * 250 # Ruby 3.4
Prism.parse "def initialize: ()->void\n" * 2500 # Ruby 3.5
#=> hang up, Ctrl-C doesn't ...
tompng (tomoya ishida)
11:17 AM Misc #21110: Should Marshal.dump always use object links for repeated Float values?
https://github.com/ruby/ruby/pull/12703 nobu (Nobuyoshi Nakada)
08:15 AM Revision 141f2924 (git): The test of net-smtp-0.5.1 is working with Windows platform now
hsbt (Hiroshi SHIBATA)
06:20 AM Revision 7796db24 (git): Update bundled gems list at ae026ff65b85cd4ebea891825e9ced [ci skip]
git[bot]
06:19 AM Revision ae026ff6 (git): Update bundled_gems
hsbt (Hiroshi SHIBATA)
05:55 AM Bug #21113 (Closed): net-smtp.gemspec is broken at Ruby 3.3/3.4
This issue is fixed at https://github.com/ruby/net-smtp/releases/tag/v0.5.1
I prepared to backport for Ruby 3.3 and 3.4
* https://github.com/ruby/ruby/pull/12698
* https://github.com/ruby/ruby/pull/12699
hsbt (Hiroshi SHIBATA)
05:46 AM Bug #21113 (Closed): net-smtp.gemspec is broken at Ruby 3.3/3.4
The bundled `net-smtp-0.4.0.1` at Ruby 3.3 and `net-smtp-0.5.0` at Ruby 3.4 are broken.
```
❯ diff -u 3.2.7/lib/ruby/gems/3.2.0/specifications/net-smtp-0.3.4.gemspec 3.3.7/lib/ruby/gems/3.3.0/specifications/net-smtp-0.4.0.1.gemspec
...
hsbt (Hiroshi SHIBATA)
03:48 AM Revision c204cf7c (git): [rubygems/rubygems] Deprecate `CurrentRuby#maglev?` and other related maglev methods:
- Follow up to https://github.com/rubygems/rubygems/pull/8430#discussion_r1927239555.
The maglev platform was not supported by Bundler, so calling
`gem "foo", platforms: ["maglev"]` would raise an error.
The helpers added in the ...
Edouard CHIN
02:37 AM Revision afb47a1f (git): Bump capstone from 0.12.0 to 0.13.0 in /yjit
Bumps [capstone](https://github.com/capstone-rust/capstone-rs) from 0.12.0 to 0.13.0.
- [Release notes](https://github.com/capstone-rust/capstone-rs/releases)
- [Changelog](https://github.com/capstone-rust/capstone-rs/blob/master/CHANGEL...
dependabot[bot]
02:05 AM Revision 50e48a20 (git): Generate the latest version number from OpenSSL LTS releases
hsbt (Hiroshi SHIBATA)
01:37 AM Revision 920d1555 (git): Update default gems list at 425a93fb1bb9a3059fab5527d4ab31 [ci skip]
git[bot]
01:36 AM Revision 425a93fb (git): Removed unused parameters for building docker image
hsbt (Hiroshi SHIBATA)
 

Also available in: Atom