Project

General

Profile

Activity

From 10/24/2026 to 10/30/2026

Today

01:58 AM Revision 7704181e (git): ZJIT: Optimize Array != NilClass
Max Bernstein
01:58 AM Revision 599364e5 (git): ZJIT: Optimize String != NilClass
Max Bernstein
01:58 AM Revision d1a79485 (git): ZJIT: Optimize Integer != NilClass
Max Bernstein
01:58 AM Revision 3b150a90 (git): ZJIT: Add before tests for equality with nil
Max Bernstein
01:44 AM Revision ccb92217 (git): Don't write str2's code range back in rb_str_buf_append
Since rb_enc_str_coderange(str2) is called first, str2_cr is never
UNKNOWN and rb_enc_cr_str_buf_cat returns it unchanged, so writing it
back to str2 is redundant. It is also an unsynchronized write to str2,
which may be a frozen string ...
jhawthorn (John Hawthorn)
12:16 AM Revision 773003bd (git): Do not copy the receiver for every match in String#split
With MMTk a string of any length is embedded, so rb_reg_search copied the whole receiver into each MatchData, and splitting a large string by a regexp took quadratic time. TestGemSafeYAML#test_load_block_scalar_strip_indicator_in_linear_... hsbt (Hiroshi SHIBATA)
12:16 AM Revision 46d53e73 (git): Reconfigure GNU make builds when the makefiles are stale
GNUmakefile.sub had no rule to update GNUmakefile and verconf.mk, so verconf.mk kept the ABI version from the first configure and config.h followed it after abi.h was bumped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:16 AM Revision 820ced8d (git): Stop nmake when reconfig changed verconf.mk
The running nmake keeps the values read from the old verconf.mk, so after an ABI version bump config.h was written with the old RUBY_ABI_VERSION and never updated again. Every compile then warned C4005, and mkmf checks with werror failed... hsbt (Hiroshi SHIBATA)
12:16 AM Revision 9953185a (git): Read mkmf.log as binary for the failure messages
The log holds compiler output in the console code page, which is CP932 on Japanese Windows, so building the message raised ArgumentError and hid the actual failure.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:01 AM Bug #22451 (Closed): Coderange may be set incorrectly when concatenating a string into itself
Applied in changeset commit:git|b740f7d553e6ee4abdff8847760394b4e6ea389c.
----------
Don't write str2's code range back in rb_str_buf_append
Since rb_enc_str_coderange(str2) is called first, str2_cr is never
UNKNOWN and rb_enc_cr_str_b...
jhawthorn (John Hawthorn)
12:01 AM Revision b740f7d5 (git): Don't write str2's code range back in rb_str_buf_append
Since rb_enc_str_coderange(str2) is called first, str2_cr is never
UNKNOWN and rb_enc_cr_str_buf_cat returns it unchanged, so writing it
back to str2 is redundant. It is also an unsynchronized write to str2,
which may be a frozen string ...
jhawthorn (John Hawthorn)

10/29/2026

