Activity
From 10/22/2025 to 10/28/2025
Today
- 08:47 PM Revision afb0d431 (git): ZJIT: Drop --seed from test-all on CI (#14976)
-
08:45 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Eregon (Benoit Daloze) wrote in #note-27:
> If the gem is a noop then of course it would not matter, but I'm unsure if the gem should be a noop.
I can't answer if it "should", but at least that's how it works with `set`, so at least ... -
07:02 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- If the gem is a noop then of course it would not matter, but I'm unsure if the gem should be a noop.
There is also the issue that core already uses the pathname C extension, and loading the gem pathname C extension might cause issues, i... -
02:34 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Ah, thank you very much, now I see it.
So this #4 issue could be solved by implementing the 3 methods as shims that load the necessary dependencies, which then allows pathname to do `rb_provide("pathname.rb")` -
02:06 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Dan0042 (Daniel DeLorme) wrote in #note-24:
> So the issue here is that pathname doesn't use this `rb_provide` ?
pathname does use `rb_provide`:
```
$ git grep rb_provide pathname.c
pathname.c: rb_provide("pathname.so");
```... -
01:15 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- > It's normal behavior when moving from stdlib to core that `rb_provide` is used to make it appear that the library has already been loaded. Having `set.rb` in `$"` makes it so code that uses `require 'set'` does not cause files to be lo...
-
09:20 AM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Dan0042 (Daniel DeLorme) wrote in #note-19:
> But _why_? If there's an actual problem with this approach I would like to hear it. If it's just because it "feels unclean" then I would like the core team to prioritize usefulness over these... -
01:02 AM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Dan0042 (Daniel DeLorme) wrote in #note-21:
> But that doesn't happen with `require "set"`. In fact, the "set" gem appear to never be loaded at all?! Sorry, I can't make sense of these divergent behaviors.
It's normal behavior when m... - 08:18 PM Revision d0c7234b (git): ZJIT: Support ParallelMov into memory (#14975)
-
08:14 PM Revision 599de290 (git): YJIT, ZJIT: Fix unnecessary `use` of macros
- https://github.com/ruby/ruby/actions/runs/18887695798/job/53907237061?pr=14975
-
07:49 PM Revision 882e1677 (git): Update to ruby/spec@3bc45ba
-
06:51 PM
Feature #20205: Enable `frozen_string_literal` by default
- ______________________________________________
-
06:44 PM Feature #20205: Enable `frozen_string_literal` by default
- matz (Yukihiro Matsumoto) wrote in #note-75:
> Probably we would have Ruby4.0 in 2025, but I am not going to make frozen-string-literal default this year.
That's unfortunate, but OTOH it makes sense because first we need to make the ... -
06:48 PM Misc #21647: DevMeeting-2025-11-13
- * [Feature #20205] Enable `frozen_string_literal` by default (eregon)
* Let's decide in which release the chilled string deprecation warning shows up regardless of verbosity level (R1) to make progress on this. How about 4.0?
* Oth... -
06:36 PM Revision 8a765975 (git): ZJIT: Split HIR tests (#14967)
- `hir.rs` was getting rather large, so I've opted to move the inline tests into their own files. This should also help when looking for where to put your tests, as the optimization tests have a dedicated file.
Future follow up work could... - 05:37 PM Revision a9d42f7c (git): ZJIT: Print percentage of GuardType failure
- 05:37 PM Revision 2c90da46 (git): ZJIT: Count GuardType instructions
- We can measure how many we can remove by adding type information to C
functions, etc. -
05:08 PM Bug #21652 (Open): Marshal#dump documentation out-of-date/unclear regarding Data class
- With the introduction of the `Data` class in Ruby 3.2, the `Marshal#dump` documentation is confusing since it claims that "Marshal can’t dump ... an instance of ... Data". It is even cross-linked to the new `Data` class. However, and tha...
-
04:25 PM Revision f6cd20c6 (git): ZJIT: Split frame_setup_teardown tests
-
04:25 PM Revision 0e1d99ce (git): ZJIT: Move c_stack_slots to Assembler
-
04:25 PM Revision cc051ef0 (git): ZJIT: Simplify Assembler constructors
-
04:25 PM Revision b463c1a9 (git): ZJIT: Stop computing offset on gen_push_opnds
- Once we add register spill, the C stack will have not only spilled basic
block params but also spilled VRegs.
We won't know how many stack slots are used for spilled VRegs until
alloc_regs, so you can't compute an offset as of writing LIR. -
04:25 PM Revision 9b3df50d (git): ZJIT: Allow ALLOC_REGS to have an odd number of regs
-
04:25 PM Revision b66c57be (git): ZJIT: Print unexpected operands on x86_64
-
04:24 PM Revision ec1b9bbd (git): ZJIT: Call test again after profiling it
- It's a call_threshold: 2 test
https://github.com/ruby/ruby/pull/14933#discussion_r2469731499 -
03:44 PM Revision 7a736545 (git): ZJIT: Specialize Array#pop for no argument case (#14933)
- Fixes https://github.com/Shopify/ruby/issues/814
This change specializes the case of calling `Array#pop` on a non frozen array with no arguments. `Array#pop` exists in the non-inlined C function list in the ZJIT SFR performance burndown... - 02:49 PM Revision 2e2f31c8 (git): ZJIT: Add IsBitNotEqual and inline BasicObject#!=
- 02:49 PM Revision c2bef01b (git): ZJIT: Optimize Kernel#===
- 02:49 PM Revision e973baa8 (git): ZJIT: Add BoxBool and remove CCall from BasicObject#==
- 02:49 PM Revision a4f8afce (git): ZJIT: Use FnProperties::default()
- 02:49 PM Revision 2a6e5d7d (git): ZJIT: Allow both inlining and annotating properties
- 02:49 PM Revision 74255204 (git): ZJIT: Remove redundant annotation
- 02:49 PM Revision 3624031b (git): ZJIT: Inline Kernel#nil? and NilClass#nil?
- We can fully remove the CCall now.
-
12:02 PM Revision b0825d78 (git): Restore old version of Gem::Installer#install for default gems installation
-
11:06 AM Revision 52451798 (git): [ruby/rubygems] Simulate default gems manually
- https://github.com/ruby/rubygems/commit/c3cc38c72c
-
11:06 AM Revision 3afe8ed4 (git): [ruby/rubygems] Introduce default_spec_dir when it's not provided
- https://github.com/ruby/rubygems/commit/e9bd59699c
-
11:06 AM Revision 7bd7bcbf (git): [ruby/rubygems] Removed default bundler spec from specification directory
- https://github.com/ruby/rubygems/commit/6fbbde48e2
-
11:06 AM Revision ceb2b569 (git): [ruby/rubygems] Added install_default_gem method for testing
- https://github.com/ruby/rubygems/commit/81dbd42abf
-
11:06 AM Revision d67aba8a (git): [ruby/rubygems] Completely removed install_as_default feature
- https://github.com/ruby/rubygems/commit/15e46a3a68
-
11:06 AM Revision 523474bd (git): [ruby/rubygems] Deprecate --default option
- https://github.com/ruby/rubygems/commit/55745ee0f8
-
10:43 AM Bug #21651 (Feedback): replacing a string with one backslash with two backslashes
- From [String@Substitution+Methods]:
> Note that <tt>\\\\</tt> is interpreted as an escape, i.e., a single backslash.
> ...
This is what happens at the first line.
Since a space after a backslash is not a valid escape, the result a... -
09:10 AM Bug #21651 (Feedback): replacing a string with one backslash with two backslashes
- ruby 2.7.8p225 (2023-03-30 revision 1f4d455848) [x86_64-linux]
ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux]
```
irb(main):002> "\\".gsub("\\", "\\\\")
=> "\\"
irb(main):003> "\\".gsub("\\", "\\ \\")
=> "\\ \\... -
10:11 AM Feature #21650: Performance regression: Rational#floor(ndigits) extremely slow for huge ndigits in Ruby 3.4 (ok in 3.2)
- Sure, thanks for clarification and fast reply.
-
09:29 AM Feature #21650 (Feedback): Performance regression: Rational#floor(ndigits) extremely slow for huge ndigits in Ruby 3.4 (ok in 3.2)
- Thank you for your reply.
I found a clearer case:
```ruby
p Rational(1, 3).floor(2**1) #=> (33/100)
p Rational(1, 3).floor(2**2) #=> (3333/10000)
p Rational(1, 3).floor(2**3) #=> (33333333/100000000)
p Rational(1, 3).floor(2**4... -
09:13 AM Feature #21650: Performance regression: Rational#floor(ndigits) extremely slow for huge ndigits in Ruby 3.4 (ok in 3.2)
- mame (Yusuke Endoh) wrote in #note-3:
> Thank you for the report.
> ...
1. It wasn't involved in any production usage, we have fuzzy tests which generated this and it was in our test suite. Therefore I was surprised by performance degr... -
09:03 AM Feature #21650: Performance regression: Rational#floor(ndigits) extremely slow for huge ndigits in Ruby 3.4 (ok in 3.2)
- Thank you for the report.
As the warning indicates, prior to Ruby 3.4 (up to 3.3), attempting to generate a huge `Integer` would return `Float::INFINITY`. Ruby 3.4 removed this inaccurate truncation, which is why it now takes longer. (#... -
08:21 AM Feature #21650 (Feedback): Performance regression: Rational#floor(ndigits) extremely slow for huge ndigits in Ruby 3.4 (ok in 3.2)
- ## Summary
`Rational#floor(ndigits)` with a very large positive ndigits takes tens of seconds in Ruby 3.4, while it returns essentially instantly in Ruby 3.2. Reproducible on macOS and Linux. Looks like a missing fast‑path for rationals... -
08:28 AM Revision a27f430d (git): [ruby/rubygems] Make more shortly with https://rubyonrails.org/conduct
- https://github.com/ruby/rubygems/commit/62ba34d6c9
-
08:28 AM Revision 7550f7e4 (git): [ruby/rubygems] Update new gem CoC and prompt
- Prompt wording "prefer safe, respectful, productive, and collaborative spaces" is copied verbatim from Ruby Community Conduct Guideline.
https://github.com/ruby/rubygems/commit/6cdf5f6d8a - 07:50 AM Revision aab390aa (git): [ruby/json] Use Vector API in the Java Extension
- Overview
This PR uses the [jdk.incubator.vector module](https://docs.oracle.com/en/java/javase/20/docs/api/jdk.incubator.vector/jdk/incubator/vector/package-summary.html) as mentioned in [issue #739](https://github.com/ruby/json/issues/... -
07:28 AM Revision d82a590a (git): sync_default_gems.rb: Show `git diff` on failed sync
-
04:07 AM Revision 0f5c69b3 (git): [DOC] Moved non ASCII documents to separated files
- C99 does not declare ways to designate the charset encoding of the
source file. We can assume just US-ASCII characters will be safe. -
04:07 AM Revision 02d53bab (git): [ruby/stringio] [DOC] Doc for StringIO#each_byte
- (https://github.com/ruby/stringio/pull/157)
https://github.com/ruby/stringio/commit/624ce56b4e
Co-authored-by: Sutou Kouhei <kou@cozmixng.org> - 03:58 AM Revision d864bd1a (git): Update default gems list at b3191d204b8b4fe4b29cf73cd09a1b [ci skip]
-
03:57 AM Revision b3191d20 (git): [ruby/erb] Version 5.1.3
- https://github.com/ruby/erb/commit/e8d382a83e
- 03:50 AM Revision 4511e962 (git): Update default gems list at f7eee3427dcc8b644b9fd6c854f3e1 [ci skip]
-
03:49 AM Revision f7eee342 (git): [ruby/erb] Version 5.1.2
- https://github.com/ruby/erb/commit/daa0e8712f
-
03:09 AM Revision 218c2805 (git): [ruby/stringio] [DOC] Doc for StringIO#each_codepoint
- (https://github.com/ruby/stringio/pull/159)
https://github.com/ruby/stringio/commit/6628d4837b
Co-authored-by: Sutou Kouhei <kou@cozmixng.org> -
03:06 AM Revision 9fd32ee4 (git): [ruby/stringio] [DOC] Doc for StringIO#each_char
- (https://github.com/ruby/stringio/pull/158)
https://github.com/ruby/stringio/commit/ec6bf815ae
Co-authored-by: Sutou Kouhei <kou@cozmixng.org> -
03:06 AM Misc #21646 (Closed): Propose Luke Gruber as a Ruby committer
- I've finished to prepare Luke's account. Please let me know if you have any issues for developing Ruby.
-
03:05 AM Misc #21609 (Closed): Propose Stan Lo (@st0012) as a core committer
- I've finished to prepare Stan's account. Please let me know if you have any issues for developping Ruby.
-
01:19 AM Revision 836fc00e (git): [DOC] Tweaks for String#swapcase
-
01:18 AM Revision e3c4298d (git): [DOC] Tweaks for String#swapcase!
-
01:14 AM Revision bf2663ce (git): [DOC] Tweaks for String#sum
10/27/2025
-
11:25 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- > The issue with `Pathname` is that it was not fully converted to core, only partially converted.
Yes that's the issue with the 3 methods missing from core Pathname, but @eregon's point 4 was about conflicts when `require "pathname"` ... -
07:45 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Dan0042 (Daniel DeLorme) wrote in #note-19:
> Doesn't `Set` have the same problems?
No.
> ...
In Ruby 3.2, `set` was default gem, and `Set` was an autoloaded constant. The `set` library was not required when a method was called (u... -
06:37 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- > That's consensus with akr and me. We should avoid loading other libraries by simply calling methods from the embedded core classes.
But *why*? If there's an actual problem with this approach I would like to hear it. If it's just bec... - 10:57 PM Revision e5e32acc (git): ZJIT: Annotate Kernel#frozen? as returning BoolExact
- 10:57 PM Revision c3c25443 (git): ZJIT: Annotate Symbol#to_s and Symbol#name as returning StringExact
- 10:57 PM Revision 46525fa7 (git): ZJIT: Add return_type to inlined InvokeBuiltin
- 10:57 PM Revision 3fb96ee9 (git): ZJIT: Inline method calls to ISEQs that just do leaf Primitive calls
-
10:53 PM Revision 8d45e1f3 (git): ZJIT: Fix internal compiler error looking up profiles for trace_getinstancevariable (#14969)
- We treat getinstancevariable differently from other opcodes: it does not
look at the stack for its self operand, but instead looks at
`cfp->self`. In some cases, we might see the `trace_` variant in the
front-end, so make sure we treat t... -
08:45 PM Revision d97fb3b4 (git): ZJIT: Print out full path to --zjit-trace-exits output (#14966)
- * ZJIT: Print out full path to --zjit-trace-exits output
This helps with any `chdir`-related issues.
* Don't include dot
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
---------
Co-authored-by: Takashi Kokubun <takashikkbn@... -
08:15 PM Misc #21646 (Assigned): Propose Luke Gruber as a Ruby committer
-
08:15 PM Misc #21609 (Assigned): Propose Stan Lo (@st0012) as a core committer
-
07:56 PM Revision 68d9f7c3 (git): ZJIT: Remove unnecessary 'static annotation from gen_hir_type.rb
-
07:56 PM Revision a12aa2b5 (git): ZJIT: Since Param is unit struct, elide destructuring
-
07:56 PM Revision ac57a5c4 (git): ZJIT: Use .is_empty() for clarity
-
07:56 PM Revision fa0eab28 (git): ZJIT: Use .first() in lieu of .get(0)
-
07:56 PM Revision aabec60c (git): ZJIT: Elide unnecessary 'static annotation
-
07:56 PM Revision 79db7d52 (git): ZJIT: Remove unnecessary `as` casts
-
07:56 PM Revision c112368e (git): ZJIT: Use std::ptr::null instead of casts
-
07:56 PM Revision 5c4d76c9 (git): ZJIT: Remove unnecessary #[test] annotation
-
07:56 PM Revision a395d9c0 (git): ZJIT: Simplify complex type to BranchEncoder
-
07:56 PM Revision 1d897f56 (git): ZJIT: Elide unnecessary return statements
- 07:26 PM Revision 74c3bd77 (git): ZJIT: Remove a duplicated annotation (#14968)
-
05:33 PM Bug #21649 (Open): Ractors can access non-shareable object through singleton classes
- If we send a non-shareable object into a Ractor, it needs to be copied.
```
❯ ruby -W0 -e 'Ractor.new(p(Object.new)) { |o| p(o) }.join'
#<Object:0x00000001240f8cf8>
#<Object:0x00000001240f8870>
```
However we're able to instead... -
04:20 PM Bug #21648: [prism] ruby crashes for `for * in [10]; end`
- @kddnewton can you mark for backport? Thanks!
-
03:28 PM Bug #21648 (Closed): [prism] ruby crashes for `for * in [10]; end`
- Applied in changeset commit:git|0b0da6c4b26f80ad6985722d3fc0f5cdee09125d.
----------
Correctly compile splats in for-loop index in prism
Fixes [Bug #21648]
This is a followup to https://github.com/ruby/ruby/pull/13597.
The added test ... -
12:23 PM Bug #21648: [prism] ruby crashes for `for * in [10]; end`
- https://github.com/ruby/ruby/pull/14963
-
10:39 AM Bug #21648 (Closed): [prism] ruby crashes for `for * in [10]; end`
- ```sh
$ ruby -e "for * in [10]; end"
-e:1: [BUG] Stack consistency error (sp: 15, bp: 14)
ruby 3.4.6 (2025-09-16 revision dbd83256b1) +PRISM [x86_64-linux]
-- Control frame information ----------------------------------------------... -
03:28 PM Revision 0b0da6c4 (git): Correctly compile splats in for-loop index in prism
- Fixes [Bug #21648]
This is a followup to https://github.com/ruby/ruby/pull/13597.
The added test passed but didn't emit the same instructions.
This also handles bare splats and aligns instructions for all cases -
11:47 AM Revision 308fb9c8 (git): Fix a comment [ci skip]
-
09:22 AM Revision 2a9d15b9 (git): [ruby/json] parser.c: Fix indentation in json_decode_integer
- https://github.com/ruby/json/commit/f228b30635
-
09:21 AM Revision 14cbe0de (git): [ruby/json] Use locale indepenent version of `islapha`
- https://github.com/ruby/json/commit/1ba1e9bef9
-
07:53 AM Revision d0a6780d (git): [ruby/stringio] [DOC] Split the examples `StringIO` into the document file
- https://github.com/ruby/stringio/commit/04ba28af00
-
07:35 AM Revision d17d49d4 (git): [ruby/rubygems] bundler_4_mode always return true
- https://github.com/ruby/rubygems/commit/b2e1810067
-
07:35 AM Revision 79684cea (git): [ruby/rubygems] Drop to support old git
- https://github.com/ruby/rubygems/commit/687ffd7265
-
07:33 AM Revision 6a1644dd (git): [ruby/rubygems] If we use shared GEM_HOME and install multiple versions, it may cause unexpected test failures.
- ```
Fetching gem metadata from https://gem.repo4/.
Resolving dependencies...
Resolving dependencies...
# $? => 0
cannot load such file -- diff/lcs
```
https://github.com/ruby/rubygems/commit/668b300261 -
07:33 AM Revision 504a1ba7 (git): [ruby/rubygems] Use dummy gem instead of uri.
- If we install uri-1.0.4 as default gems. The example may be failed with
version miss-match.
https://github.com/ruby/rubygems/commit/fd2dcb502b -
06:54 AM Revision 1b57e557 (git): [ruby/openssl] test: remove unused small test keys
- Previous commits removed all usages of those small keys.
https://github.com/ruby/openssl/commit/f9d87d7912 -
06:54 AM Revision d0ea9c0c (git): [ruby/openssl] ssl: update keys used in tests
- Use generic keys whenever possible.
https://github.com/ruby/openssl/commit/73d6a25360 -
06:54 AM Revision a9ba78e4 (git): [ruby/openssl] pkey: update keys used in tests
- Use generic keys whenever possible.
https://github.com/ruby/openssl/commit/90d6af60b9 -
06:54 AM Revision f90ca1a0 (git): [ruby/openssl] ocsp: update keys used in tests
- Use generic keys whenever possible.
https://github.com/ruby/openssl/commit/cc4d40525c -
06:54 AM Revision 709aa728 (git): [ruby/openssl] ns_spki: update keys used in tests
- Use generic keys whenever possible.
https://github.com/ruby/openssl/commit/ef4fa5e9b4 -
06:54 AM Revision bf244356 (git): [ruby/openssl] asn1: update keys used in tests
- Use generic keys whenever possible.
https://github.com/ruby/openssl/commit/689fc271b1 -
06:54 AM Revision 1c709970 (git): [ruby/openssl] x509: update keys used in tests
- Replace fixed-sized RSA keys with the generic rsa-{1,2,3}.pem keys.
Those test cases do not depend on specific keys or key sizes, and just
need several different keys.
Replace DSA keys with EC keys so that we can run more tests in the F... -
06:54 AM Revision e5ac2b89 (git): [ruby/openssl] cipher: various docs improvements
- The EVP_CIPHER_CTX = OpenSSL::Cipher interface for AEAD ciphers is
notoriously complicated and full of pitfalls. I tried to clarify docs
so that users can hopefully connect the Ruby methods with the
corresponding OpenSSL man pages more e... -
06:36 AM Revision ecf5aa18 (git): [ruby/openssl] Sync History.md
-
06:33 AM Revision b839deec (git): [ruby/openssl] Check NULL values for deprecated EVP_PKEY_get0() functions
- In OpenSSL <= 1.1.1, EVP_PKEY_get0() always returned a valid object, so
a NULL check was not necessary. In OpenSSL 3.0, the function can return
NULL (https://docs.openssl.org/3.0/man7/migration_guide/#deprecated-function-mappings),
so gu... -
06:21 AM Revision db59619c (git): [ruby/rubygems] Fixup
- https://github.com/ruby/rubygems/commit/9b3a5a8ae9cd
https://github.com/ruby/rubygems/commit/8f6eb4ac64 - 05:51 AM Revision f6d2aef3 (git): [ruby/openssl] Update link to OpenSSL configuration file docs
- https://github.com/ruby/openssl/commit/02ff964114
-
04:24 AM Revision e221a4b7 (git): [ruby/stringio] [DOC] Doc for StringIO#each
- (https://github.com/ruby/stringio/pull/154)
https://github.com/ruby/stringio/commit/eca2588274 -
04:23 AM Revision 2dd01c8f (git): [ruby/stringio] [DOC] Tweaks for StringIO#close_write
- (https://github.com/ruby/stringio/pull/150)
https://github.com/ruby/stringio/commit/ea6e36f797
Co-authored-by: Sutou Kouhei <kou@cozmixng.org> -
03:42 AM Revision a1a3857c (git): [ruby/win32-registry] Use pathspecs to select needed files in the gem file
- Exclude other git management files too.
https://github.com/ruby/win32-registry/commit/3be0188111 - 03:02 AM Revision 342dfd78 (git): [ruby/resolv] win32/resolv: fix loading of `NV Domain`
- https://github.com/ruby/resolv/commit/da14f1f2fc
-
01:52 AM Revision 4bd9cbd3 (git): Omit unknown DNS issue of macOS 26.1 beta
- ```
TestResolvDNS#test_no_server:
Test::Unit::ProxyError: Timeout::Error
/path/to/ruby/test/resolv/test_dns.rb:531:in 'TestResolvDNS#test_no_server'
``` -
01:02 AM Revision fcf8b10b (git): [ruby/stringio] [DOC] Tweaks for StringIO#close_read
- (https://github.com/ruby/stringio/pull/149)
https://github.com/ruby/stringio/commit/11995db341 -
01:02 AM Revision daaa09bc (git): [ruby/stringio] [DOC] Tweaks for StringIO.closed_read?
- (https://github.com/ruby/stringio/pull/152)
https://github.com/ruby/stringio/commit/7ded426718 -
01:01 AM Revision 947e5baa (git): [ruby/stringio] [DOC] Tweaks for StringIO.closed_write?
- (https://github.com/ruby/stringio/pull/153)
https://github.com/ruby/stringio/commit/3e9d576441
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
10/26/2025
-
10:59 PM Revision 52ea2220 (git): Fix segfault when moving nested objects between ractors during GC
- Fixes a segmentation fault when moving nested objects between ractors with GC stress enabled and YJIT.
The issue is a timing problem: `move_enter` allocates new object shells but leaves their contents uninitialized until `move_leave` co... -
10:46 PM Bug #21560: RUBY_MN_THREADS=1 causes large performance regression in Puma 7
- Sent a PR to fix this https://github.com/ruby/ruby/pull/14952
-
07:27 PM Revision b66fbd59 (git): Make rb_vm_ccs_invalidate_and_free static
-
07:04 PM Revision 9e49ee79 (git): [DOC] Tweaks for String#succ!
-
07:04 PM Revision 5c683bd9 (git): [DOC] Tweaks for String#succ
-
06:43 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Longtime rubyist here. I am the author of one of the Pathname PRs that kickstarted this discussion (#64). My PR adds the following methods to Pathname:
``` ruby
# these all use FileUtils
def mkdir_p(...)
def ln(...)
def ln_s(...)
... -
12:38 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- OK, I've made a PR to document that in https://github.com/ruby/ruby/pull/14953.
But it's just a workaround, it doesn't address any of the problems.
It doesn't address what happens to the pathname gem and the various problems I mentio... -
01:03 PM Revision 7690309a (git): Mention that `require 'pathname'` is necessary for #find, #rmtree and .mktmpdir
- * See https://bugs.ruby-lang.org/issues/21640#note-16
- 08:49 AM Revision f53b8194 (git): Stop deleting the reference from superclass when replacing classext.
- Calling the usual rb_iclass_classext_free() causes SEGV because
duplicating a newer classext of iclass had set the reference from superclass
to the newer classext, but calling rb_iclass_classext_free() deletes it. - 08:49 AM Revision 1c81bbf0 (git): free the entry after deleting the reference
- 08:49 AM Revision be118cf9 (git): classext replacement never happen on non-iclass classes
- 08:49 AM Revision efe9a3cd (git): Add several very basic tests to be run with RUBY_NAMESPACE=1 on CI
- To detect breaking namespace features on CI.
-
07:05 AM Revision e3a71751 (git): [ruby/stringio] [DOC] Tweaks for StringIO#closed?
- (https://github.com/ruby/stringio/pull/151)
https://github.com/ruby/stringio/commit/94bd4a3d87
10/25/2025
-
05:49 PM Bug #21560: RUBY_MN_THREADS=1 causes large performance regression in Puma 7
- I run a git bisect building/testing with these examples (to raise if >2ms avg) and this is the commit that started the issue:
> [be1bbd5b7d40ad863ab35097765d3754726bbd54] M:N thread scheduler for Ractors
Which is the commit the introdu... -
03:31 PM Feature #15381: Let double splat call `to_h` implicitly
- jeremyevans0 (Jeremy Evans) wrote in #note-11:
> […] Maybe in Ruby 4?
Bringing this up since it seems that this year’s Ruby version will be 4.0.
Is this change going to be considered for inclusion in the new release? -
02:24 PM Revision c6d14584 (git): [DOC] Link github style references in ChangeLog
-
01:48 PM Revision 0a924d46 (git): Use pointer to the member
- Instead of the offset calculation.
-
01:42 PM Revision 8e3957cc (git): Remove automatically set environment variables
- Probably since macOS Runner Image Version 20251020.XXXX, spawned
processes initialize `TMPDIR` environment variable under the hood. -
01:42 PM Revision af8c4481 (git): Add configured environment variables first
- And `LD_PRELOAD` is set to `PRELOADENV` on Linux.
-
12:19 PM Revision 377aa2a3 (git): Improve performance of UnicodeNormalize.canonical_ordering_one
- Use array_of_integer.sort! instead of buble-sort-like algorithm
-
09:10 AM Revision 31e14ac7 (git): [DOC] Follow up GH-14470
- `IS_TYPED_DATA` is no longer a flag in `type`, and the "embedded" flag
has been shifted accordingly.
ruby/ruby#14470 - 09:01 AM Revision 10f0abee (git): Update default gems list at 226caf1a1f3542d9e39e1a72fb43fd [ci skip]
-
09:00 AM Revision 226caf1a (git): [ruby/json] Release 2.15.2
- https://github.com/ruby/json/commit/5e61cd7dce
-
08:57 AM Revision 8e8e3278 (git): [ruby/json] Fix concurrent usage of JSON::Coder#dump
- Fix: https://github.com/rails/rails/commit/90616277e3d8fc46c9cf35d6a7470ff1ea0092f7#r168784389
Because the `depth` counter is inside `JSON::State` it can't be used
concurrently, and in case of a circular reference the counter may be
lef... -
04:59 AM Revision 93828c47 (git): merge revision(s) 4368e6c42effc16904e35f753fc2002f0bba375a:
- [PATCH] [ruby/rubygems] Removed credential assertion from stdout
https://github.com/ruby/rubygems/commit/3946be008c -
04:58 AM Revision bee70ff6 (git): [ruby/rubygems] Bump up vendored uri to 0.13.3
10/24/2025
-
10:34 PM Revision cb302881 (git): Fix memory leak of transcoding when fallback raises
- When the fallback function in transcode_loop raises, it will leak the memory
in rb_econv_t. The following script reproduces the leak:
10.times do
100_000.times do
"\ufffd".encode(Encoding::US_ASCII, fallback: proc { ra... -
10:09 PM Revision fcae2062 (git): [DOC] Tweaks for String#sub!
-
10:09 PM Revision 245df86e (git): [DOC] Tweaks for String#sub
-
09:03 PM Revision 8b6564d1 (git): ZJIT: Add gen_stack_overflow_check to `CCallWithFrame`
-
07:38 PM Bug #21522: Accessing outer locals via eval in a Ractor returns false
- Hi, I submitted a PR to fix this: https://github.com/ruby/ruby/pull/14940
-
07:04 PM Feature #20163: Introduce #bit_count method on Integer
- matz (Yukihiro Matsumoto) wrote in #note-24:
> Is there any real-world use-case for Integer#popcount method?
> ...
Yes, I am using it for a [bit set gem](https://github.com/tenderlove/bitz) (I had to implement my own popcount [here](ht... -
03:50 PM Revision a9f24aac (git): ZJIT: Specialize string length, bytesize, and size (#14928)
- Don't push frame for String#size, String#bytesize, and String#length.
-
08:24 AM Misc #21647 (Open): DevMeeting-2025-11-13
- # The next dev meeting
**Date: 2025/11/13 13:00-17:00** (JST)
Log: *TBD*
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at the bug tracker.
- Dev meeting is a place we can ask Matz, nobu, nurse and o... -
08:23 AM Misc #21606 (Closed): DevMeeting-2025-10-23
-
06:20 AM Revision f8ccc0af (git): [ruby/rubygems] Forcely activate irb if that isn't available when running with bundle console
- https://github.com/ruby/rubygems/commit/42e22fd367
-
02:56 AM Revision 0eaea7bd (git): thwait has been extracted to http://github.com/ruby/thwait
-
02:43 AM Revision 7aac92ab (git): Update the primary maintainer of rubygems
-
02:42 AM Revision f388647e (git): Added policy of bundled gems
-
02:41 AM Revision b58b89b9 (git): Revised structure of maintenance policy
-
02:29 AM Revision f31cd375 (git): Revised unmaintained to reflect the current situation
-
02:14 AM Revision daca69c8 (git): Restore primary maintainer name at the bundled gems
-
01:14 AM Revision 877ebe5b (git): [ruby/stringio] [DOC] Tweaks for StringIO#close
- (https://github.com/ruby/stringio/pull/148)
Make examples do more work (instead of text).
https://github.com/ruby/stringio/commit/7f4662438f
10/23/2025
-
10:14 PM Revision 230276dd (git): [DOC] Tweaks for String#strip
-
10:13 PM Revision ab94bce8 (git): [DOC] Tweaks for String#squeeze!
-
10:12 PM Revision 0227ad07 (git): [DOC] Tweaks for String#strip!
-
10:12 PM Revision 8b0d4053 (git): [DOC] Tweaks for String#start_with?
-
09:59 PM Revision 8de628dc (git): ZJIT: s/as_usize/to_usize/ to comply with rust API guidelines
- When the name is `as_*`, the guideline expects the return type to be a
reference type. Also, it's good to have contrast in the naming from
the more dangerous `as usize` cast `IntoUsize` is meant to be preferred
over.
See: https://rust-l... -
09:59 PM Revision c2bce540 (git): ZJIT: Replace `as usize` casts in codegen.rs
- The `as` casts are somewhat dangerous since when the type on either side
change, it silently becomes a lossy conversion. This is why we have
`IntoUsize` as well as other guaranteed lossless conversion utilities
in stdlib. Use them.
For ... -
09:47 PM Revision f33cd128 (git): ZJIT: Add tests for non-leaf classvar get and set (#14924)
- This commit adds tests that raise on `getclassvariable` and
`setclassvariable` to exercise the non-leaf cases as suggested in
https://github.com/ruby/ruby/pull/14918#discussion_r2453804603 -
09:24 PM Revision 1d835539 (git): ZJIT: Inline << and push for Array in single arg case (#14926)
- Fixes https://github.com/Shopify/ruby/issues/813
-
04:54 PM Revision b3fb91f4 (git): Make Namespace::Root TypedData inherit from Namespace::Entry
- The two types of TypedData objects should be treated the same except for
the free function. Since Namespace::Root did not inherit from Namespace::Entry,
all the TypedData_Get_Struct calls for Namespace::Root would raise
"wrong argument t... -
03:24 PM Revision 6dc879f9 (git): [ruby/stringio] [DOC] Tweaks for StringIO.new
- (https://github.com/ruby/stringio/pull/144)
https://github.com/ruby/stringio/commit/d33ac815c1 - 02:30 PM Revision add78e76 (git): ZJIT: Use iseq pointer directly in get/set class var codegen (#14921)
- Addresses https://github.com/ruby/ruby/pull/14918#discussion_r2453802886
-
02:19 PM Revision e529bf7d (git): CI: Enable `check` on clangarm64
-
01:57 PM Feature #21572: Make illegal variable in alternation pattern a syntax error
- https://github.com/ruby/ruby/pull/14923
-
01:21 PM Misc #21609: Propose Stan Lo (@st0012) as a core committer
- Thank you Matz and everyone supported me!
-
04:08 AM Misc #21609: Propose Stan Lo (@st0012) as a core committer
- Agreed. Go ahead.
Matz.
-
01:15 PM Misc #21646: Propose Luke Gruber as a Ruby committer
- Thank you Matz!
-
04:07 AM Misc #21646: Propose Luke Gruber as a Ruby committer
- Accepted. Go ahead.
Matz.
-
10:00 AM Revision 343ea050 (git): bump teeny
-
07:00 AM Misc #21630: Suggest @Earlopain for core contributor
- That would be totally fine with me. I only have 3 PRs related to prism merged in ruby/ruby which is not all that much. For these I'm sure I'd find someone who'd occasionally help me out, like it is right now already anyways.
Thanks fo... -
06:47 AM Misc #21630: Suggest @Earlopain for core contributor
- I agree with @naruse. We will revisit this issue some time (a few months?) later.
Matz.
-
06:04 AM Misc #21630: Suggest @Earlopain for core contributor
- I agree that they have made many significant contributions to Prism this year. However, they do not yet have permissions for the ruby/prism repository. Perhaps we could first grant them access to ruby/prism, with Kevin serving as their m...
-
06:50 AM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- I'd like to document clearly that those 3 methods require explicit "require".
Matz.
-
06:45 AM Feature #20163: Introduce #bit_count method on Integer
- Is there any real-world use-case for Integer#popcount method?
Bit-array?
Matz.
-
06:42 AM Feature #21615 (Rejected): Introduce `Array#values`
- HI,
* Don't use principle of least surprise as your rationale, since background and assumption vary person to person
* I don't think Hashes can be naturally considered as Arrays with non-integer indexes. You can tell it from Hash#eac... -
04:08 AM Revision 3b190855 (git): skip jit payload
- They should be checked, but not sure JIT code...
-
04:08 AM Revision a1777998 (git): catch up modular-gc
-
04:08 AM Revision 024bbf54 (git): NameError (NoMethodError) is copyable
- because ISeq is shareable now.
-
04:08 AM Revision bc00c446 (git): use `SET_SHAREABLE`
- to adopt strict shareable rule.
* (basically) shareable objects only refer shareable objects
* (exception) shareable objects can refere unshareable objects
but should not leak reference to unshareable objects to Ruby world -
04:08 AM Revision 45907b1b (git): add SET_SHAREABLE macros
- * `RB_OBJ_SET_SHAREABLE(obj)` makes obj shareable.
All of reachable objects from `obj` should be shareable.
* `RB_OBJ_SET_FROZEN_SHAREABLE(obj)` same as above
but freeze `obj` before making it shareable.
Also `rb_gc_verify_shareable... -
03:01 AM Revision 271be0a2 (git): ZJIT: Implement classvar get and set (#14918)
- https://github.com/Shopify/ruby/issues/649
Class vars are a bit more involved than ivars, since we need to get the
class from the cref, so this calls out to `rb_vm_getclassvariable` and
`rb_vm_setclassvariable` like YJIT. -
02:57 AM Revision 75ae7093 (git): [ruby/rubygems] Removed credential assertion from stdout
- https://github.com/ruby/rubygems/commit/3946be008c
-
02:57 AM Revision 7fa4d58e (git): [ruby/rubygems] Bump up vendored uri to 1.0.4
- https://github.com/ruby/rubygems/commit/bc77ec0bf2
-
01:00 AM Revision da214cf3 (git): [DOC] Tweaks for StringIO#binmode (#147)
-
12:52 AM Revision f762e50b (git): [ruby/stringio] [DOC] Tweaks for StringIO.open
- (https://github.com/ruby/stringio/pull/146)
https://github.com/ruby/stringio/commit/141c6c0edf -
12:49 AM Revision 4368e6c4 (git): [ruby/rubygems] Removed credential assertion from stdout
- https://github.com/ruby/rubygems/commit/3946be008c
-
12:49 AM Revision 8b014b1b (git): [ruby/rubygems] Bump up vendored uri to 1.0.4
- https://github.com/ruby/rubygems/commit/bc77ec0bf2
-
12:16 AM Revision 36e7db00 (git): [DOC] Tweaks for TCPSocket.new
- 12:10 AM Revision c3404d73 (git): ZJIT: Use InvokeBuiltin leaf attribute in codegen
- 12:10 AM Revision fa5481bc (git): ZJIT: Fetch Primitive.attr!(leaf) for InvokeBuiltin
- Fix https://github.com/Shopify/ruby/issues/670
10/22/2025
-
11:36 PM Revision da4bd3b3 (git): Fix memory leak when RUBYOPT is invalid
- When RUBYOPT is invalid, it raises an error which causes moreswitches
to leak memory. It can be seen when building with LSAN enabled:
$ RUBY_FREE_AT_EXIT=1 RUBYOPT=f ruby
ruby: invalid option -f (-h will show valid options) (Ru... -
11:35 PM Revision dfcb79ca (git): ZJIT: Fix unused warnings in `make zjit-test` [ci skip]
-
11:26 PM Revision ae767b6c (git): ZJIT: Inline Kernel#block_given? (#14914)
- Fix https://github.com/Shopify/ruby/issues/832
-
10:40 PM Revision a763e6dd (git): ZJIT: Disable not-annotated cfuncs in --zjit-stats (#14915)
- It's mostly a duplicate of not-inlined-cfuncs right now.
-
10:13 PM Revision d4ea1686 (git): [DOC] Tweaks for String#split
-
10:04 PM Revision f9338a95 (git): [DOC] Tweaks for String#squeeze
-
09:24 PM Revision 71e3ef3d (git): ZJIT: Buffer writes to the perf map
-
09:24 PM Revision fee863b4 (git): YJIT: Buffer writes to the perf map
-
09:16 PM Revision 3861918f (git): ZJIT: Handle invalid Counter on --zjit-trace-exits=counter (#14911)
-
08:53 PM Revision 3afa38d0 (git): YJIT: Fix `defined?(yield)` and `block_given?` at top level
- Previously, YJIT returned truthy for the block given query at the top
level. That's incorrect because the top level script never receives a
block, and `yield` is a syntax error there.
Inside methods, the number of hops to get from `iseq... -
08:52 PM Revision fa3a6f5c (git): Add docs for --zjit-debug
-
08:21 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Earlopain (Earlopain _) wrote in #note-14:
> pathname only had 4 releases since it became a gem at the end of 2020, that does not seem like that much innovation. Per the changelog it barely changed since then even with the releases that ... -
04:12 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- > ... it's awkward and confusing to have a partially-defined class
I agree.
> ...
I admit I am not very knowledgable on this. Are there other core classes that are still distributed as a gem also? To me being part of core excludes ... -
02:50 PM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- Earlopain (Earlopain _) wrote in #note-12:
> I want to adress some of these points:
Thank you for your feedback.
> ...
They are very related but not the same, here is what I meant:
1 is explaining that Pathname inherently depends... -
10:00 AM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- I want to adress some of these points:
* Problems 1 and 2 seem to be the same to me
* Problem 3, is that even one? If pathname is core, I don't except development to continue in the gem repository.
* Problem 4 you just adressed yourself,... -
09:35 AM Bug #21640: Core Pathname is missing 3 methods / is partially-defined
- > I'm not sure why, but that seems a serious bug that the pathname gem apparently can't be used at all with Bundler.
This is actually a Bundler issue independent from this issue as it already exists on Ruby 3.4: https://github.com/ruby/... - 07:39 PM Revision 9ad902e5 (git): ZJIT: Inline String#==, String#===
- 07:39 PM Revision d792de29 (git): ZJIT: Fix Type::from_class for subclasses of built-in types
-
06:53 PM Revision 18e8e446 (git): ZJIT: Revert removal of empty samples from zjit trace exits (#14905)
- ZJIT: Revert 9a75c05
- 06:22 PM Revision 6fdcd08e (git): ZJIT: Fix land race
-
06:19 PM Revision ceed4069 (git): ZJIT: Inline simple SendWithoutBlockDirect (#14888)
- Copy the YJIT simple inliner except for the kwargs bit. It works great!
- 06:14 PM Revision f09e74ce (git): ZJIT: Fix some dead code in the backend (#14897)
-
05:56 PM Revision 87fdd6d5 (git): ZJIT: Support make in zjit_bisect.rb (#14584)
- Find ZJIT options in RUN_OPTS/SPECOPTS and put new ones from the bisection script
there too. -
05:11 PM Revision 4c60fc48 (git): [ruby/prism] Test against parse.y
- https://github.com/ruby/prism/commit/17a6a19bbae5c8b438a94816ed67c3852547d859 broke ruby/ruby CI
because some tests are only run against parse.y
This will catch that in the future.
https://github.com/ruby/prism/commit/98e1cd5c04 -
04:43 PM Revision 619110b1 (git): ZJIT: A64: Fix Lea with large displacement and overlapping register
- Previously, when the output register and the base register are the same
in `out = Lea(Mem(out, disp))`, we did
out = disp
out = out + out
Which wasn't the desired `out = out + disp`.
Fixes a SEGV with `--zjit-call-threshold=2`... -
04:07 PM Revision 839b1fa5 (git): ZJIT: Specialize String#<< to StringAppend (#14861)
- Fixes https://github.com/Shopify/ruby/issues/805
-
02:58 PM Feature #21572: Make illegal variable in alternation pattern a syntax error
- Thank you @ktsj — I will start working on a patch for Prism.
-
02:56 PM Feature #20564: Switch default parser to Prism
- Can this issue be closed? We are coming up on the 3.5 release, and I don't think any further information is going to be forthcoming here.
-
02:55 PM Misc #21606: DevMeeting-2025-10-23
- * [Feature #21573] Simpler syntax errors
* Developers want nice syntax errors in the command line, that is implemented today.
* Language-agnostic tools that parse stdout want simple-to-parse errors and warnings.
* Can we add a m... -
02:52 PM Misc #21606: DevMeeting-2025-10-23
- * [Misc #21630] Suggest @Earlopain for core contributor
* They have been very helpful for Prism maintenance, and also other areas of Ruby. It would be helpful for them to merge their own PRs. -
02:52 PM Bug #21645: Can't `require "resolve"` on Windows under Bundler without warnings
- My impression here is we should always respect dependencies before changing from stdlib/default gem to bundled gem.
Concretely, I think fiddle shouldn't be a bundled gem before its stdlib & default gems usages (resolv, win32/resolv, w... -
01:58 AM Bug #21645: Can't `require "resolve"` on Windows under Bundler without warnings
- Thanks for popping in!
> Would this problem be avoided if mini_portile2 declared an explicit dependency on net-http
No, that would not do much I think. The problem is that `win32-registry` is a default gem but it depends on `fiddle... -
02:50 PM Revision 6047eada (git): [ruby/prism] Make error and snapshot tests multi-version aware
- This one has been on my mind for a while now.
Currently, there are only tests against the latest syntax version.
This changes the snapshot structure as follows:
* Snapshots at their current location are tested against all syntax versio... - 06:53 AM Revision 66c12bd5 (git): Update bundled gems list as of 2025-10-22
-
12:21 AM Revision f46ebed2 (git): Fix memory leak of darray in loaded_features_index