Activity
From 03/28/2026 to 04/03/2026
Today
-
12:36 AM Feature #21981 (Open): Remove CREF rewriting for methods on cloned classes/modules
- When a class or module is cloned, Ruby currently rewrites the CREF chain of each copied method so that it points at the new class instead of the original. I don't think this should happen, and methods on a cloned class should retain thei...
-
12:30 AM Revision 6200574d (git): Fix bug reference number and tracker ID to match Bug #21342
-
12:30 AM Revision bbe94d9b (git): Fix typo "rescured" to "rescued"
-
12:17 AM Revision 23175641 (git): Revert "ZJIT: Skip TestOpenURI and TestOpenURISSL (#16603)"
- This reverts commit 33b9d2ab9f45a0c66665fb8dc40ddebd07c7b7b7.
-
12:17 AM Revision 6ebe6f97 (git): Revert "ZJIT: Skip TestOpenURIProxy on Linux (#16606)"
- This reverts commit d368d42ec6b50cece947556a2185ce73fa493bfe.
-
12:17 AM Revision 61bef957 (git): YJIT: ZJIT: Use opt-level=1 on dev builds to avoid SystemStackError
- Despite adding rb_ec_stack_check() to Rust code entry points, we've seen
SystemStackError causing test failures due to debug builds consume too
much native stack space. Let's use opt-level=1 so rustc/LLVM are more
efficient with stack sp... -
12:17 AM Revision b8c35082 (git): ZJIT: Avoid transmute dodging rustc/LLVM int-to-ptr miscompilation
- The transmute triggered a miscompilation on Rust 1.85.0, where the
callback was "optimized" to unconditional go to a `SIGTRAP`ping
instruction.
While later Rust versions don't have the same miscompilation, it seems
that this is also par...
04/02/2026
-
11:27 PM Revision a6c6e563 (git): Fix random timeout in test_thread_join_during_finalizers on Windows (#16650)
- Reduce the number of spawned processes from 50 to 20 and increase the
timeout from 30s to 60s. Process creation is expensive on Windows, and
the combination caused the test to exceed the 30s limit on Windows CI. -
11:05 PM Revision 1d98daa1 (git): Relax RSS limit in test_named_structs_are_not_rooted
- The default limit of 2.0 is too tight for RSS measurements on macOS,
causing random CI failures when the ratio lands just above 2.0 (e.g.
2.05). Increase to 2.2 to account for normal RSS measurement noise.
https://github.com/ruby/ruby/a... -
10:50 PM Revision 85146a5f (git): ZJIT: Use CFP_PC in warn_unused_block for outlined PC (#16649)
- warn_unused_block uses the caller's PC to build a dedup key for the
unused block warning table. When called from ZJIT-compiled code via
rb_vm_send, cfp->pc may be stale (poisoned or uninitialized) because
ZJIT stores the real PC in cfp->... -
09:34 PM Revision e957b3a9 (git): YJIT: Stop checking rb_zjit_enabled_p on YJIT callbacks (#16648)
-
09:29 PM Revision bcd14796 (git): Fix random Broken pipe error in TestOpenURI#test_read_timeout
- The server thread writes the HTTP response while the client has a
0.1s read_timeout. On slow CI (especially Windows), the client can
time out and close the socket before the server finishes writing
headers or the response body, causing E... -
08:59 PM Revision 409b88d9 (git): Fix race condition between linking ruby and update-default-gemspecs
- `yes-update-default-gemspecs` uses `$(XRUBY)` which execs the ruby
binary, but only depended on `main` (extensions and encodings).
When `make runirb` runs with parallel jobs, the linker may still be
writing the ruby binary while `update-... -
08:34 PM Revision b2e032dc (git): auto_request_review.yml: Un-fork auto-request-review
- The PR has been upstreamed.
-
07:26 PM Revision 7aa3cbb0 (git): Convert K&R function definitions in configure.ac
-
06:46 PM Bug #21980 (Open): RubyVM::AST offsets are incorrect when BOM
- When there is a BOM on a file, the offsets are incorrect for nodes. See:
```
RubyVM::AbstractSyntaxTree.parse("\xEF\xBB\xBF1").source # => "\xEF"
```
-
01:22 PM Feature #21976: Add $SECONDS, $RANDOM, and other bashisms
- Sorry to be late: https://github.com/nobu/bashism
-
11:56 AM Bug #21933: Ruby::Box: named capture local variable can become nil after non-matching lines
- I opened a pull request with a fix and regression test for this issue:
https://github.com/ruby/ruby/pull/16644
-
11:17 AM Revision e866d953 (git): Prism: Close the open file once finished reading
-
11:08 AM Bug #21974 (Closed): Cannot inspect RubyVM::AST for CDECL
- Applied in changeset commit:git|4009b713a64f469e593ffbc5bb4b37eff43f3be3.
----------
[Bug #21974] Fix RubyVM::AST inspection for ::Foo = 1 (#16642)
* Fix AST CDECL children for top-level constants
* Simplify cdecl AST regression test -
09:00 AM Bug #21974: Cannot inspect RubyVM::AST for CDECL
- I have created a fix for this https://github.com/ruby/ruby/pull/16642
-
11:08 AM Revision 4009b713 (git): [Bug #21974] Fix RubyVM::AST inspection for ::Foo = 1 (#16642)
- * Fix AST CDECL children for top-level constants
* Simplify cdecl AST regression test - 05:36 AM Revision 3319be01 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.70.4 to 2.71.1
- [Release notes](https://github.com/taiki-e/i... -
04:49 AM Revision b7eb96ec (git): Our test suite is broken with rb_sys-0.9.125 bacause we can't build json extension
-
04:37 AM Feature #21979 (Open): `String#unpack`/`String#unpack1` should allow negative offset
- https://bugs.ruby-lang.org/issues/18254#note-14
I think `String#unpack`/`String#unpack1` should allow negative offset as well as the other methods, for example `String#slice` that is referred to in the description.
[ruby/ruby#16641]... -
04:30 AM Feature #18254: Add an `offset` parameter to String#unpack and String#unpack1
- I wasn't aware that negative offset is not allowed.
Shouldn't `unpack`/`unpack1` also allow it as well as the other methods, `String#slice`, `String#[]` and so on? -
04:13 AM Bug #20948 (Closed): Constant references incorrectly cached in `module (expr)::Foo`
- Applied in changeset commit:git|91ae69860591f0dfc85571cfbd023dd199e17e73.
----------
Use compile-time flag to indicate dynamic CREFs
The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic... -
04:13 AM Revision 91ae6986 (git): Use compile-time flag to indicate dynamic CREFs
- The inline constant cache previously used `RCLASS_SINGLETON_P` to detect
"unstable" CREFs that need ic_cref stored and checked on every IC hit.
This caused the `class << self` pattern to create inline caches which
requires extra checks a... -
03:56 AM Revision 07e52c81 (git): Fix `TestSocket#test_bintime`
- `String#unpack` does not allow negative offset.
- 03:17 AM Revision 81df2bda (git): [ruby/rubygems] Bump the rb-sys group across 2 directories with 1 update
- Bumps the rb-sys group with 1 update in the /test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib directory: [rb-sys](https://github.com/oxidize-rb/rb-sys).
Bumps the rb-sys group with 1 update in the /test/rubygems/t... -
02:53 AM Revision b59fe8e7 (git): [ruby/rubygems] Handle empty result gracefully in gem pristine --only-missing-extensions
- When no gems have missing extensions (e.g. on JRuby where
missing_extensions? always returns false), display an informational
message instead of raising Gem::Exception.
https://github.com/ruby/rubygems/commit/738d2dbdf6
Co-Authored-By:... -
02:53 AM Revision cb75f04f (git): [ruby/rubygems] Skip missing_extensions? check on JRuby
- JRuby does not require extension rebuilds when switching JRuby or Java
versions because Java extensions are shipped pre-compiled and JRuby does
not expose a version-specific C API. This means missing_extensions?
returning true on JRuby i... -
02:53 AM Revision 79c0a025 (git): [ruby/rubygems] Use IO.copy_stream to drain remaining gzip data instead of read
- Replace gzio.read with IO.copy_stream(gzio, IO::NULL) to avoid
allocating a potentially large string when discarding unconsumed
compressed data.
https://github.com/ruby/rubygems/commit/e4d0196887
Co-Authored-By: Claude Opus 4.6 (1M con... -
02:53 AM Revision 9233eae6 (git): [ruby/rubygems] Consume remaining gzip data in open_tar_gz to suppress zlib warning
- When a GzipReader is closed before all compressed data is consumed,
zlib emits "attempt to close unfinished zstream; reset forced" warning.
This happens in open_tar_gz because the TarReader stops reading at the
end-of-archive marker, lea... -
02:43 AM Revision 27f24a37 (git): [ruby/rubygems] Fix incompatible function pointer type error with Xcode 26.5 beta
- Xcode 26.5 beta ships a clang that promotes -Wincompatible-function-pointer-types to an error by default. The test's inline C extension defined `VALUE foo()` (taking no arguments) but passed it to `rb_define_global_function` which expect...
-
02:21 AM Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules
- Applied in changeset commit:git|dd3542a0cd00b40d406763e85ac12a1086bab682.
----------
Fix class variable cache not invalidated by class_variable_set
The previous invalidation walked subclasses but missed cvars from
included modules, and... -
02:21 AM Revision dd3542a0 (git): Fix class variable cache not invalidated by class_variable_set
- The previous invalidation walked subclasses but missed cvars from
included modules, and skipped invalidation when creating a new cvar on
modules entirely. Always invalidate when a new class variable is
created, since this should be relat... -
12:18 AM Revision f0c73671 (git): Revert "ZJIT: Clean up branching in polymorphic opt_send_without_block HIR construction (#16634)"
- This reverts commit 77b803cfc833233a49b497a9342f16c9237833e6.
There is a new NULL dereference in tool/test/testunit/test_sorting.rb
that seem to have started with this commit.
04/01/2026
-
11:37 PM Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
- Dan0042 (Daniel DeLorme) wrote in #note-3:
> Indeed, but I believe "UTF-八" would be a better alias here
Fully agree. I was just too lazy to go figure out the full-width hyphen, sorry.
-
02:09 PM Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
- duerst (Martin Dürst) wrote in #note-2:
> I think it's a good idea to allow "UTF-八" (and probably also full-width "UTF-八") as an alternative to "UTF-8" for internal Ruby use.
Indeed, but I believe "UTF-八" would be a better alias here... -
06:36 AM Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
- Thanks to @ko1 for this timely news. It looks like the current Japanese government is recently taking some steps that in some ways have felt long overdue. On December 22, 2025, they changed the Romanization used by the Government from 'K...
-
01:50 AM Misc #21975: Add "UTF-八" as an alias for UTF-8 encoding
- ko1 (Koichi Sasada) wrote:
> In Japan, legal texts must write all characters - including digits - using full-width or kanji forms. As a result, the encoding name "UTF-8"
> ...
Should "UTF-" also be full-width ("UTF−")? -
11:29 PM Revision 25ca647d (git): ZJIT: Hook into GC W^X callbacks for compaction (#16635)
-
11:28 PM Revision c3413996 (git): Fix memory leak in pm_parse_process
- pm_parse_process initializes the index_lookup_table but nothing seems to
use it after it has been allocated. However, pm_compile_scope_node will
overwrite the index_lookup_table and cause it to leak memory. This can
be seen during bootup... - 08:56 PM Revision 77b803cf (git): ZJIT: Clean up branching in polymorphic opt_send_without_block HIR construction (#16634)
- We have global regalloc now and don't need this manual threading.
-
07:10 PM Bug #21971 (Closed): Backport commit 5de4cc560864 / PR #15848
- Forgot to close
-
06:50 PM Bug #21978 (Closed): Fix class variable cache isn't invalidated via modules
```ruby
module M; @@x = 1; end
class A; end
class B < A
include M
def self.x; @@x; end
end
B.x # warm cache
A.class_variable_set(:@@x, 2)
B.x
```
The last call to `B.x` should fail with `Should raise: class variable ...-
05:47 PM Revision 1bb1f6c4 (git): [ruby/prism] Emit `on_kw` for ripper
- `yard` uses it
Start checking against the ordering of the events and also their location.
I didn't fix any of the preexisting failures and just ignored them. Some are easy to fix, others look like particularities of ripper
that I don't... - 05:08 PM Revision 6e18d5f5 (git): ZJIT: Remove old unused graphviz code (#16630)
- We use iongraph now.
-
02:13 PM Revision a8f3c345 (git): ZJIT: Add missing guard on ivar access on T_{DATA,CLASS,MODULE}
- T_DATA, T_MODULE, and T_CLASS objects can share the exact same shape.
The shape on these objects give an index off of the fields array to
get at the ivar. When two objects share the same shape, but differ
in the T_* builtin type, however... -
02:03 PM Revision 8824fd3b (git): [ruby/prism] Generate templated sources under main/java-templates
- This path avoids the sources getting wiped out during `mvn clean`,
since they are not generated during the maven build.
This patch also moves the generated WASM build under src/main/wasm
since it is really a source file and not a test f... -
11:34 AM Revision 9224d90f (git): Refactor socket timestamp tests
- - Avoid unnecessarily binding sender sockets, as ephemeral ports can
very occasionally conflict on Linux. This investigation is assisted
by Claude Code.
- Compare timestamps using a range instead of relying on `inspect`.
- Use the `... -
11:14 AM Revision ce398d75 (git): [ruby/prism] Remove a warning from `discarded-qualifiers`
- I've been seeing this for a while now:
```
../../../../ext/prism/../../src/memchr.c: In function ‘pm_memchr’:
../../../../ext/prism/../../src/memchr.c:35:16: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarde... -
10:44 AM Bug #21818 (Closed): Thread backtraces cannot be communicated over Ractor ports
- Applied in changeset commit:git|9a2ffd8e5448e0c2ac4ae58d0ef02afc195f2cb8.
----------
Fix sending backtraces across ractors
[Bug #21818]
Currently exceptions can be sent across ractors,
but because of a limitation in the TypedData API,... -
10:43 AM Revision 9a2ffd8e (git): Fix sending backtraces across ractors
- [Bug #21818]
Currently exceptions can be sent across ractors,
but because of a limitation in the TypedData API,
the exception backtrace is duped as an empty backtrace.
The problem is that backtraces are embedded objects,
hence the clas... -
09:46 AM Bug #21977 (Assigned): Ruby::Box crash with `RUBY_BOX=1` via `Binding` refinement, `UnboundMethod#bind_call`, and `Symbol#to_proc`
-
09:44 AM Bug #21977 (Assigned): Ruby::Box crash with `RUBY_BOX=1` via `Binding` refinement, `UnboundMethod#bind_call`, and `Symbol#to_proc`
- ## Summary
I found a reproducible interpreter crash when Ruby is run with `RUBY_BOX=1`.
A refinement on `Binding`, combined with `UnboundMethod#bind_call` and `Symbol#to_proc`, causes Ruby to abort with:
```text
[BUG] BUG: Loca... -
07:26 AM Revision 3f1acedb (git): [ruby/rubygems] Use gem exec --conservative for sigstore-cli instead of pinning version
- Hardcoding sigstore-cli:0.2.2 meant rubygems would need a new release
whenever sigstore-cli ships a new version. Using --conservative lets
gem exec prefer an already-installed version and falls back to the
latest when sigstore-cli is not... -
07:26 AM Revision a27f303f (git): [ruby/rubygems] Normalize host comparison in attestation_supported_host?
- The method compared against a hardcoded string, so a trailing slash
(e.g. "https://rubygems.org/") would cause auto-attestation to be
silently skipped. Now we chomp the trailing slash and compare against
Gem::DEFAULT_HOST to be consisten... -
07:26 AM Revision b9358e9f (git): [ruby/rubygems] Show only error message on attestation failure unless verbose
- When auto-attestation fails, the warning previously included
e.full_message with a full backtrace that could be noisy and expose
local paths. Now only e.message is shown by default, and the full
backtrace is included only when Gem.config... -
07:26 AM Revision 80472134 (git): [ruby/rubygems] Honor explicit --attestation option regardless of platform and host
- The send_push_request method previously skipped all attestation handling
on JRuby, non-rubygems.org hosts, or outside GitHub Actions. This meant
that even when a user explicitly passed --attestation with a local
sigstore bundle, the atte... -
07:26 AM Revision 54ce9113 (git): [ruby/rubygems] Reverse to use attestation condition
- https://github.com/ruby/rubygems/commit/ea1f43c4ae
-
07:26 AM Revision d2f9872e (git): [ruby/rubygems] Omit tests of auto-attestation with JRuby
- https://github.com/ruby/rubygems/commit/543ac52412
- 07:26 AM Revision 6ef9fe59 (git): [ruby/rubygems] Use Tempfile for auto-attestation bundles and clean up after use
- https://github.com/ruby/rubygems/commit/498401c010
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> - 07:26 AM Revision c4eeb675 (git): [ruby/rubygems] Remove raise from stub to rely on flag for test assertions
- https://github.com/ruby/rubygems/commit/7ebc1abafd
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> -
07:26 AM Revision e35eaf56 (git): [ruby/rubygems] Added test for auto-attestation
- https://github.com/ruby/rubygems/commit/df2bdde8e5
- 07:26 AM Revision bf617311 (git): [ruby/rubygems] Add test coverage for skipping auto-attestation
- https://github.com/ruby/rubygems/commit/6cd04a57da
Co-authored-by: hsbt <12301+hsbt@users.noreply.github.com> -
07:26 AM Revision 2041c877 (git): [ruby/rubygems] Refactor push request to support attestations
- https://github.com/ruby/rubygems/commit/74924da660
-
07:26 AM Revision a9b8d47d (git): [ruby/rubygems] Merge rubygems-attestation-patch.rb from rubygems/release-gem
- https://github.com/ruby/rubygems/commit/64f085f5ee
-
07:10 AM Feature #21861 (Closed): C API: expose `ruby_xfree_sized`, `ruby_xrealloc_sized`, etc
- Applied in changeset commit:git|53099633e208b43e26a8ee3c6fdd936e2943b0d5.
----------
Make `ruby_xfree_sized` and `ruby_xrealloc_sized` public
[Feature #21861] -
07:10 AM Revision 53099633 (git): Make `ruby_xfree_sized` and `ruby_xrealloc_sized` public
- [Feature #21861]
-
04:24 AM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- duerst (Martin Dürst) wrote in #note-6:
> Here is another proposal: Why not count using administrative/fiscal years? The administrative/fiscal year (年度 ('nendo') in Japanese, as opposed to simply 年 for (calendar) year) starts on April 1... -
02:29 AM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- Here is another proposal: Why not count using administrative/fiscal years? The administrative/fiscal year (年度 ('nendo') in Japanese, as opposed to simply 年 for (calendar) year) starts on April 1st.
As an example, 1993-02-24 to 1993-3-... -
02:26 AM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- jinroq (Jinroq SAITOH) wrote in #note-4:
> > Under current Japanese law, a person's age increases at midnight on the day before their birthday. However, it might be better to use the traditional 'Kazeidoshi' (East Asian age reckoning) ... -
12:24 AM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- shugo (Shugo Maeda) wrote in #note-2:
> Under current Japanese law, a person's age increases at midnight on the day before their birthday. However, it might be better to use the traditional 'Kazeidoshi' (East Asian age reckoning) syste... -
12:14 AM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- ufuk (Ufuk Kayserilioglu) wrote in #note-1:
> I think these methods should live on the new `Ruby` module as `Ruby.birthday` and `Ruby.age` instead:
> ...
That's a great insight! Moving these to a Ruby module makes the intent much clear... -
04:20 AM Revision 2477916e (git): pty: Fix missing arguments
-
04:20 AM Revision 1a668dee (git): pty: Rename as the purpose
- This function prevents other users from opening this device for
writing so not to be sent messages using commands such as `talk` or
`wall`. - 02:32 AM Revision 05086ee8 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.70.3 to 2.70.4
- [Release notes](https://github.com/taiki-e/i... -
01:51 AM Feature #21976: Add $SECONDS, $RANDOM, and other bashisms
- Did you think you could fly under the radar with that semi-colon?
That's not acceptable corner to cut.
For proper POSIX shell compatibility, it's imperative that the Ruby grammar be extended to accept `:` as a bare keyword, equivalent ... -
01:14 AM Feature #21976 (Open): Add $SECONDS, $RANDOM, and other bashisms
- Some time ago there was a lot of discussion around a script named [safe_sleep.sh](https://github.com/actions/runner/blob/af6c8e6eddef233fdef862c1287d9b013c8aabff/src/Misc/layoutroot/safe_sleep.sh) in the GitHub Actions runner. Like [many...
-
12:57 AM Revision 20af0e90 (git): Add retry logic to stdgems.org curl requests in CI
- The curl requests to stdgems.org occasionally fail with connection
errors, causing spurious CI failures. Add curl's built-in retry
flags to handle transient network issues with exponential backoff.
example:
https://github.com/ruby/ruby/... - 12:51 AM Revision 60de70c5 (git): [ruby/rubygems] Improve error message when current platform is not in lockfile
- Fixes https://github.com/ruby/rubygems/pull/9413
https://github.com/ruby/rubygems/commit/02d2179047 -
12:36 AM Revision 7683ab75 (git): ZJIT: Side-exit sends with blocks to non-block methods (#16624)
- When the caller passes a block to a method that either rejects blocks
(`&nil` parameter, `accepts_no_block`) or doesn't use them (`use_block`
is false), ZJIT now falls back to the interpreter instead of compiling
a direct send. This ensu... -
12:29 AM Revision 88efe89d (git): post_push.yml: Use continue-on-error for flaky steps
- "Sync git.ruby-lang.org" and "Push PR notes to GitHub" steps can
fail due to transient issues, which blocks execution of all
subsequent steps. Use continue-on-error so the rest of the workflow
still runs, and add a "Check for failures" s... -
12:24 AM Revision f6ddb9c6 (git): prism_compile.c: Fix -Wmaybe-uninitialized warning in pm_compile_call
- Initialize `end_cursor` to 0. It is guarded by `end_found` but the
compiler cannot prove `end_found` is always true when `end_cursor` is
read. -
12:24 AM Revision 1389a36b (git): sprintf.c: Fix -Wmaybe-uninitialized warnings in rb_str_format
- Initialize `c` and `encidx` to 0. They are assigned inside
`if (n >= 0)` and the following `if (n <= 0)` calls rb_raise, but the
compiler cannot see through the noreturn guarantee. -
12:24 AM Revision 6a5a2612 (git): variable.c: Fix -Wmaybe-uninitialized warnings in rb_gvar_set/rb_gvar_get
- Initialize `entry` and `var` to NULL. They are assigned inside
RB_VM_LOCKING() but used after it, and the compiler cannot prove the
locked block always executes. -
12:10 AM Revision d926f407 (git): [ruby/mmtk] Add moving_gc_count to GC.stat
- Outputs the number of GC cycles that are moving.
https://github.com/ruby/mmtk/commit/fef8f04186
03/31/2026
-
11:57 PM Misc #21975 (Open): Add "UTF-八" as an alias for UTF-8 encoding
- In Japan, legal texts must write all characters - including digits - using full-width or kanji forms. As a result, the encoding name "UTF-8"
appears as "UTF-八" (八 = eight in kanji) in official government notices.
Specifically, it a... - 11:32 PM Revision 78f11bde (git): ZJIT: Support VM_OPT_NEWARRAY_SEND_PACK (#16596)
-
11:30 PM Feature #21005: Update the source location method to include line start/stop and column start/stop details
- With this implemented and then removed after Ruby 4.0.0, Preview 2, is this still planned for completion? Would really like to have this but unclear on the current plan. I assume we will have to wait until Ruby 4.1.0 at best?
-
11:09 PM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- Under current Japanese law, a person's age increases at midnight on the day before their birthday. However, it might be better to use the traditional 'Kazeidoshi' (East Asian age reckoning) system, as its logic is much simpler.
-
03:43 PM Feature #21972: Add Date.birthday and Date.age to track Ruby's milestones
- I think these methods should live on the new `Ruby` module as `Ruby.birthday` and `Ruby.age` instead:
```ruby
puts "Today: #{Date.today}" # => Today: 2026-04-01
# Check the "age" of Ruby
puts "Age: #{Ruby.age}" # =>... -
03:01 PM Feature #21972 (Open): Add Date.birthday and Date.age to track Ruby's milestones
- Since its inception in 1993, Ruby has grown beyond a mere programming language to become a rich culture beloved by developers worldwide. However, the standard `date` library surprisingly lacks a formal interface to commemorate Ruby's own...
-
11:05 PM Revision 3a0b003a (git): auto_request_review.yml: Fix and use last_files_match_only
- https://github.com/necojackarc/auto-request-review/pull/135 fixes
last_files_match_only. Let's use a fork to fix it until it gets merged. -
11:05 PM Revision e191769e (git): auto_request_review.yml: Clarify the meaning of the "Skip" comment
- by explicitly adding no-op entries, rather than leaving the line empty,
which may seem like lines that have been deleted. -
09:48 PM Revision c9ae44e1 (git): set: fix Set#to_set block behavior and add regression test
-
09:45 PM Revision bcddc56f (git): vm: avoid allocator lookup for singleton class initialize methods
- This fixes a SIGABRT of Assertion Failed: RCLASS_ALLOCATOR:!RCLASS_SINGLETON_P(klass)
-
07:58 PM Bug #21974 (Closed): Cannot inspect RubyVM::AST for CDECL
- ```
./ruby -e 'pp RubyVM::AbstractSyntaxTree.parse("::Foo = 1")'
```
and
```
./ruby -e 'p RubyVM::AbstractSyntaxTree.parse("::Foo = 1").children[2].children'
```
both crash - 06:56 PM Revision 0364a612 (git): ZJIT: Clean up branching in HIR construction (#16616)
- We have the global register allocator now and don't need to thread everything through manually as block params. Simplify HIR construction.
-
06:48 PM Feature #21973: Smile argument
- My email client does not like this proposal:
<img style="width: 232px;" src="clipboard-202603312047-a8wkw.png"><br>
Maybe `:))` (even bigger smile) should be considered instead? -
04:05 PM Feature #21973: Smile argument
- Implementation should be easy like that :)
```ruby
def q(a:, b:1)
p a:, b: #=> {a: 10, b: 20}
end
def smile_send mid, b, *params
h = {}
method(mid).parameters.each do |(type, key)|
case type
when :keyreq
... -
03:35 PM Feature #21973 (Open): Smile argument
- Ruby makes us smile. So I want Ruby to smile too, and that is why I would like to propose this feature.
The smile argument makes Ruby smile by allowing a method call to end its argument list with `:)`.
smile_method(arg, :)
This ... - 03:14 PM Revision 9c827a49 (git): [ruby/openssl] test_pkey_rsa.rb: Fix test_private_encoding_encrypted in OpenSSL 4.0 FIPS
- OpenSSL 4.0.0 added a check for Password-Based Key Derivation Function 2
(PBKDF2) to require the minimal password length 8 in FIPS by the following
commit.
https://github.com/openssl/openssl/commit/71ed0fc8b3cdb33cd06059416686f8972ede024... -
03:14 PM Revision 5973d619 (git): [ruby/openssl] ssl: fix test_tmp_dh and test_tmp_dh_callback with OpenSSL 4.0
- OpenSSL master added support for RFC 7919 groups in TLS 1.2. They are
preferred over SSLContext#tmp_dh= or #tmp_dh_callback= values if the
client advertises them in the supported_groups extension.
https://github.com/ruby/openssl/commit/... -
03:14 PM Revision b41b1430 (git): [ruby/openssl] asn1: use new ASN1_BIT_STRING accessor functions with OpenSSL 4.0
- ASN1_STRING has been made opaque in OpenSSL's master branch. Use the
new accessor functions instead of accessing fields directly.
Other uses of ASN1_STRING fields were already updated in
<https://github.com/ruby/openssl/pull/978>. This ... -
03:14 PM Revision f17a0af9 (git): [ruby/openssl] pkey: remove unnecessary prototype from ossl_pkey.h
- ossl_ec_new() was removed in commit https://github.com/ruby/openssl/commit/94aeab2f265d (pkey: simplify
ossl_pkey_new(), 2017-03-16), but it forgot to remove the declaration
while doing so.
https://github.com/ruby/openssl/commit/faad7a0811 -
03:14 PM Revision de1d14c0 (git): [ruby/openssl] Add const qualifiers for OpenSSL 4.0 compatibility
- OpenSSL's master branch is changing functions to return const pointers
where the returned objects are not meant to be modified by the caller.
Update ossl_*_new() to take const pointers accordingly. Unfortunately,
*_dup() in older versio... - 01:04 PM Revision 6afed23a (git): [ruby/rubygems] Prevent checksum for this test:
- - ### Problem
This test breaks whenever checksums are computed. It didn't break
before because the gemfile in this test doesn't include any gems
(only git gems) and therefore checksum is skipped.
### Context
This test was ad... - 01:04 PM Revision 1e91f566 (git): [ruby/rubygems] Fix test suite that will start to fail whenever we attempt a release:
- - ### Problem
Whenever we bump the bundler `VERSION` to a non development release,
like we recently did in [4.0.9](https://github.com/ruby/rubygems/pull/9426)
The test suite will behave differently and will break due to the
Bun... - 01:04 PM Revision b359ea34 (git): [ruby/rubygems] Skip checksum for the bundler gem if no `bundler.gem` exists on disk:
- - ### Problem
This change is purely to fix a problem when developing Bundler.
When we tried to release Bundler 4.0.9, we bumped the VERSION
from `4.1.0.dev` to `4.0.9`, this condition now evaluates to false
https://github.com/ru... -
06:14 AM Revision a08f5474 (git): Ignore files with parse errors in CodeQL analysis
- These test files, specs, and trace_point.rb contain intentionally
invalid syntax or special constructs that CodeQL's parser cannot
handle. They are not security-relevant and should be excluded from
analysis.
Co-Authored-By: Claude Opus ... -
04:06 AM Revision f41c1941 (git): pty: Prefer FD-base operations if available
-
03:45 AM Revision c6bee053 (git): Narrow CodeQL paths-ignore to only fixture directories
- Keep test/ and spec/ in CodeQL analysis for better SAST coverage.
Only exclude directories containing intentionally unparseable files
such as UTF-16 encoded fixtures and bad syntax test fixtures.
Co-Authored-By: Claude Opus 4.6 (1M cont... -
03:45 AM Revision bc032028 (git): Add actions:read permission to pr-playground workflow
- The github-script step calls the Actions API to list workflow runs
and download artifacts, which requires actions:read permission.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> -
03:45 AM Revision 3ae990db (git): Remove excessive-permissions from zizmor ignore list
- These four workflows now have explicit top-level permissions set
to contents:read, so the excessive-permissions finding no longer
applies.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> -
03:45 AM Revision bd3904f1 (git): Pin cygwin-install-action to v6.1 by commit SHA
- Replace @master reference with the pinned commit SHA for v6.1,
and remove cygwin.yml from the zizmor unpinned-uses ignore list
since it is now properly pinned.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> -
03:45 AM Revision b956e19a (git): Update pinned action versions in Launchable setup
- The commit SHAs did not match their version comment tags, as
flagged by zizmor ref-version-mismatch. Update all three actions
to their latest releases with correct SHAs.
- actions/setup-python v5.0.0 -> v5.6.0
- actions/setup-java v4.0.... -
03:45 AM Revision b2562525 (git): Exclude test directories from CodeQL analysis
- CodeQL's Ruby extractor cannot parse UTF-16 encoded fixtures,
TRICK entries, and some edge-case syntax in test files, causing
84 parse error warnings. These directories (spec/, test/, sample/,
benchmark/) are not relevant for security sc... -
03:45 AM Revision 409a0a11 (git): Suppress zizmor secrets-outside-env audit
- All committers with write access to this repository are trusted,
and fork PRs cannot access secrets by default. There is no threat
model that environment-scoped secrets would mitigate here.
Co-Authored-By: Claude Opus 4.6 (1M context) <... -
03:45 AM Revision d47d97c9 (git): Add top-level permissions to workflows missing them
- Restrict the default GITHUB_TOKEN permissions to contents:read
for workflows that had no top-level permissions block, as flagged
by Scorecard's TokenPermissionsID check.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> - 02:26 AM Revision 3b502e62 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.70.2 to 2.70.3
- [Release notes](https://github.com/taiki-e/i... -
01:27 AM Revision 1da540ae (git): Invalidate CC on cme free as well
-
01:26 AM Revision 3c251f79 (git): Don't add singleton classes to subclasses list
- Singleton classes don't need to be iterated in the subclasses list, we
only need to know that a subclass exists so that we can use the "method
entry" path for invalidation. -
01:25 AM Revision 90f74e06 (git): [ruby/strscan] Implement compaction and embedded structs
- (https://github.com/ruby/strscan/pull/201)
GC compaction was introduced in Ruby 2.7.
Embedded Structs was introduced in Ruby 3.3. When enabled, the `struct
strscanner` is stored directly inside the object slot, meaning reading
the stru... -
12:33 AM Revision f6adf1c4 (git): ZJIT: Use a slice for ISeq `opt_table` for quick one-off access
- This gets rid of the copying of the entire opt_table in
function_stub_hit() since it only reads one element. HIR builder
still does a copy and that's unchanged. It needs to read the whole
table. -
12:21 AM Bug #21971: Backport commit 5de4cc560864 / PR #15848
- More details by Chris in the pull request: https://github.com/ruby/ruby/pull/15848
-
12:19 AM Bug #21971 (Closed): Backport commit 5de4cc560864 / PR #15848
- Follow-up to ticket: https://bugs.ruby-lang.org/issues/21824
There was a group of old commits merged before 4.0 which were meant to improve regexp performance in some cases. Unfortunately, they also greatly degraded regexp performance...
03/30/2026
-
11:39 PM Revision 34c94b31 (git): [DOC] Fix formatting in IO
- Colon should be outside of the code.
-
11:10 PM Revision 72f309fe (git): [DOC] Doc for Pathname class (#16352)
-
08:33 PM Revision 98e55e7b (git): ZJIT: Add --zjit-max-versions option (#16607)
- Allow configuring the maximum number of compiled versions per ISEQ
via --zjit-max-versions=num (default: 2). Like YJIT's equivalent,
this option is hidden from --help output. -
08:09 PM Revision d368d42e (git): ZJIT: Skip TestOpenURIProxy on Linux (#16606)
- Same random SystemStackError as TestOpenURI and TestOpenURISSL.
- 07:28 PM Revision 89133221 (git): Run GC if fiber pool expansion fails. (#16535)
- [Bug #21964]
- 07:26 PM Revision 714b4b54 (git): ZJIT: Compile modified path in getblockparamproxy (#16573)
- ZJIT: Avoid side exits on modified getblockparamproxy
-
06:57 PM Revision 258c6b0b (git): Update debug.gem sha to fix random failures
- https://github.com/ruby/debug/pull/1174
-
04:55 PM Revision 1cbb161e (git): Decrease the frequency of cargo updates
- They're development-only dependencies. We shouldn't need to pay the
maintenance cost for such frequent updates, especially when the
dependabot PRs have failed the CI two times in a row. -
04:55 PM Revision c8976131 (git): cargo update --manifest-path zjit/Cargo.toml
-
04:55 PM Revision 079ee4ba (git): Fix rand 0.10.0 compatibility in ZJIT parcopy tests
- rand 0.10.0 moved `random_range` from the `Rng` trait to `RngExt`.
Update the import accordingly. - 04:55 PM Revision 7444cb9f (git): Bump the jit group across 1 directory with 2 updates
- Bumps the jit group with 2 updates in the /zjit directory: [insta](https://github.com/mitsuhiko/insta) and [rand](https://github.com/rust-random/rand).
Updates `insta` from 1.47.0 to 1.47.1
- [Release notes](https://github.com/mitsuhik... -
04:28 PM Revision 33b9d2ab (git): ZJIT: Skip TestOpenURI and TestOpenURISSL (#16603)
-
02:40 PM Revision f0f92435 (git): Use ubuntu-latest for macOS result jobs
- The result jobs in macOS workflows only check if other jobs failed
(just runs `exit 1`). They don't need macOS runners. Using
ubuntu-latest instead frees up macOS runner slots and starts faster
due to shorter queue times. -
02:40 PM Revision 3c22172c (git): Rebalance compilation jobs in Compilations workflow
- Move compilation steps from the heaviest jobs to the lightest to reduce
the critical path of the Compilations workflow.
Before: jobs ranged from 13-41 min (compile#12 had 4 steps, compile#3
had 10 clang versions).
After: jobs range fro... -
01:14 PM Revision ae9b60f1 (git): [Feature #19107] parse.y: Allow trailing comma in method signature
-
12:33 PM Revision 5b83468b (git): Adjust indent [ci skip]
-
12:31 PM Revision 05428c8e (git): ZJIT: Remove side-exit locations dump after test
-
11:31 AM Revision 3fd1be95 (git): Introduce GC.stat_heap(:heap_allocatable_slots)
-
11:31 AM Revision db1a23fb (git): Remove unused minimum_slots_for_heap function
-
11:31 AM Revision 0875a0f8 (git): Replace heap_init_slots array with single heap_init_bytes target
- Replace per-heap GC_HEAP_INIT_SLOTS with a single GC_HEAP_INIT_BYTES
target.
Instead of allocating a fixed 10k slot budget for each heap to grow
into. This PR gives each heap a fixed 2.5Mb heap growth allowance. This
keeps the overall h... -
10:18 AM Bug #21970: Corrupted `ciobj->operands` in `compile.c: optimize_checktype`
- Of course:
```
(gdb) p *iobj
$1 = {link = {type = ISEQ_ELEMENT_INSN, next = 0xaaab00000848, prev = 0xaaab00000818}, insn_id = YARVINSN_putnil, operand_size = 0, sc_state = 0, operands = 0x0, insn_info = {
line_no = 220, node_i... -
09:20 AM Bug #21970: Corrupted `ciobj->operands` in `compile.c: optimize_checktype`
- Is it possible to inspect the contents of `*iobj` and `*ciobj`?
-
08:48 AM Bug #21970 (Open): Corrupted `ciobj->operands` in `compile.c: optimize_checktype`
- A rare crash I observed in production. I unfortunately don't have a reproduction, but perhaps this will ring a bell to someone.
```
#4 0x0000aaaac9afb1b8 [PAC] in sigsegv (sig=11, info=0xaaaaff573e30, ctx=0xaaaaff573eb0) at signal.c... -
10:10 AM Revision cbd8fac4 (git): win32: Escape macros in intermediate makefiles
-
09:45 AM Revision 80aea31e (git): Skip implicit rule for .rbinc when BASERUBY is unavailable
-
09:40 AM Bug #21967: `vm_call_cfunc: cfp consistency error` while requiring `nkf.so`
- So for the record, I managed to remove our dependency on `nkf`, and the issue seem to have disappeared so far.
So this suggest `nkf` is indeed the root cause, but that is weird because I looked at the extension, and it's really not do... -
09:27 AM Revision ee31cc6e (git): Remove dead `Resolve job ID` step from macOS workflow (#16591)
- This step was added in 1ba93c2c4d for uploading core dumps to AWS S3,
but the S3 upload was later removed while this step was left behind.
The `job_id` output is not referenced anywhere in the workflow. -
06:18 AM Bug #21969 (Third Party's Issue): fork() + Socket.getaddrinfo() triggers SIGSEGV/SIGABRT via libsystem_trace.dylib on macOS 26 (darwin25) x86_64 and ARM64
- #21790 also identifies `_os_log_preferences_refresh` in `libsystem_trace.dylib` as the crash site (see note #4). The NAT64 code path (`_gai_nat64_second_pass`) appears higher in the call stack, but the actual fault is the same stale shar...
-
05:26 AM Bug #21969 (Third Party's Issue): fork() + Socket.getaddrinfo() triggers SIGSEGV/SIGABRT via libsystem_trace.dylib on macOS 26 (darwin25) x86_64 and ARM64
- On macOS 26 (darwin25), forked child processes crash with SIGSEGV (x86_64) or SIGABRT (ARM64) when calling `Socket.getaddrinfo` after the parent process has established `libsystem_trace.dylib` os_log shared-memory state through prior DNS...
- 05:34 AM Revision 3379c7ef (git): [ruby/rubygems] Restore rb_sys dependency for Rust
- https://github.com/ruby/rubygems/commit/7cd3b9a08a
-
03:29 AM Bug #21965 (Closed): cross compile with out-of-source build is broken
- https://github.com/ruby/ruby/pull/16456 fixed this and added my simple workflow for cross compile.
- 02:57 AM Revision 503cf433 (git): Bump the github-actions group across 1 directory with 5 updates
- Bumps the github-actions group with 5 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.295.0` | `1.299.0` |
| [github/codeql-action](https://github.com/... -
02:57 AM Revision c99e07fe (git): Skip cleaning up the default docker image to avoid redundant pulls
- The default image (clang-20) is reused across multiple steps within
the same job. Only remove non-default images after use.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> -
02:57 AM Revision 5f08b4c6 (git): Remove stephanmisc/docuum dependency to avoid DockerHub rate limits
- Replace the docuum service container with a simple `docker rmi` step
after each compilation. This avoids pulling an external image from
DockerHub, which was causing rate limit issues.
Co-Authored-By: Claude Opus 4.6 (1M context) <norepl... -
01:10 AM Revision a0c6e64a (git): Add arm-to-x86 cross-compile matrix and generalize apt setup
- Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
01:10 AM Revision 371255ff (git): Add cross-compile workflow for out-of-source ARM build testing
- Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
01:10 AM Revision 2329ca1d (git): Revert generating sources in make-snapshot
03/29/2026
-
03:34 PM Revision 01e4a827 (git): Fall back writing prism sources to the current directory
-
03:34 PM Revision 4e3625fb (git): Add rule for dummy config.h
-
03:33 PM Revision 2cefc23a (git): Update rbinc files for snapshots
-
03:33 PM Revision 58f324d3 (git): Update prism sources before dump_ast
-
03:33 PM Revision 09a314d7 (git): Update prereq.status
-
03:33 PM Revision 353dca47 (git): Clean the build tool
-
03:33 PM Revision 70f5f861 (git): Distinguish the executable suffixes
- Build and target executable suffixes are unrelated in
cross-compilation. -
02:14 PM Revision ee2c1528 (git): Fix `dump_ast` build for cross-compiling
-
06:52 AM Bug #21952: Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
- So it appears that when duplicating a class in another box, we copy the class variables table, but not its entries, causing both boxes to think they own that memory, resulting in a double free.
I have a fix for the specific reproducer... - 05:57 AM Revision f9175a9e (git): Ensure safe handling of `IO::Buffer#hexdump` width. (#16593)
-
01:14 AM Revision 843bb9b7 (git): Exclude StringScanner implementation for TruffleRuby
-
12:05 AM Revision b3a3b94b (git): [ruby/strscan] [DOC] Undoc unused constants
- https://github.com/ruby/strscan/commit/1d85632f2a
03/28/2026
-
09:49 PM Revision cbcd7522 (git): [ruby/strscan] Implement StringScanner for TruffleRuby in pure Ruby
- (https://github.com/ruby/strscan/pull/195)
* Fixes https://github.com/ruby/strscan/issues/194.
* This is a fresh new implementation from scratch, contributed directly
to ruby/strscan, under BSD-2-Clause.
This was implemented using the s... -
03:02 PM Revision 64e10365 (git): ZJIT: Fn stub: Move args to create appropriate unfilled optional param gap
- When a SendDirect lands in a callee that fails to compile, we need to
reconstruct the interpreter state at the entry point of the callee in
function_stub_hit().
SendDirect never leaves gaps in its args Vec, and consequently, it
contains... -
01:28 PM Revision 546e2eba (git): Add `make html-server` for live-reloading doc preview (#16494)
- RDoc now has a `--server` mode that starts a local HTTP server
with live reload. Add an `html-server` make target so developers
can preview Ruby documentation while editing source files.
Usage: `make html-server` from the build director... -
01:12 PM Revision d89a9f82 (git): Extract `check_event_support` helper to reduce duplication in `vm_trace.c` (#16587)
- Extract check_event_support helper to reduce duplication in vm_trace.c
Five rb_tracearg_* functions repeated the same event validation
pattern. Extract it into a check_event_support() helper. -
09:09 AM Bug #21952: Ruby::Box double free at process exit when `fiddle/import` is required in multiple boxes
- I managed to reduce this further.
This is reproducible with pure Ruby now, without `fiddle/import`. The current reduced reproducer is along these lines:
```ruby
Ruby::Box.root.eval(<<~RUBY)
module M
@@x = 0
...