11:59 PM Revision 14733af5 (git): Fix missed write barrier when duplicating a box classext's m_tbl
Since 44fff96b0b (Attach a box classext to its class before filling it in)
the half-built classext is reachable by the GC while it is being filled,
but the new m_tbl was only stored on it once it was complete, and for an
ICLASS the GC on...
jhawthorn (John Hawthorn)
11:25 PM Revision d5d40d27 (git): Cache refined &:sym funcs only in the owning Ractor's table
Under refinements, vm_caller_setup_arg_block caches the func it makes for
`&:sym` in the cref's refinements table. The cref belongs to whichever
Ractor ran `using`, usually main, but any Ractor calling a method defined
there reached the ...
jhawthorn (John Hawthorn)
09:47 PM Revision 0abc5521 (git): Keep master's allocation order in the Windows downward sweep
Only the order of the frees matters to the NT heap. Pushing each region as it closed also made allocation run upwards across the whole page, and the heap then faulted in more pages than with master.
Co-Authored-By: Claude Opus 5.5 <nore...
hsbt (Hiroshi SHIBATA)
09:47 PM Revision d1fe3dab (git): Clarify the comments on the Windows downward sweep
Allocation runs upwards within each free region rather than across the whole page, and a slot that heap_page_add_free_region returns later goes to the head of the region list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
09:47 PM Revision f34d844d (git): Sweep heap pages downwards on Windows
The bump pointer allocator (4f259bc25d) allocates upwards within a page, so sweeping upwards frees the slots' malloc'ed buffers in the order they were allocated. That fragments the NT heap, and string_malloc_pressure of ruby-bench gets s... hsbt (Hiroshi SHIBATA)
09:47 PM Revision 82582337 (git): ZJIT: Avoid accumulating send counters during specialization (GH-19485)
The fixed-point optimizer can revisit a dynamic send after inlining.
Discard runtime counters from its previous specialization attempt before
retrying, while preserving counters for successful replacements.
Cover argument features, call...
thomasklemm (Thomas Klemm)
09:14 PM Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
Eregon (Benoit Daloze) wrote in #note-12:
> @dalehamel Could you update the dev-meeting summary at https://bugs.ruby-lang.org/issues/22417#note-2 to reflect the latest patch?
> ...
Thanks for the guidance, I updated the comment and ope...
dalehamel (Dale Hamel)
08:53 PM Revision 461085c2 (git): ZJIT: Exit with the original send's stack on stack overflow (GH-19538)
SendDirect and PushInlineFrame carry a frame state with the callee's
normalized arguments: keywords reordered or default-filled, splats
expanded, rest packed, a nil block arg stripped. Their stack overflow
check side-exits to re-run the ...
thomasklemm (Thomas Klemm)
08:52 PM Revision 54d09881 (git): YJIT: Fall back for explicit keywords in IFUNC block calls
The IFUNC fast path passes raw keyword values to rb_vm_yield_with_cfunc
without packing them into a Hash. For example, an Enumerable iterator
that yields [], key: i loses the keyword name when called by each_slice.
Use VM dispatch for V...
thomasklemm (Thomas Klemm)
08:49 PM Revision 1654a6a0 (git): ZJIT: Focus alias redefinition regression tests
Split normal send and super into separate tests. Remove the inlining controls and source-method redefinition check so each test covers only alias invalidation. thomasklemm (Thomas Klemm)
08:49 PM Revision 67a320db (git): ZJIT: Guard lookup entries when resolving aliases
Re-aliasing a module method invalidates the lookup CME, not the resolved
alias target. Keep the lookup entry for method-redefinition patchpoints
in sends and super calls, while retaining the resolved entry for dispatch
and frame setup.
...
thomasklemm (Thomas Klemm)
06:20 PM Revision 64ae80dd (git): ZJIT: Clarify expandarray splat handling
nozomemein (Nozomi Hijikata)
06:20 PM Revision 1b88c2e4 (git): ZJIT: Use unboxed integers for the expandarray rest loop
Use IntAdd and IntLt to keep loop control in CInt64 and avoid Fixnum boxing and unboxing. nozomemein (Nozomi Hijikata)
06:20 PM Revision 0dde38a1 (git): ZJIT: Support expandarray with a rest array
Build forward rest expansion for exact Arrays using existing HIR instructions. nozomemein (Nozomi Hijikata)
05:59 PM Bug #4559: Proc#== does not match the documented behaviour
I don't know whether this should be the place to discuss it anymore because it is old, but I think currently `Proc#==` still does not match the documented behavior. The current documentation in Ruby 4 says `self == other` "returns whethe... UlyssesZhan (Ulysses Zhan)
04:59 PM Revision 0819f553 (git): [ruby/openssl] ocsp: use ossl_want_uninitialized() in BasicResponse#initialize
Commit https://github.com/ruby/openssl/commit/5f104287930a (ocsp: allocate OpenSSL objects in #initialize{,
_copy}, 2025-12-07) forgot to add this line.
https://github.com/ruby/openssl/commit/787afbf9f8
rhenium (Kazuki Yamaguchi)
04:59 PM Revision 45bcb337 (git): [ruby/openssl] hmac: allocate OpenSSL objects in #initialize{,_copy}
Allocate EVP_MD_CTX in OpenSSL::HMAC#initialize and #initialize_copy
instead of .allocate. <https://github.com/ruby/openssl/pull/1046>
made similar changes to several other classes, but overlooked HMAC.
This fixes crash in OpenSSL::HMAC...
rhenium (Kazuki Yamaguchi)
04:58 PM Revision c34b1565 (git): [ruby/openssl] test_ssl.rb: Refactor test_pqc_sigalg
* Align key numbers with the pattern in test/openssl/utils.rb setup: rsa-1 for
CA, rsa-2 for server, rsa-3 for client.
* Use rsa-2 for server, because rsa-1 is already used for CA (@ca_key,
@ca_cert).
* Use mldsa65-1 for CA and mldsa...
jaruga (Jun Aruga)
03:57 PM Revision a6c4c8e8 (git): [ruby/openssl] ssl: add SSLSocket#min_version= and #max_version=
Allow setting the supported protocol version range per connection.
They are the SSLSocket counterparts of SSLContext#min_version= and
#max_version=.
This is a step toward configuring the SSL object directly from
callbacks instead of swi...
Sutou Kouhei
03:13 PM Revision 3fa45471 (git): [ruby/prism] Avoid recursion in parsing escapes
Previously we would pass forward the flags and then recurse. Now
it's just a goto like we do when we want to lex the next token.
https://github.com/ruby/prism/commit/0c648e0f7a
kddnewton (Kevin Newton)
02:55 PM Bug #22390: ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
@eightbitraptor (Matt V-H) thx for taking a look. Just wanted to give a heads up that we managed to upgrade after a lot of experimentation with several GC tunings. We settled on setting RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR to 1.1 . We sus... chucke (Tiago Cardoso)
02:50 PM Revision 6cfd3b4a (git): [ruby/prism] Check depth limit for nested control and meta escapes
https://github.com/ruby/prism/commit/a95907f011 kddnewton (Kevin Newton)
10:53 AM Revision 61332e53 (git): Read the dir output for the symlink check as binary
cmd.exe writes it in the console code page, which is CP932 in an ssh session, while IO.popen tags it as UTF-8 on Windows, so the regexp match raised ArgumentError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
10:14 AM Revision 7142a3de (git): Optimize `Hash.new(capacity:)`
Since the dynamic AR-table refactoring, `Hash.new(capacity:)` no
longer allocate the ideal size for capacity `<= 8`, because the
capacity allocation happens in `#initialize`, hence after the
slot has been allocated.
To solve that, we ha...
byroot (Jean Boussier)
09:00 AM Revision c0813055 (git): Track the given members of Data#initialize without copying them
Data#initialize copied the member list on every call to find the missing
keywords, then cleared the given ones. A byte per member is enough to
track what was given, and the member list is only needed to build the
error message, so look i...
shia (Sangyong Sim)
08:59 AM Revision d411489c (git): Use addcarry intrinsic for size overflow
uvlad7 (Vladimir Ulianitsky)
08:56 AM Bug #22487 (Open): Allocation between GCs and peak RSS keep growing on master when large String buffers are dropped
## Summary
On master (637bd7cba1), a loop that repeatedly allocates a String with a 1 MiB buffer, without keeping any reference to the previous Strings, triggers GC after larger and larger amounts of allocation. Peak RSS keeps rising ...
watson1978 (Shizuo Fujita)
07:25 AM Feature #13241: Method(s) to access Unicode properties for characters/strings
One thing I didn't see discussed much is `Script_Extensions`.
`Script` gives a single value for each code point, but `Script_Extensions` can return a set of scripts. The Japanese prolonged sound mark `ー` is a useful example: its Scrip...
Mrlaura (QUANG NGUYEN)
05:51 AM Feature #22486 (Open): Anonymous method
I propose an API `Method.new(receiver, name = nil, &block)` to define an anonymous singleton method and `UnboundMethod.new(owner, name = nil, &block)` to define an anonymous instance method. The default value of `name` can be `:anonymous... UlyssesZhan (Ulysses Zhan)
05:05 AM Feature #22485 (Open): ensure modifier
Similar to the `rescue` modifier, an `ensure` modifier allows writing `ensure` block in one line: `do_something ensure clean_up`. UlyssesZhan (Ulysses Zhan)
05:04 AM Feature #22484 (Open): Object#undef_singleton_method and Object#remove_singleton_method
Equivalent to `singleton_class.undef_method` and `singleton_class.remove_method`. UlyssesZhan (Ulysses Zhan)
02:54 AM Revision a34946d6 (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.87.31 to 2.87.32
- [Release notes](https://github.com/taiki-e...
dependabot[bot]
02:40 AM Revision 0399e2ba (git): Suppress clangarg-mingw warnings
nobu (Nobuyoshi Nakada)
02:36 AM Revision bd8cf52b (git): Check RUBY_VERSION against the release version format
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> hsbt (Hiroshi SHIBATA)
02:35 AM Revision 27d148a9 (git): Remove code for old rubies from spec_helper
* `File.realpath` was introduced at 1.9.2.
* `Thread.report_on_exception` was introduced at 2.4.0.
nobu (Nobuyoshi Nakada)
01:28 AM Revision 952e77c5 (git): Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [cygwin/cygwin-install-action](https://github.com/cygwin/cygwin-install-action) and [cross-platform-actions/action](https://github.com/cross-platform-actions/action).
Up...
dependabot[bot]
01:20 AM Revision d176801d (git): Cache Struct members only on the owner Ractor
struct_ivar_get caches a member list found on a superclass into the
subclass with rb_ivar_set. The ID has no "@", so it skips the Ractor
ownership check, and a Ractor that does not own the class ends up
writing class fields concurrently ...
shia (Sangyong Sim)
12:06 AM Feature #22483 (Open): Region forms of String#bit_get
Impl: (WIP)
This ticket completes the region arguments of #22279 for `bit_get`. #22279 added the `(offset, length)` and `range` forms to `bit_set`, `bit_clear`, `bit_flip` and `bit_count`, and the commit message of #22118 announced th...
hasumikin (hitoshi hasumi)
12:01 AM Feature #22482 (Open): String#bit_index, a bit search for String bit operations
Impl: (WIP)
This is a reply to the comment of Matz in #22399#note-3. It replaces the seven methods of #22399 and #22405 with one search method. The deferred methods can be written on top of it in Ruby, and the last section gives the m...
hasumikin (hitoshi hasumi)

10/28/2026

10:45 PM Revision b62abdae (git): Faster rb_gc_handle_weak_references
Pass objspace throughout the call chain.
For a script with 100k callcaches, major GC time improved for bothh
single-ractor and multi-ractor.
| Configuration | Baseline | Patched | Δ |
|---|---|---|---|
| single-ractor | 14.04 ms/major ...
Luke Gruber
10:05 PM Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
@dalehamel Could you update the dev-meeting summary at https://bugs.ruby-lang.org/issues/22417#note-2 to reflect the latest patch?
I think opening a PR to ruby/ruby would also be helpful to help review.
Eregon (Benoit Daloze)
10:02 PM Misc #22417: DevMeeting-2026-11-12
* [Feature #21962] Add deep_freeze for recursive freezing (eregon)
* PR ready, following the semantics discussed at the dev meeting at RubyKaigi: https://github.com/ruby/ruby/pull/19529
* OK to merge it?
Eregon (Benoit Daloze)
10:01 PM Feature #21962: Add deep_freeze for recursive freezing
PR to implement `deep_freeze` per the last comment & discussion at the dev meeting at RubyKaigi:
https://github.com/ruby/ruby/pull/19529
Eregon (Benoit Daloze)
09:51 PM Feature #22376 (Closed): Undefine the allocator for Class
BTW, this was merged in https://github.com/ruby/ruby/pull/18964, updating the issue status Eregon (Benoit Daloze)
09:49 PM Feature #22376: Undefine the allocator for Class
There used to be a similar issue in RSpec (IIRC) but I've fixed it a long time ago, when TruffleRuby did the same change as proposed here.
I think `Class.method(:new)` is quite rare, and `Class.instance_method(:new)` is more correct any...
Eregon (Benoit Daloze)
09:30 PM Feature #22376: Undefine the allocator for Class
Claude code reports that (I'm not sure it is important or not):
---
FYI, this changes the result of `Class.method(:new)`, and code that rebinds it to another class now fails:
```ruby
class H; def initialize(x) = (@x = x); end
...
ko1 (Koichi Sasada)
09:30 PM Revision eb1a765b (git): ZJIT: Keep array flags cached across ArrayAset
An element store never changes the array's flags, so we can keep
cached RBASIC_FLAGS loads in the load/store optimization pass instead
of clearing all cached loads.
Hartley McGuire
09:30 PM Revision 0a7b079d (git): ZJIT: Avoid emitting WriteBarrier for immediate values
Add a Function::write_barrier helper that checks whether the value is
known to be an Immediate before emitting a WriteBarrier instruction.
Previously, WriteBarriers with immediate values would only be removed
in the fold_constants pass....
Hartley McGuire
09:30 PM Revision c50cc8dd (git): ZJIT: Constrain effects of ArrayAref{,Checked}
ArrayAref and ArrayArefChecked only read memory and do not write to it.
Constraining their effects from effects::Any to read_write(Memory, Empty)
prevents them from invalidating cached loads in the load/store
optimization pass.
Hartley McGuire
09:30 PM Revision 79858343 (git): ZJIT: Add new snapshot tests
So that later commits can optimize them Hartley McGuire
08:32 PM Revision 8f292dad (git): Record a native thread's id from the thread itself
pthread_create can write the new thread's id through its first argument
after the thread has started (Apple's libpthread and musl do). Since
dce74ebf04, a shared native thread exits and frees its rb_native_thread
when the pool has more t...
William T. Nelson
08:25 PM Revision 1b06b950 (git): Update to ruby/spec@9c936cf
andrykonchin (Andrew Konchin)
08:10 PM Revision 810a5a1d (git): [DOC] Fix default mapping in String case method signatures (#19582)
The call-seq for String#upcase, #downcase, #capitalize, #capitalize!,
and #swapcase showed `mapping = :ascii`, but these methods default
to Unicode case mapping when no argument is passed.
Eileen
07:34 PM Bug #22481 (Open): `break` in block passed to Method#to_proc cause [BUG] Stack consistency error
```ruby
def m(a) = yield(a)
def run = method(:m).to_proc.(7) { break }
p run
```
Found by fuzzing. Crashes all released versions and on trunk. I haven't investigated a fix.
alanwu (Alan Wu)
06:35 PM Bug #21142: Lazy enumerator `.each_with_index` ignores `.take(0)` before it
@nobu
The above commit changed the behavior such that `lazy#each_with_index { ... }` is no longer running the block and just returning the enumerator.
4.0:
```
$ ruby -ve 'arr = []; p 3.times.lazy.each { |*a| arr << a }; p arr;'
r...
rwstauner (Randy Stauner)
05:51 PM Revision 5127bd0d (git): ZJIT: Group inline statement management (#19526)
Minor refactor to make the code easier to read.
This was suggested by https://github.com/ruby/ruby/pull/18871/changes#r4134748979.
swebb (Steven Webb)
01:01 PM Feature #22437: Speed up creation and basic operations of Struct / Data
3rd PR is here. [Track the given members of Data#initialize without copying them](https://github.com/ruby/ruby/pull/19581)
Before digging into where to store the members, I'm going to look into the ISEQ approach first.
shia (Sangyong Sim)
12:38 PM Bug #22479: File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
ruby_3_4 commit:72d9d4b935fee84c5c6d9ca7efcf269cf2ddb23b merged revision(s) commit:670f6c1541838af7f0d945af63745ff8d0438122. nagachika (Tomoyuki Chikanaga)
07:56 AM Bug #22479: File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
I couldn't reproduce the issue on my machine, but the fix clearly makes sense, so I merged it. Thanks! mame (Yusuke Endoh)
07:54 AM Bug #22479 (Closed): File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
Applied in changeset commit:git|670f6c1541838af7f0d945af63745ff8d0438122.
----------
Keep the symlink target alive while realpath_rec reads it
realpath_rec reads the names of a symlink target through a raw pointer
into the string retur...
Anonymous
05:30 AM Bug #22479: File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
Pull request: https://github.com/ruby/ruby/pull/19573 nishanbende (Nishan Bende)
05:26 AM Bug #22479 (Closed): File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
`File.realdirpath` can return a wrong path for a path behind a relative symlink, when GC runs during the call.
The result is one of these:
* the unresolved symlink path, or
* a path with NUL bytes, so that `Pathname.new` raises `A...
nishanbende (Nishan Bende)
12:31 PM Revision 72d9d4b9 (git): merge revision(s) 670f6c1541838af7f0d945af63745ff8d0438122: [Backport #22479]
[PATCH] Keep the symlink target alive while realpath_rec reads it
realpath_rec reads the names of a symlink target through a raw pointer
into the string returned by rb_readlink, while it calls itself to resolve
t...
nagachika (Tomoyuki Chikanaga)
12:25 PM Revision 637bd7cb (git): Format box IDs with rb_sprintf
Avoid creating an intermediate string when inspecting a box. nobu (Nobuyoshi Nakada)
12:04 PM Bug #22477: rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
merged into ruby_3_4 at https://github.com/ruby/ruby/commit/fc063c977230ecde18d6a79187e82b7794e6b716. nagachika (Tomoyuki Chikanaga)
12:04 PM Revision fc063c97 (git): Add a signal fence in rb_ec_clear_vm_stack()
Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_frames() called from a signal
handler returns early instead of walking a stack that is no longer set
on the ec. But these are plain ...
Eregon (Benoit Daloze)
11:03 AM Bug #22480 (Closed): Ruby's release tarballs are not POSIX compliant since 2018
Applied in changeset commit:git|130c9ec44bd35c7319cdc99c301419188510e3a9.
----------
[Bug #22480] make release tarballs POSIX compliant
Ruby's own release tarballs are not POSIX compliant since 2018, because
the end-of-archive marker (...
stabbles (Harmen Stoppels)
10:27 AM Bug #22480 (Closed): Ruby's release tarballs are not POSIX compliant since 2018
Hi,
This is a bit of a curiosity, but I noticed that Ruby's release tarballs are not POSIX compliant, because they're missing an end-of-archive marker.
See https://pubs.opengroup.org/onlinepubs/9799919799/utilities/pax.html#:~:text...
stabbles (Harmen Stoppels)
11:03 AM Revision 130c9ec4 (git): [Bug #22480] make release tarballs POSIX compliant
Ruby's own release tarballs are not POSIX compliant since 2018, because
the end-of-archive marker (two blocks of zeros) were missing.
The end-of-archive is written when the TarWriter is closed, which is
what this commit does explicitly....
stabbles (Harmen Stoppels)
10:39 AM Feature #22014: Support `||` and `&&` operations in coverage
**+1** on this
Branch coverage is now a CI gate in a lot of Ruby projects, and `&&`/`||` is the one place where Coverage reports code as fully covered even though part of it never ran. For example:
```ruby
def publishable?(p...
jduarte (José Duarte)
09:37 AM Revision 436e72e7 (git): Update default gems list at 8e87705be88d3f1e8bdb8f75ea7e8e [ci skip]
git[bot]
09:35 AM Revision 8e87705b (git): [ruby/io-console] bump up to 0.9.5
https://github.com/ruby/io-console/commit/8ba28809c0 headius (Charles Nutter)
07:54 AM Revision 670f6c15 (git): Keep the symlink target alive while realpath_rec reads it
realpath_rec reads the names of a symlink target through a raw pointer
into the string returned by rb_readlink, while it calls itself to resolve
those names. RB_GC_GUARD(link_orig) keeps that string alive only for an
absolute target. For...
nishan
06:38 AM Revision b1f8ac36 (git): Preserve ensure handlers for unreachable labels
Ensure catch entries must remain active when dead code removal leaves
unplaced range labels. Dropping them skips ensure clauses on exceptions.
See https://github.com/ruby/ruby/pull/19513#issuecomment-6460531535.
nobu (Nobuyoshi Nakada)
05:56 AM Revision e80cd771 (git): [ruby/prism] Define PRISM_OOM
So we have a centralized place to handle out of memory errors.
https://github.com/ruby/prism/commit/14969912cc
kddnewton (Kevin Newton)
05:36 AM Revision 65c8fc01 (git): [ruby/prism] Avoid strtoul for numbered references
https://github.com/ruby/prism/commit/432884bd14 kddnewton (Kevin Newton)
05:16 AM Revision c7e123c7 (git): [ruby/prism] Bump to v2.1.0
https://github.com/ruby/prism/commit/ca15cb3d8b kddnewton (Kevin Newton)
04:22 AM Revision 820ad50e (git): Update default gems list at 0c359f342df6f63102e12ac938f90b [ci skip]
git[bot]
04:21 AM Revision 0c359f34 (git): [ruby/rubygems] Bump Rubygems version to 4.1.0.beta3
https://github.com/ruby/rubygems/commit/b1665cc3d1 hsbt (Hiroshi SHIBATA)
04:21 AM Revision 8f7eb9c4 (git): [ruby/rubygems] Bump Bundler version to 4.1.0.beta3
https://github.com/ruby/rubygems/commit/f0b70a34eb hsbt (Hiroshi SHIBATA)
03:46 AM Revision 16cf9129 (git): [ruby/mmtk] Register pinned root objects in PinningRegistry
We need to register objects pinned from the root in PinningRegistry for
rb_gc_impl_pinned_p to work properly.
https://github.com/ruby/mmtk/commit/6e8ad61924
peterzhu2118 (Peter Zhu)
03:46 AM Revision c27aa172 (git): ZJIT: Specialize ifunc before invokeblock fallback (#19549)
k0kubun (Takashi Kokubun)
03:09 AM Feature #22478: RbConfig::CONFIG could be Ractor-shareable by default?
The methods in `mkmf.rb` sometimes modify it. nobu (Nobuyoshi Nakada)
02:28 AM Revision 8eaa862c (git): [ruby/rubygems] Compare a rubygems source with itself without building its remotes
SpecGroup#merge compares the sources of candidates, which are nearly always the same object, and every comparison built the credential-less remote strings of both sides. This removes about 300,000 allocations from `bundle update` in the ... hsbt (Hiroshi SHIBATA)
02:28 AM Revision a4af4a22 (git): [ruby/rubygems] Reduce allocations while parsing YAML in Gem::YAMLSerializer
Gem metadata is loaded with this parser instead of Psych since it became the default, and it allocated about three times as many objects per gemspec. Most came from stripping lines to measure their indentation, keyword arguments to the n... hsbt (Hiroshi SHIBATA)
02:28 AM Revision 71f231d3 (git): [ruby/rubygems] Avoid partition in prefer_content_addressable
It runs for every platform match during resolution, and Enumerable#partition allocates three arrays plus a memo and an ifunc per call even when no candidate is content addressed. Finding the first content-addressed candidate before sorti... hsbt (Hiroshi SHIBATA)
02:19 AM Revision c7302c98 (git): [DOC] Doc for MatchData#[]
burdettelamar (Burdette Lamar)
01:09 AM Revision 6926e656 (git): [ruby/rubygems] Avoid a word codespell flags in a YAML serializer test
codespell read "caf\xC3\xA9", the bytes of "café" spelled out in a string literal, as a misspelling of "calf". Any raw UTF-8 bytes serve the test, so use those of a Japanese character instead.
https://github.com/ruby/rubygems/commit/271...
hsbt (Hiroshi SHIBATA)
01:09 AM Revision 6b66a7e1 (git): [ruby/rubygems] Compare YAML null scalars without allocating an array
["~", "null"].include?(val) allocates an array on every plain scalar on Ruby 3.3 and older, where include? on an array literal is not optimized. Use a frozen constant instead.
https://github.com/ruby/rubygems/commit/8319439744
Co-Autho...
hsbt (Hiroshi SHIBATA)
01:09 AM Revision d5b9496e (git): [ruby/rubygems] Keep quoted commas inside a YAML flow sequence entry
A flow sequence was split on every comma, so a quoted entry containing one, as in ["x, y", z], came back as the fragments "\"x" and "y\"". Scan the entries so a quoted one is taken whole.
https://github.com/ruby/rubygems/commit/b3de2a6c...
hsbt (Hiroshi SHIBATA)
01:09 AM Revision 41e7a8f7 (git): [ruby/rubygems] Unescape the remaining YAML double-quoted escapes
Psych writes NEL as "\N" and a BOM or other non-printable characters as "\uXXXX" or "\UXXXXXXXX", but those escapes stayed in the loaded string as is. Restore them along with "\_", "\L" and "\P". Metadata is read as binary, so a non-ASCI... hsbt (Hiroshi SHIBATA)
01:09 AM Revision c593a9e7 (git): [ruby/rubygems] Keep spaces beyond the indentation on blank-looking block scalar lines
A block scalar line holding only spaces became an empty line even when it had more spaces than the indentation, which are content in YAML. Gem::YAMLSerializer.dump writes such lines for strings like "x\n \ny\n", so they did not survive... hsbt (Hiroshi SHIBATA)
01:09 AM Revision 7e58ec2f (git): [ruby/rubygems] Apply the strip chomping indicator of YAML block scalars
The strip indicator only took effect when it was the whole header, so "|2-" written by Psych kept the trailing line break, and even "|-" removed just one of several. Read the chomping indicator next to an indentation indicator and remove... hsbt (Hiroshi SHIBATA)
01:09 AM Revision d0693e50 (git): [ruby/rubygems] Honor the indentation indicator of YAML block scalars
Psych writes a block scalar whose first line starts with spaces as "|2", but the parser ignored the digit and took the indentation from that first line. A description such as " Indented first line\nsecond line\n" lost its leading spaces... hsbt (Hiroshi SHIBATA)
01:09 AM Revision 79a78fb1 (git): [ruby/rubygems] Stop folding a plain YAML scalar at a comment line
A more indented comment line after a plain scalar was folded into the value, so "ssl_ca_cert: /path" followed by an indented comment in ~/.gemrc loaded as "/path # comment". A comment line ends a plain scalar, so treat it like a blank li... hsbt (Hiroshi SHIBATA)
01:09 AM Revision 70e332c8 (git): [ruby/rubygems] Skip comment and blank lines inside nested YAML collections
Gem::YAMLSerializer ended a nested sequence or mapping at the first comment or blank line, so the entries after it were dropped or moved to the root mapping. Commenting out one of the :sources: in ~/.gemrc silently removed every source a... hsbt (Hiroshi SHIBATA)
12:59 AM Revision 79de9be7 (git): [DOC] Doc for MatchData#==
burdettelamar (Burdette Lamar)
12:53 AM Revision cf8f58a9 (git): [ruby/rubygems] Point the from: and to: of 4.1.0.beta2 overrides at in: and with:
Otherwise `override "b", from: "a", to: "c"` from a beta2 Gemfile fails as an unsupported `from:` field, which does not say how to write it now.
https://github.com/ruby/rubygems/commit/28df3adad7
Co-Authored-By: Claude Opus 5.5 <norepl...
hsbt (Hiroshi SHIBATA)
12:53 AM Revision 78da6e26 (git): [ruby/rubygems] Rename the from: key of override to in:
`from:` next to `with:` still reads as a direction, while `override "grpc", with: "grpc-lite", in: "google-cloud-pubsub"` reads as a sentence. Gemfiles written for 4.1.0.beta2 already need editing for `to:`, so renaming `from:` in the sa... hsbt (Hiroshi SHIBATA)
12:53 AM Revision a5d2309e (git): [ruby/rubygems] Pin that override rejects the to: key
The rename leaves no alias, so a Gemfile or OVERRIDES line still written with `to:` must fail rather than be read as `with:`.
https://github.com/ruby/rubygems/commit/43c9c015c9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
12:53 AM Revision 474d1b0e (git): [ruby/rubygems] Rename the to: key of override to with:
Paired with `from:`, `to:` reads as converting the `from:` gem into the `to:` gem. The key is also recorded in the OVERRIDES section of Gemfile.lock, which no release has shipped yet, so rename it now without keeping `to:` as an alias.
...
hsbt (Hiroshi SHIBATA)
12:02 AM Revision 1de408bb (git): ZJIT: Don't profile singleton classes of non-module objects (#19540)
k0kubun (Takashi Kokubun)
12:01 AM Revision 997e41e8 (git): [ruby/rubygems] Hash Bundler::Source::Rubygems from its remotes without credentials
eql? ignores credentials, so two sources that differ only in them were equal but hashed differently, and the uniq! in SourceList kept both. The lockfile then got a duplicate GEM section for the same remote.
https://github.com/ruby/rubyg...
hsbt (Hiroshi SHIBATA)

10/27/2026

11:42 PM Revision 021446fa (git): Fix the timeout of getaddrinfo with a nil host or service
Building the error message from a NULL pointer raised ArgumentError instead of IO::TimeoutError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
11:42 PM Revision 47d56643 (git): mswin: Resolve hostnames in a dedicated thread
Without pthread, mswin fell back to GETADDRINFO_IMPL 1, which ignores the timeout of Addrinfo.getaddrinfo and lets neither Timeout, Thread#kill nor Thread#raise stop the caller until getaddrinfo(3) returns. Start the resolver thread with... hsbt (Hiroshi SHIBATA)
11:42 PM Revision a98386e4 (git): Drop the unused thread handle from the resolver thread creation
No caller reads the pthread_t, so raddrinfo_thread_create() no longer takes one, and a non-pthread implementation can sit behind it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:35 PM Revision 9ba7257f (git): Add a signal fence in rb_ec_clear_vm_stack()
Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_frames() called from a signal
handler returns early instead of walking a stack that is no longer set
on the ec. But these are plain ...
Eregon (Benoit Daloze)
07:06 PM Feature #22478 (Open): RbConfig::CONFIG could be Ractor-shareable by default?
Hi
Is this intentional? The following code fails due to
`Ractor::CONFIG` not being Ractor-shareable.
```ruby
##
# Ractor::IsolationError
require "rbconfig"
Ractor.new {
Process.wait Process.spawn(RbConfig.ruby, "-e", "p 1...
altruby (Alt Ruby)
06:41 PM Bug #22477 (Closed): rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
Applied in changeset commit:git|db563a357875d4efbadec58b0fd8695ac9a82f42.
----------
Add a signal fence in rb_ec_clear_vm_stack()
Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_...
Eregon (Benoit Daloze)
04:57 PM Bug #22477: rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
PRs:
master: https://github.com/ruby/ruby/pull/19561
4.0: https://github.com/ruby/ruby/pull/19562
3.4: https://github.com/ruby/ruby/pull/19563
3.3: https://github.com/ruby/ruby/pull/19564
Eregon (Benoit Daloze)
04:37 PM Bug #22477 (Closed): rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
The fix for #21441 (e3ec101cc2) sets `ec->cfp = NULL` before `rb_ec_set_vm_stack(ec, NULL, 0)` in `rb_ec_clear_vm_stack()`.
That way, `thread_profile_frames()` called from a signal handler returns early instead of walking a stack that i...
Eregon (Benoit Daloze)
06:41 PM Revision db563a35 (git): Add a signal fence in rb_ec_clear_vm_stack()
Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_frames() called from a signal
handler returns early instead of walking a stack that is no longer set
on the ec. But these are plain ...
Eregon (Benoit Daloze)
06:18 PM Revision 95f21cd8 (git): Fix fill_cbuf putting back more bytes than the current rbuf fill holds
The converter can still hold readagain bytes from an earlier rbuf fill,
so fill_cbuf must not put all of them back into the current rbuf. Clamp
the putback to the bytes taken from the current fill; the rest stay in
the converter and are ...
mame (Yusuke Endoh)
04:48 PM Revision 93c45a96 (git): Check remaining pattern length in str_lower_case_match
A text character can case-fold to more bytes than remain in the
pattern, e.g. U+00DF folds to "ss" against /s/i. Such a character
cannot match, so stop there instead of comparing beyond the pattern.
Reported-by: Paul Ryan (https://hack...
mame (Yusuke Endoh)
03:28 PM Revision 33ac6afe (git): ZJIT: Mark String#% as returning StringExact (#19479)
rb_str_format always allocates its result with rb_str_buf_new, so the
result is a plain String even when the receiver is a subclass.
Fixes https://github.com/Shopify/ruby/issues/1085
femto (femto Zheng)
03:27 PM Bug #22476: rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
PR to fix this: https://github.com/ruby/ruby/pull/19559
I'll create backport PRs after this one is merged.
Eregon (Benoit Daloze)
03:15 PM Bug #22476: rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
CC @jhawthorn
This sounds very similar to the issue from https://github.com/ruby/ruby/pull/16615
alanwu (Alan Wu)
01:16 PM Bug #22476: rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
I'm working on a fix, will post the PR when it's ready here, as well as create backport PRs. Eregon (Benoit Daloze)
01:08 PM Bug #22476 (Open): rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
Sampling profilers (like StackProf, Vernier, Datadog) call `rb_profile_frames()` from a signal handler.
Datadog uses a slight variant of `rb_profile_frames()` but it does not matter, it reproduces either way.
`rb_profile_frames()` segf...
Eregon (Benoit Daloze)
03:16 PM Revision 93d31355 (git): ZJIT: Test that NoEPEscape resumes after the call
Existing tests only read a local that eval wrote, which passes even if
the side exit resumed before the call. Pin the snapshot pc in an HIR
test and count how many times eval runs when the patch point fires.
dak2 (Daichi Kamiyama)
02:17 PM Revision caf4f279 (git): [ruby/prism] Test embedded in CI
Make sure we do not accidentally break newlib/ARM embedded consumers.
https://github.com/ruby/prism/commit/19762c99ce
kddnewton (Kevin Newton)
01:49 PM Revision 25eb737f (git): eliminate cross-TU calls to rb_vm_empty_cc()
rb_vm_empty_cc(), rb_vm_empty_cc_for_super() and rb_vm_uncached_cc()
shouldn't be real function calls. rb_iseq_mark_and_move was calling
these as real functions in a loop.
Luke Gruber
01:49 PM Revision ae2c6841 (git): Don't create CCs for methods we assume are cold
The assumption is that we're usually calling these methods on boot, and they don't
need CCs. CCs scale with the number of classes that use these methods in the app, so
if you have 10k classes and these classes use 3 of these methods on a...
Luke Gruber
11:50 AM Revision 32f06ce9 (git): Don't retag the shared fstring via TYPE_UCLASS in Marshal.load
This is not a real-world problem. Marshal.dump never emits this payload.
It can only be hand-crafted. Loading untrusted Marshal data is already
unsafe. This fix only avoids false positives from security scanners.
TYPE_UCLASS ('C') relab...
Sutou Kouhei
10:10 AM Bug #22475: Prepending a second module to an already-included module duplicates it in the includer's ancestors (regression from the Bug #22257 fix)
Pull request: https://github.com/ruby/ruby/pull/19552
It contains the same change as the attached patch (skip origin iclasses in the subclasses loop of `rb_prepend_module`) plus a regression test in `test/ruby/test_module.rb`.
naopontan (naoki takaesu)
09:45 AM Bug #22475 (Open): Prepending a second module to an already-included module duplicates it in the includer's ancestors (regression from the Bug #22257 fix)
## Summary
Since the fix for #22257 (master c59c4d717a, backported to ruby_3_4 as c8e05b5885 and to ruby_4_0 as 06611602a9), prepending a module to a module `M` that already has includers works correctly the first time, but every *sub...
naopontan (naoki takaesu)
07:37 AM Revision cda35276 (git): CI: Windows: Refactor setup/directories cleanup
Use the input values via environment variables directory, without a
separated step. Retry to remove build directory for Windows.
nobu (Nobuyoshi Nakada)
04:39 AM Revision 60ba00df (git): CI: Windows: Remove WindowsApps from PATH to prevent post-run error
nobu (Nobuyoshi Nakada)
03:23 AM Bug #22328: Should IO#wait_priority be deprecated and then removed?
I opened https://github.com/ruby/ruby/pull/19548 for this.
It makes IO#wait_priority emit a deprecation warning (shown when Warning[:deprecated] is enabled) pointing to IO#wait(IO::PRIORITY, timeout), and adds a NEWS entry.
The war...
sampokuokkanen (Sampo Kuokkanen)
02:47 AM Revision 9647794c (git): Bump ruby/setup-ruby
Bumps the github-actions group with 1 update in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.334.0 to 1.335.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- ...
dependabot[bot]
12:58 AM Revision ee55edef (git): Walk a fixed directory in the Ruby::Box Pathname#find test
Pathname.new('.').find walked the whole working directory twice, so the run time depended on where the tests were started. With an in-source build that is the entire checkout, which exceeded the 60 second timeout on rubyci's macOS machin... hsbt (Hiroshi SHIBATA)
12:54 AM Revision 892b5d7c (git): [DOC] Doc for class MatchData
burdettelamar (Burdette Lamar)
12:42 AM Revision aed528a9 (git): [ruby/rubygems] Rewrite the OVERRIDES section without resolving again
An override change made the lockfile count as needing resolution, so `bundle install` fetched the remote index and failed offline when the compact index cache was absent, and `Bundler.setup` re-resolved on boot. The section only needs to... hsbt (Hiroshi SHIBATA)
12:42 AM Revision 12ebde9b (git): [ruby/rubygems] Limit the gemfile(5) promise that override changes keep locked versions
A locked gem that is not installed and whose metadata rejects the current Ruby is re-resolved during materialization whether or not an override changed, so the man page cannot promise that adding or removing a metadata override never mov... hsbt (Hiroshi SHIBATA)
12:23 AM Revision b77c9f32 (git): [ruby/test-unit-ruby-core] Close stdin before terminating a
timed-out memory leak child
(https://github.com/ruby/test-unit-ruby-core/pull/37)
* Close stdin before terminating a timed-out memory leak child
With a sample range, assert_no_memory_leak keeps the child's stdin open,
and the child's e...
William T. Nelson
12:09 AM Revision 51678088 (git): Generate revision.h by configure in the build directory (#19545)
configure created revision.h in $srcdir when it was missing. Since
version.h includes "revision.h", the copy in $srcdir is found before
the one in the build directory.
This used to be harmless because file2lastrev.rb, run with --srcdir...
k0kubun (Takashi Kokubun)

10/26/2026

11:33 PM Revision c6c27d03 (git): Promote the Windows binary package when publishing a release
draft-release in ruby/actions stages an mswin binary zip next to the draft tarballs, but nothing promotes it to pub/ruby/binaries, so each release has needed a manual publish-binaries run. Dispatch it alongside the other post-release hoo... hsbt (Hiroshi SHIBATA)
11:30 PM Revision db1bde09 (git): Skip rbs DirSingletonTest#test_for_fd to stop flaky EBADF (#19542)
test_for_fd in rbs 4.2.0 calls Dir.for_fd twice with the fd of a Dir it
then closes, and never closes the two Dirs Dir.for_fd returned. Both
still own that fd number. When GC later finalizes them, closedir()
closes whatever file has sinc...
k0kubun (Takashi Kokubun)
10:01 PM Revision e14d739e (git): Promote the ring before measuring oldmalloc major intervals
test_major_sweep_does_not_create_oldmalloc_debt assumed the ring was
already old when the loop started. When Ruby is running with parse.y
this isn't always the case. That only held when GCs ran while
the ring was built. Under parse.y oft...
eightbitraptor (Matt V-H)
06:39 PM Feature #22474: Kernel#using (or BasicObject#using)
alanwu (Alan Wu) wrote in #note-2:
> Seems to be already addressed by #22097.
I see. My quick issue search did not dig it up. I would say `using R; something` is much easier than `-> { something }.refined(R).()`, and we can have both...
UlyssesZhan (Ulysses Zhan)
06:13 PM Feature #22474 (Feedback): Kernel#using (or BasicObject#using)
> However, since any block is a lexical scope, why not allow using in any block?
Seems to be already addressed by #22097.
alanwu (Alan Wu)
05:26 PM Feature #22474 (Feedback): Kernel#using (or BasicObject#using)
Currently there is `Module#using`. The scope where `using` is effective is the lexical scope of the module eval block (blocks for `module` keyword, `Module::new`, `module_eval`, and `module_exec`). However, since any block is a lexical s... UlyssesZhan (Ulysses Zhan)
06:29 PM Revision 29264f87 (git): Fix rb_gc_ever_multi_ractor_p to simply read the latch variable
In single-ractor mode, we don't want foreign_object_p checks to actually
run (there can be no foreign objspaces). This foreign_object_p check return
false if there was never a (non-main) Ractor created. Previously,
rb_gc_ever_multi_racto...
Luke Gruber
06:22 PM Bug #22472: Both yjit & zjit break ruby 4.0.9 build on x86_64
Thanks. I'm using mold 3.0 as our linker and this has been reported on the mold issue tracker already at https://github.com/rui314/mold/issues/1741 as affecting builds of ruby 4.0.7.
So this can be closed here.
satadru (Satadru Pramanik)
06:11 PM Bug #22472 (Third Party's Issue): Both yjit & zjit break ruby 4.0.9 build on x86_64
This is not an issue with ruby but with the tool chain you're using to build ruby.
> collect2: fatal error: ld terminated with signal 6 [Aborted], core dumped
The linker you're using is crashing, and it's not clear which linker y...
alanwu (Alan Wu)
04:32 PM Revision 6b15825d (git): Use digit scanner in the universal parser
Parser configuration no longer needs base-specific scanner callbacks. nobu (Nobuyoshi Nakada)
03:44 PM Revision f2f9b556 (git): [ruby/prism] Let an embedder set PM_CONSTANT_POOL_MIN_CAPACITY
The constant pool starts at source size / 120 entries, 4 at the least,
and doubles at a load of 3/4; each outgrown pair of arrays stays in the
metadata arena. An embedder that interns a fixed set of names into the
pool at every parse (mr...
hasumikin (hitoshi hasumi)
03:43 PM Revision ab52c6ab (git): [ruby/prism] Include sys/types.h before inttypes.h again, for newlib
61ebe5123 made defines.h include <sys/types.h> ahead of <inttypes.h>:
with an arm-none-eabi toolchain whose <stdint.h> is GCC's own, newlib's
<inttypes.h> never sees the marker it tests before defining the 64-bit
PRI macros, and PRIu64 g...
hasumikin (hitoshi hasumi)
03:43 PM Revision 10c945be (git): [ruby/prism] Let an embedder set PM_ARENA_INITIAL_SIZE
The arena's first block is 8 KB, sized for a host. An embedder on a
small heap parses short programs (a REPL line uses about 6 KB in two
arenas) and pays two 8 KB blocks for each; with the constant under
#ifndef it can build with -DPM_AR...
hasumikin (hitoshi hasumi)
03:38 PM Revision 51f2767a (git): [ruby/prism] Avoid vsnprintf when possible
When formatting error messages, first try to format into a fixed
buffer instead of formatting once to get the length then a second
time to get the actual format.
https://github.com/ruby/prism/commit/557cffe23e
kddnewton (Kevin Newton)
11:21 AM Revision 3e636857 (git): Use delta zigzag encoding for iseq node_id
Node ids are assigned sequentially by the parser and compilation emits
instructions in an order correlated with the tree, so the delta between
consecutive instructions are likely to be small. We can store the delta
between consecutive in...
peterzhu2118 (Peter Zhu)
08:21 AM Revision b861e2ba (git): Skip Addrinfo specs unsupported by musl as on Android
musl getaddrinfo does not support SOCK_SEQPACKET and getnameinfo does
not support AF_UNIX.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
08:21 AM Revision 21e6dea1 (git): Fix Time specs that depend on the TZ parsing of glibc
* Time#utc_offset: use America/New_York, as musl parses "EST5EDT" as
a POSIX TZ string instead of loading the zoneinfo file.
* Time#zone: musl accepts "hello-foo" as a POSIX TZ string.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropi...
mame (Yusuke Endoh)
08:21 AM Revision e7f03c8f (git): Skip the Encoding.locale_charmap spec for the C locale on musl
musl does not return "ANSI_X3.4-1968" for the C locale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
08:21 AM Revision 1749dbbe (git): Read /proc/<pid>/cmdline to check the process title if available
Process.setproctitle and $0 specs used `ps -ocommand= -p`, but busybox
ps does not support -o/-p.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
08:21 AM Revision 3d973f2b (git): Skip argv[0] specs of Process.spawn and Process.exec on busybox /bin/sh
busybox is a multi-call binary which dispatches on argv[0], so it
cannot run as /bin/sh with an arbitrary argv[0] such as "argv_zero".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
07:29 AM Revision 5d1d0722 (git): [ruby/zlib] Fix the rdoc of Zlib::Inflate#sync
It described the return values the other way around, and did not mention Zlib::InProgressError.
https://github.com/ruby/zlib/commit/bbff886734
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
07:29 AM Revision 20a9f1a5 (git): [ruby/zlib] Raise InProgressError from Zlib::Inflate#sync during inflate
Called from the block of Zlib::Inflate#inflate, #sync pointed next_in at its argument, and the inflate loop kept reading from there after the block returned.
https://github.com/ruby/zlib/commit/f7822c93e7
Co-Authored-By: Claude Opus 5....
hsbt (Hiroshi SHIBATA)
06:39 AM Revision 0b527245 (git): [ruby/rubygems] Add checksums after platform changes in `bundle lock`
`bundle lock --add-checksums --add-platform arm64-darwin` wrote a
lockfile that listed arm64-darwin under PLATFORMS but carried none of
its platform-specific gems. `Definition#add_checksums` resolves the
bundle to fetch the checksums, an...
Farid Zakaria
06:23 AM Revision eeb0e37a (git): [ruby/rubygems] Drop the comment on the retry
https://github.com/ruby/rubygems/commit/12dc1f7743 Islam Elsayed
06:23 AM Revision a36b26e0 (git): [ruby/rubygems] Apply BUNDLE_RETRY to lazy gemspec downloads
Resolving through the full-index API lazily downloads individual
gemspecs from /quick/Marshal.4.8/*.gemspec.rz. `Fetcher#fetch_spec` made
that request bare:
Bundler.safe_load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).bo...
Islam Elsayed
06:00 AM Revision 5223de67 (git): mkmf: Skip debug info in link checks on macOS
A link check compiles and links conftest.c in one clang invocation, and with -g clang then runs dsymutil, which reads the DWARF of every object pulled in from libruby-static.a. Each check took about 2.2 s instead of 0.17 s on a static bu... hsbt (Hiroshi SHIBATA)
05:41 AM Revision 329d9a51 (git): [ruby/rubygems] Skip only a missing bin directory, before asking about executables
The check ran after the prompt, so the user was still asked about executables that could not exist. File.directory? also returned false when a parent directory was not searchable, which skipped the executables and removed the gem anyway.... hsbt (Hiroshi SHIBATA)
05:41 AM Revision 1a39db70 (git): [ruby/rubygems] Skip executable removal gracefully when the bin directory is missing
Fixes ruby/rubygems#9959
remove_executables raised Gem::FilePermissionError when the gem's bin
directory did not exist at all, since File.writable? is false for a
missing directory and aborting uninstall entirely was never intended.
Now...
Nacl-HCl
05:29 AM Revision 3541b9e0 (git): [ruby/rubygems] Fix file locks letting multiple processes in when lock files are removed
Gem.open_file_with_lock removed its lock file after releasing the lock.
Since flock locks the file itself rather than its path, a process that
was waiting on the old file could acquire it after it had been removed,
while a newly arriving...
Richard Janita
05:29 AM Revision 542d4e2a (git): [ruby/rubygems] Omit the lock handover test on JRuby on Windows
The waiting thread's flock fails with Errno::EINVAL there when another thread of the same JVM already locks the file. Separate processes, which are what the lock guards against, are not affected.
https://github.com/ruby/rubygems/commit/...
hsbt (Hiroshi SHIBATA)
05:29 AM Revision 05fc71fb (git): [ruby/rubygems] Preload git sources that share a cache one after another
Gems sourced from the same git repository share one cache directory.
Since git sources are preloaded in parallel, two workers could run git
fetch in that directory at the same time, and the fetches collided on
the shallow file and its lo...
Shaisolaris
05:05 AM Revision fd77a0a2 (git): leakchecker.rb: Ignore lsof that does not print the expected header
busybox lsof ignores the options and prints no header line, so the
FD/TYPE/NODE columns cannot be found and check_fd_leak crashed with
NoMethodError, which killed the test worker. Treat such lsof as
unavailable; leaked fds are still repo...
mame (Yusuke Endoh)
04:33 AM Revision dd7782fa (git): [ruby/zlib] Fix Zlib::Inflate#sync with input over UINT_MAX bytes
inflateSync was given only the first UINT_MAX bytes, but the input was consumed as if all of it had been searched, so the data after the sync point was lost and a sync point past those bytes was never found.
d = Zlib::Deflate.new(Zlib...
hsbt (Hiroshi SHIBATA)
04:26 AM Revision a000f351 (git): [ruby/rubygems] Assert webauthn request auth in yank and push failure tests
The webauthn flow runs a real polling thread, and on JRuby it can record its status request and be killed before setting Authorization, so last_request had a nil header. Apply what https://github.com/ruby/rubygems/commit/98efee308ac did ... hsbt (Hiroshi SHIBATA)
04:26 AM Revision 12cf2ffe (git): [ruby/rubygems] Keep the require_relative path in the source file's encoding
Reading the source in binary mode made the captured path ASCII-8BIT, so a non-ASCII path never matched spec.files and joining it with a non-ASCII directory raised Encoding::CompatibilityError.
https://github.com/ruby/rubygems/commit/809...
hsbt (Hiroshi SHIBATA)
03:43 AM Bug #20452 (Closed): Ruby 3.3 on Alpine Linux results in a relatively shallow SystemStackError exception
Applied in changeset commit:git|3e4497dab1b345420b422eef313553376bd10048.
----------
[Bug #20452] Take main thread address/size with rlimit if musl libc
Musl libc defines `pthread_getattr_np` but it can not get the correct
value of the...
nobu (Nobuyoshi Nakada)
03:42 AM Revision 3e4497da (git): [Bug #20452] Take main thread address/size with rlimit if musl libc
Musl libc defines `pthread_getattr_np` but it can not get the correct
value of the main thread.
nobu (Nobuyoshi Nakada)
03:21 AM Revision 0440959f (git): [ruby/rubygems] Reject ill-formed requirements while reading OVERRIDES
Override.from_lock accepted a line such as `"rake", version: "garbage"`, and the bad requirement only failed later as a Gem::Requirement::BadRequirementError outside the parser. Normalizing it while parsing turns it into a LockfileError ... hsbt (Hiroshi SHIBATA)
02:44 AM Revision 86fb7913 (git): Bump the github-actions group across 1 directory with 6 updates
Bumps the github-actions group with 6 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.331.0` | `1.334.0` |
| [zizmorcore/zizmor-action](https://github....
dependabot[bot]
02:37 AM Revision d76d518b (git): [ruby/rubygems] Use the running Ruby for credential-store test commands
https://github.com/ruby/rubygems/commit/148ba70203 Emmanuel Mawulolo Tagbor
02:13 AM Revision 510c0d69 (git): [ruby/rubygems] Record overrides in the OVERRIDES section of Gemfile.lock
Bundler now writes the Gemfile overrides to an OVERRIDES section, one
line per field, sorted, with normalized requirements. The lockfile
parser reads the section without evaluating it. A change to the
overrides now changes the lockfile, ...
Ufuk Kayserilioglu
02:05 AM Revision 6e38fc03 (git): [ruby/rubygems] Open sources in binary mode instead of passing an encoding to File.foreach
JRuby raises "TypeError: no implicit conversion of Hash into Integer" when File.foreach is called with keyword arguments and no block, as it is when chained with with_index. That broke every gem build in the JRuby Bundler specs. Opening ... Ufuk Kayserilioglu
02:05 AM Revision 789796b4 (git): [ruby/rubygems] Use letter-free bytes in the invalid UTF-8 source test
codespell read "caf" in the fixture as a misspelling of "calf". The test only needs bytes that are not valid UTF-8, so use \xFF\xFE.
https://github.com/ruby/rubygems/commit/21f2bd2fd6
Co-authored-by: Ufuk Kayserilioglu <ufuk.kayserilio...
Ufuk Kayserilioglu
02:05 AM Revision 2d2f6f16 (git): [ruby/rubygems] Read sources as binary when checking for require_relative of extensions
Gem::SpecificationPolicy#validate_extension_require_relative read each file with File.foreach, which tags lines with Encoding.default_external. Under an unset or ASCII locale (build sandboxes, minimal containers) a valid UTF-8 non-ASCII ... Ufuk Kayserilioglu
01:48 AM Feature #22473 (Open): Object#preextend, Module#preextend_object, and Module#preextended
Basically `preextend` is equivalent to `singleton_class.prepend`. Since we already have `extend` (basically equivalent to `singleton_class.include`), why not have `preextend`?
Related: #6452 #8041
UlyssesZhan (Ulysses Zhan)

10/25/2026

11:51 PM Revision 50801521 (git): [DOC] Tweaks for Array[]
burdettelamar (Burdette Lamar)
11:17 PM Revision c85a46b5 (git): [ruby/rubygems] Turn off echo before printing the password prompt
`Gem::StreamUI#ask_for_password` printed the prompt before it turned off
echo, so the terminal could echo back a password written as soon as the
prompt appeared.
Print the prompt inside the `noecho` block.
https://github.com/ruby/rubyg...
mdalessio (Mike Dalessio)
04:54 PM Bug #22286: Closing a TCPServer while another thread is blocked in accept can discard a just-accepted connection's file descriptor, leaving the peer connected to nothing
I've opened a pull request: https://github.com/ruby/ruby/pull/19518
Could you try it with your reproduction?
PvpDJgHP (William Thomas NELSON)
02:14 PM Bug #22472: Both yjit & zjit break ruby 4.0.9 build on x86_64
Using --disable-yjit and --disable-zjit fixes the build. satadru (Satadru Pramanik)
04:37 AM Bug #22472 (Third Party's Issue): Both yjit & zjit break ruby 4.0.9 build on x86_64
I see this error building ruby 4.0.9 with --enable-yjit on x86_64 with our Chromebrew builds.
Here is the error with RUST_BACKTRACE=full:
transdb.h updated linki...
satadru (Satadru Pramanik)
01:50 PM Revision 1efcec84 (git): merge revision(s) 3a55e5c6d34728ffcb5158dd7c36643e11c37f04:
[PATCH] Discard unreachable exception table entries
Dead labels can leave invalid catch entries that make ensure clauses
run for code that cannot be reached.
nagachika (Tomoyuki Chikanaga)
10:59 AM Revision 2c09f747 (git): Encode iseq node_id with LEB128
Node ids are small non-negative integers (-1 for synthetic instructions),
so a LEB128 stores them in 1-2 bytes instead of a 4-byte int.
On Shopify's monolith, this reduces the boot heap memsize by 40MB.
peterzhu2118 (Peter Zhu)
09:04 AM Bug #22421: `RubyVM::YJIT.max_compile_time_ns=` aborts the process when YJIT is not enabled
I don't know what cause your compilation failure, but this ticket is about a feature added in 4.1.0dev, so this isn't the right place to report it. byroot (Jean Boussier)
04:34 AM Bug #22421: `RubyVM::YJIT.max_compile_time_ns=` aborts the process when YJIT is not enabled
I'm seeing this error message building with --enable-yjit on our x86_64 4.0.9 builds on Chromebrew:
transdb.h updated linking miniruby
thread '<unnamed>' (41405) pa...
satadru (Satadru Pramanik)
08:19 AM Revision 78a7f126 (git): Check the result of compile_length_tree() at every call site (#19505)
Two call sites added a negative error code into a jump offset instead
of returning it. It was harmless since compilation fails later anyway.
Reported-by: Owais Lone (thesecguy) <thesecguy45@gmail.com>
Co-authored-by: Claude Opus 5.5 <...
mame (Yusuke Endoh)
07:33 AM Revision c2b6f7f0 (git): [ruby/ipaddr] Allow -, . and ~ in IPv6 zone IDs
IPAddr.new and IPAddr#zone_id= only accepted \w characters after %, so zone IDs for interfaces such as eth0.100 (VLAN) or br-lan raised InvalidAddressError. RFC 6874 defines ZoneID as unreserved characters (ALPHA, DIGIT, -, ., _, ~), whi... Wleeaf
06:14 AM Feature #22463 (Closed): Improve String#index and line splitting performance on x64-mingw-ucrt
I measured this on Windows 11, and the problem does not occur there. I would like to withdraw this proposal.
On Windows 11 (10.0.26300.9711, ucrtbase.dll 10.0.26100.9711), `memchr` in ucrtbase.dll is no longer a byte-by-byte loop. It ...
watson1978 (Shizuo Fujita)
05:27 AM Bug #22467 (Closed): IO#readpartial can raise EFAULT during GC.compact in another thread
Applied in changeset commit:git|0b7838e23b8f9b01765dafd5e675da6113f5b566.
----------
Fix IO reading without GVL during GC compaction
[Bug #22467]
If we perform IO read without the GVL during GC compaction and the string
we are writing...
peterzhu2118 (Peter Zhu)
05:27 AM Revision 0b7838e2 (git): Fix IO reading without GVL during GC compaction
[Bug #22467]
If we perform IO read without the GVL during GC compaction and the string
we are writing to is embedded, then it can get mprotect'd by the read
barrier in the GC, which can cause the IO read operation to fail.
peterzhu2118 (Peter Zhu)
05:16 AM Revision 349d9d65 (git): Initialize the fast fallback waiter fd before anything can raise
An invalid open_timeout raised before the waiter was assigned, so the cleanup closed fd 0 left by memset and took the process's stdin with it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:39 AM Revision b6ab1924 (git): [ruby/zlib] Test Zlib.gunzip with optional gzip header fields
https://github.com/ruby/zlib/commit/2fc5eb721f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
03:39 AM Revision 83800032 (git): [ruby/zlib] Fix Zlib.gunzip with a header truncated in the file name or comment
Reading the rest of the field went to the IO, which Zlib.gunzip does not have, instead of raising Zlib::GzipFile::Error as the other truncated header fields do.
https://github.com/ruby/zlib/commit/a16601dc10
Co-Authored-By: Claude Opus...
hsbt (Hiroshi SHIBATA)
02:57 AM Revision c3b61b12 (git): win32: Wait for the cancelled pipe I/O before returning
An interrupted pipe read or write returned right after `CancelIo`, which only requests the cancellation. Wait for the I/O to end and return what it transferred.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:57 AM Revision 47c12f20 (git): win32: Do not set the pipe mode when it is unchanged
`rb_fd_set_nonblock` returns early on other platforms when the descriptor is already non-blocking, but `rb_w32_set_nonblock2` called `SetNamedPipeHandleState` every time.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:57 AM Revision 764d1d3a (git): win32: Fix a handle leak in rb_w32_read_internal
One of its early returns after `setup_overlapped` did not close the event.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hsbt (Hiroshi SHIBATA)
02:16 AM Feature #17016: Enumerable#accumulate
Personally I have stumbled upon use cases of this method for at least three times. I finally found this feature request. I forgot what I wanted to do the previous times, but the last time I wanted this feature is when I wanted to generat... UlyssesZhan (Ulysses Zhan)
02:07 AM Revision 4cd0b82a (git): Store iseq node_id in a side array
The node id lived in each iseq_insn_info_entry, which prevented add_insn_info
from merging adjacent entries that only differ in node_id. Since most
neighboring instructions come from different AST nodes, this significantly
increases memo...
peterzhu2118 (Peter Zhu)
02:07 AM Revision 9a2ce84d (git): [DOC] Doc for Comparable#clamp
burdettelamar (Burdette Lamar)

10/24/2026

08:40 PM Revision bde63b65 (git): Give a Ractor's main thread an ec serial from the new Ractor
Since ec serials became Ractor-local (4263f1d718), the root fiber of a
Ractor's main thread gets its serial from the creating Ractor, because it
is allocated there. The serial can then collide with one that the new
Ractor gives to its ow...
mame (Yusuke Endoh)
08:32 PM Bug #22471 (Closed): Thread#name= on a terminated thread may dump core
Applied in changeset commit:git|6fdd4520878eebd737d2a702c62051d46f199f89.
----------
Skip setting the native thread name of a terminated thread
The native thread of a terminated thread may have already exited, so
its pthread_t is no lo...
mame (Yusuke Endoh)
07:41 PM Bug #22471: Thread#name= on a terminated thread may dump core
https://github.com/ruby/ruby/pull/19520 mame (Yusuke Endoh)
07:32 PM Bug #22471 (Closed): Thread#name= on a terminated thread may dump core
Calling `Thread#name=` on a terminated thread calls `pthread_setname_np()` with an invalid `pthread_t`, which can cause a SEGV or rename an unrelated thread.
```ruby
ts = 100.times.map { Thread.new {} }.each(&:join)
ts.each { |t| t....
mame (Yusuke Endoh)
08:31 PM Revision 6fdd4520 (git): Skip setting the native thread name of a terminated thread
The native thread of a terminated thread may have already exited, so
its pthread_t is no longer valid. Passing it to pthread_setname_np()
could crash or rename an unrelated thread.
[Bug #22471]
Co-Authored-By: Claude Opus 5.5 <noreply@...
mame (Yusuke Endoh)
08:17 PM Revision 398c61b5 (git): [ruby/prism] Scratch arena
There are some constructs that only last for the duration of a
parse, and should no longer be held once the parse is through. For
those we should use a scratch arena, freed at the end of parsing.
https://github.com/ruby/prism/commit/30a...
kddnewton (Kevin Newton)
07:57 PM Revision d85ad13d (git): [ruby/zlib] Document the restrictions on the :buffer keyword of Zlib::Inflate#inflate
https://github.com/ruby/zlib/commit/09b43c5b84
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mame (Yusuke Endoh)
06:45 PM Revision 3a55e5c6 (git): Discard unreachable exception table entries
Dead labels can leave invalid catch entries that make ensure clauses
run for code that cannot be reached.
nobu (Nobuyoshi Nakada)
06:08 PM Revision 7677a3c4 (git): Revert "Re-enable Array#find override"
This reverts commit c007fb1b1f13b31fb186faaeb2b78e5b18e243b9. kddnewton (Kevin Newton)
06:08 PM Revision e7f08526 (git): Revert "Fix Array#find override"
This reverts commit 7a6648c10446ceb8b5ca2293a1fdbcd2b99cc458. kddnewton (Kevin Newton)
05:26 PM Revision b5cc0e49 (git): [ruby/zlib] Carry over pending output when the inflate buffer is replaced
In the block form, output not yet yielded stays in the buffer between
calls. It was silently dropped when another buffer (or none) was given
for the next call.
data = Zlib::Deflate.deflate("A" * 50000)
half = data.bytesize / 2
inf...
mame (Yusuke Endoh)
05:26 PM Revision fa4615c8 (git): [ruby/zlib] Clear ZSTREAM_REUSE_BUFFER when the output buffer is detached
The flag stayed set after a call with buffer: had returned its buffer,
so an internal buffer allocated by a later Inflate#<< was treated as
user-provided and never revealed.
data = Zlib::Deflate.deflate("A" * 50000)
half = data.byte...
mame (Yusuke Endoh)
05:26 PM Revision 7d104f9d (git): [ruby/zlib] Fix stale next_out in Zlib::Inflate#inflate(buffer:)
When a call with buffer: left the stream in progress (it raised
Zlib::NeedDict, or the block form has more input to come), the next run
reused the next_out saved by the previous call. If the buffer had been
modified in between, it pointe...
mame (Yusuke Endoh)
05:13 PM Revision 8074d3f4 (git): Fix integer overflow in String#[]= with a capture index of INT_MIN
rb_str_subpat_set validated a negative capture index by negating it,
which overflows for INT_MIN and bypasses the range check. The
out-of-bounds read of the match registers then crashed the process.
Rewrite the check without negation.
...
mame (Yusuke Endoh)
04:42 PM Bug #22470 (Closed): Array#find and Array#rfind arity change between versions 3 and 4
Earlopain (Earlopain _)
02:11 PM Bug #22470: Array#find and Array#rfind arity change between versions 3 and 4
https://github.com/ruby/ruby/pull/19516 swebb (Steven Webb)
01:55 PM Bug #22470 (Closed): Array#find and Array#rfind arity change between versions 3 and 4
Ruby 4 introduced native implementations of Array#find and Array#rfind (Feature #21678). However, the new implementations changed how it behaves with multiple arguments:
ruby 3.4.8:
```
ruby -e "[].find(1, 2)"
-e:1:in 'Enumerable...
swebb (Steven Webb)
03:03 PM Revision 28dec96d (git): Fix Array#find and Array#rfind arity check
Ruby 4 introduced native implementations of Array#find and Array#rfind
(Feature #21678). However, the new implementations changed how they
behave with multiple arguments:
ruby 3.4.8:
```
$ ruby -e "[].find(1, 2)"
-e:1:in 'Enumerable#fi...
swebb (Steven Webb)
03:02 PM Revision 7a6648c1 (git): Fix Array#find override
Fixes [Bug Shopify/ruby#1011]
The override was disabled in 09a9bdeb324 due to bugs from when I first
implemented it. This commit fixes three issues:
1. The if_none_proc is now passed to the enumerator.
2. The `#size` of the enumerator ...
swebb (Steven Webb)
03:02 PM Revision c007fb1b (git): Re-enable Array#find override
swebb (Steven Webb)
11:27 AM Bug #22467: IO#readpartial can raise EFAULT during GC.compact in another thread
Thank you for the bug report, I have a fix here: https://github.com/ruby/ruby/pull/19515 peterzhu2118 (Peter Zhu)
09:34 AM Revision 47feb4e7 (git): Set dummy ID when broken numeric
Reported-by: 外崎青波 nobu (Nobuyoshi Nakada)
09:23 AM Revision f272b3e2 (git): [ruby/openssl] ssl: fix NoMethodError on SAN dNSName with an empty label
Handle the empty label as a literal string.
OpenSSL::SSL::SSLSocket#post_connection_check can raise NoMethodError
when the server certificate contains a malformed subjectAltName
extension with a dNSName that starts with ".", such as ".e...
rhenium (Kazuki Yamaguchi)
04:35 AM Feature #22466: Allow disabling the shape redblack cache via RUBY_SHAPE_REDBLACK_CACHE=disable
alanwu (Alan Wu) wrote in #note-1:
> > If it is preferable to specify the cache size via an environment
> ...
I implemented support for specifying the cache size: https://github.com/ruby/ruby/pull/19509
However, it results in assert...
jeremyevans0 (Jeremy Evans)
02:24 AM Revision 83c63ffc (git): ZJIT: Perform code range scans without side-exit (#19454)
* ZJIT: Add HIR test for `String#valid_encoding?` inlining
* ZJIT: Scan unknown string code ranges without side exiting
Kevin Menard
12:43 AM Revision 41fc5017 (git): [ruby/prism] Use xxh3 hashing for static literals
Instead of the half-baked murmur hash we were using. Also since
it now nicely spreads out the bits, keep all of the nodes in one
hash/allocation, and keep a 4-pointer buffer on the stack for the
majority case where there aren't that many...
kddnewton (Kevin Newton)
12:43 AM Revision f7789b7a (git): Preserve multibyte characters in regexp Unicode escapes
Consume the leading byte before calling tokadd_mbchar in the regexp Unicode escape fast path. The helper reads the character length from pcur - 1; passing an unconsumed byte corrupted multibyte characters and skipped following bytes.
Ad...
ydah (Yudai Takada)
12:38 AM Bug #22469 (Open): parse.y hash key does not warn on -0.0
When generating warnings for duplicate keys (hash keys or case-when clauses) parse.y misses warning on -0.0 and 0.0 because it doesn't normalize it like a Ruby hash does.
```
{ 0.0 => 1, -0.0 => 1 }
```
^-- should warn
kddnewton (Kevin Newton)
12:30 AM Bug #22468: A read of a class variable after remove_class_variable returns a broken value, then SEGV on use
In case it assists debugging, the example works correctly in Ruby 3.0 and 3.1 (`NameError`) and fails in Ruby 3.2 and 3.3 (SEGV). So it broke between Ruby 3.1 and 3.2. jeremyevans0 (Jeremy Evans)
12:11 AM Bug #22468 (Open): A read of a class variable after remove_class_variable returns a broken value, then SEGV on use
## Description
A method that read a class variable once reads it again after `remove_class_variable`. The second read does not raise NameError. It returns a broken value, and a use of that value causes a segmentation fault.
## Step...
hasumikin (hitoshi hasumi)
 

Also available in: Atom