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?
-
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 <segiddins@segiddins.me>
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 <nobu.nakada@gmail.com> - 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
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
-
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... -
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 ... -
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... -
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.
-
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... -
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.
-
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...
-
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...
-
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... -
08:14 PM Bug #21118 (Closed): Calling defined?(it) segfaults
- Closing as the other bug is marked as backport for 3.4 already.
-
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`.
-
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 -----------------------... -
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:
... -
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, ... -
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
-
12:49 PM Feature #21084: Declare objects have weak references
- Is there a PR already? I don't see the link in the description.
-
02:12 PM Revision 9baa0f8c (git): Enable bundled gems in ruby-runner
- 02:10 PM Revision adbf9c5b (git): [ruby/openssl] test_ssl.rb: Test respecting system default min.
- https://github.com/ruby/openssl/commit/7de5ff583a
-
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? -
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... -
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... -
07:44 AM Revision ec8e3e37 (git): Only modified LOAD_PATH for RJIT with fiddle provided by bundled gems
-
07:02 AM Revision b4bfbcad (git): Optimize Symbol generation in strict mode
- Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
-
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>
-
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.... -
06:58 AM Revision ac093f43 (git): [rubygems/rubygems] Auto-heal empty installation directory
- https://github.com/rubygems/rubygems/commit/9720a9b980
-
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 -
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... -
06:57 AM Revision a1716e23 (git): [rubygems/rubygems] Move expanding dependencies with metadata to specification classes
- https://github.com/rubygems/rubygems/commit/7f921aa46e
-
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... -
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"`, ... -
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... -
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 ... -
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. -
04:07 AM Revision 03a0c4e0 (git): Rename "gem" to "name"
- The name "gem" could be confused with RubyGems activation method.
-
04:07 AM Revision 433f4e30 (git): Simplify bundled gems warnings implementation
- Most of the stuff is not actually necessary.
-
04:07 AM Revision 68bb6cee (git): Remove unnecessary SINCE_FAST_PATH constant
- If anything, I think this may be causing some false positives.
-
12:49 AM Revision da75893d (git): Bump up actions/upload-artifact-4.4.1
- 12:49 AM Revision 15b77a09 (git): [DOC] ractor.md: Remove link to Complex class
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...
-
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... -
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"
``` -
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'
``` -
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...
-
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... -
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 ... -
11:17 AM Misc #21110: Should Marshal.dump always use object links for repeated Float values?
- https://github.com/ruby/ruby/pull/12703
-
08:15 AM Revision 141f2924 (git): The test of net-smtp-0.5.1 is working with Windows platform now
- 06:20 AM Revision 7796db24 (git): Update bundled gems list at ae026ff65b85cd4ebea891825e9ced [ci skip]
-
06:19 AM Revision ae026ff6 (git): Update bundled_gems
-
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
-
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
... - 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 ... - 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... -
02:05 AM Revision 50e48a20 (git): Generate the latest version number from OpenSSL LTS releases
- 01:37 AM Revision 920d1555 (git): Update default gems list at 425a93fb1bb9a3059fab5527d4ab31 [ci skip]
-
01:36 AM Revision 425a93fb (git): Removed unused parameters for building docker image