Activity
From 11/07/2026 to 11/13/2026
Today
-
08:52 AM Ruby Feature #22483: Region forms of String#bit_get
- > could you propose bit_put in a separate ticket, including the behavior when the value does not fit in the region? I'd like to settle it before the release.
Thank you, I will do it in a few days -
08:33 AM Ruby Feature #22483: Region forms of String#bit_get
- The region forms of `bit_get` are accepted as proposed.
Regarding the write counterpart, I am fine with `bit_put`. I understand @mame's point that get/set is the usual pair in Ruby. But in bit manipulation, "set" already means turning... -
06:46 AM Ruby Feature #22483: Region forms of String#bit_get
- For what it's worth, almost all such pairs in Ruby are get/set.
The closest existing API, byte access to a String, is `String#getbyte` / `#setbyte`.
Among positional read/write methods, `IO::Buffer` has `IO::Buffer#get_value` / `se... -
05:21 AM Ruby Feature #22483: Region forms of String#bit_get
- @mame
As already noted in this ticket, I believe `bit_put` is the appropriate counterpart to `bit_get`. In my view, `bit_set` should remain as it is.
Regarding `bit_put`, I decided not to include it in the current proposal because of a... -
05:01 AM Ruby Feature #22483: Region forms of String#bit_get
- If `bit_get` can read a bit region as an Integer, I think there should also be an API that writes an Integer back into a region. For example:
```ruby
s = "\x8A".b
v = s.bit_get(4, 4) # read the upper 4 bits (0x8)
v = (v + 1) & 0... -
08:52 AM Ruby Feature #22244: `ruby -UU` should set both internal and external, `ruby -E` should print encoding list
- For now, I agree with @naruse. The internal encoding is for automatic conversion, and setting `LANG` properly is the recommended way, so I don't see the need for `-UU` to set both.
For the other points, `Encoding.name_list` already gi... -
08:45 AM Ruby Feature #22523: define_method should make its body shareable when possible, using Ractor.shareable_proc semantics
- I agree with the direction. As discussed at the developers' meeting, the concern is the impact on existing code unrelated to Ractor, which is hard to estimate in advance.
So let's merge this after the December release and experiment w... -
08:40 AM Ruby Feature #22520: {Proc,Method,UnboundMethod}#syntax_tree should return the block node, not the enclosing call
- Accepted. `#syntax_tree` should return the node for the code the object actually runs, so for a block it should be the block node, consistent with `#source_range` (#21998). Please go ahead while the method is still experimental.
One r... -
08:03 AM Ruby Bug #22538: require 'socket' raises NameError for builds with --disable-ipv6, and IPv6 addresses leak from the resolver
- nobu (Nobuyoshi Nakada) wrote in #note-1:
> Applied in changeset commit:git|c99813a8d8484058987c968923cd814e99aa6dd3.
> ...
Thanks for that, but that only fixes a small part of the issue; the rest involves the Happy Eyeballs implementa... -
06:38 AM Ruby Bug #22538 (Closed): require 'socket' raises NameError for builds with --disable-ipv6, and IPv6 addresses leak from the resolver
- Applied in changeset commit:git|c99813a8d8484058987c968923cd814e99aa6dd3.
----------
[Bug #22538] Fix failures when IPv6 is disabled - 07:29 AM Ruby Revision bed2abf0 (git): Range-check rlimit values before fork
- `rb_execarg_addopt_rlimit` only converted the soft and hard limits with
`rb_to_int`, and the conversion to `rlim_t` happened in `run_exec_rlimit`,
in the child after fork/vfork. A value out of range, such as `2**65`,
raised `RangeError` ... -
07:01 AM Ruby Revision ad0af2ae (git): Warn `Addrinfo#to_s`
- It is deprecated since 1.9.2, in faver of `Addrinfo#to_sockaddr`.
- 06:49 AM Ruby Revision 36698821 (git): [ruby/json] JRuby: make JSON::Coder thread-safe
- (https://github.com/ruby/json/pull/1064)
https://github.com/ruby/json/commit/6e91fdfd8a -
06:49 AM Ruby Bug #22462 (Closed): For UnboundMethod, super_method.bind and bind.super_method should return an equal Method
- Fixed by commit:616157f6a1992dfb9a175b9f0b3ff83f9dd03550
-
06:48 AM Ruby Bug #22505 (Closed): UnboundMethod#{bind,bind_call} results in incorrect behavior when method owner is at multiple places in ancestry
- Fixed by commit:5b62da01099e458a346b2771b5d726a8a8ea8c0d
-
06:38 AM Ruby Revision c99813a8 (git): [Bug #22538] Fix failures when IPv6 is disabled
-
06:37 AM Ruby Revision 17fd9f24 (git): [ruby/json] Java: Preserve rfc8785 generator config on dup
- https://github.com/ruby/json/commit/4d25455977
Co-Authored-By: Jason Miller <jason.c.miller@berkeley.edu> -
06:27 AM Ruby Revision 616157f6 (git): Make Method#== return same result for UnboundMethod#super_method both before and after #bind
- For any UnboundMethod `um` where `super_method` is not `nil` and `o` is
a valid object to bind to `um`, the following code should be true:
```ruby
um.bind(o).super_method == um.super_method.bind(o)
```
However, that didn't work correct... - 05:50 AM Ruby Revision 6a894df4 (git): Read and store fields_obj atomically for structs and classes/modules
-
05:19 AM Ruby Revision 8e20cba9 (git): [ruby/rubygems] Clean the response body put into Bundler's fetch errors
- A gem server's response body went into FallbackError, TooManyRequestsError and HTTPError messages unchanged, so control characters in it reached the terminal through the retry warnings and the final error. The body is a binary string fro...
-
05:05 AM Ruby Revision b414d811 (git): [ruby/rubygems] Merge pull request #10061 from ruby/claude/inspiring-mendeleev-520c21
- Read YAML anchors placed at the end of a line in `Gem::YAMLSerializer`
https://github.com/ruby/rubygems/commit/3ccfb97ce9
Hiroshi SHIBATA (8):
Accept an anchor at the end of a mapping value line in Gem::YAMLSerializer
Accep... - 05:00 AM Ruby Revision 4e7d7b17 (git): [ruby/rubygems] Clean control characters from bad-response fetch errors
- The X-Error-Message header and the HTTP reason phrase come from the
remote server and end up in FetchError#message, which is printed to the
terminal by gem install and friends. Route them through
Gem::Text#clean_text so a malicious or co... -
04:45 AM Ruby Revision 5b62da01 (git): Fix UnboundMethod#{bind,bind_call} when method owner is at multiple places in ancestry
- Previously, UnboundMethod#bind would find to the closest ancestor
of the object it was bound to. This can result in an UnboundMethod
from a superclass calling a method defined in a subclass (or module
prepended to subclass), which defini... -
04:40 AM Ruby Feature #22482: String#bit_index, a bit search for String bit operations
- Accepted. `String#bit_index` is a good answer to the concerns I raised in #22399. One search primitive is much easier to accept than seven methods, the name follows `String#index`, and the measurements show it is worth having, including ...
-
03:59 AM Ruby Revision 0856b8d1 (git): [ruby/rubygems] Test the alias expansion budget with mapping anchors
- The existing test chains only sequences, so a wrong size for anchored mappings in Builder#build_node would go unnoticed.
https://github.com/ruby/rubygems/commit/801958b245
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:59 AM Ruby Revision ecadc526 (git): [ruby/rubygems] Check only the document Psych.safe_load builds
- Psych.safe_load builds the first document and ignores the rest, but the alias check parsed the whole stream, so a syntax error in a later document now failed a load that used to succeed.
https://github.com/ruby/rubygems/commit/d9901bc4c... -
03:59 AM Ruby Revision 355d9a4f (git): [ruby/rubygems] Weigh scalars by their length in the alias expansion budget
- Counting a scalar as one node let 9,000 aliases to a 10KB string through, and to_ruby turned that 55KB document into 90MB. Charge a scalar its bytesize plus one instead, with a budget of 100,000, which is about 90 times what the old gems...
-
03:59 AM Ruby Revision 05830479 (git): [ruby/rubygems] Limit the size of YAML alias expansion when loading gem metadata
- Anchors that alias earlier anchors grow exponentially, and Specification#files and to_ruby expand the result from a document of a few hundred bytes. The previous limit counted each alias once and the Psych path had none, so charge every ...
-
03:48 AM Ruby Revision 198193e7 (git): [ruby/rubygems] Drop the Ruby ABIs when older RubyGems changes a locked platform gem
- RubyGems before 4.1 can't lock content-addressed gems, so a platform gem it resolves again loses its CONTENT ADDRESSES rows, and one whose only platform builds are content-addressed is swapped for its ruby variant while materializing. Ke...
-
03:48 AM Ruby Revision 44cbf2c1 (git): [ruby/rubygems] Keep the locked Ruby ABIs as they are on RubyGems before 4.1
- Those RubyGems can't lock content-addressed gems, so adding the running Ruby's ABI or dropping the ones a Gemfile ruby directive rules out left RUBY ABIS out of step with CONTENT ADDRESSES, and a frozen install with such a directive fail...
-
03:35 AM Ruby Bug #22495 (Closed): UTF-32 strings with a byte 0x80 or more in the most significant position are reported as valid
- Applied in changeset commit:git|e1a9429918d5ead25a00f79a92f750abbeaa519a.
----------
Compute UTF-32 code points in unsigned arithmetic
utf32be_mbc_to_code and utf32le_mbc_to_code computed the code point in
int, which overflowed when th... -
03:34 AM Ruby Revision e1a94299 (git): Compute UTF-32 code points in unsigned arithmetic
- utf32be_mbc_to_code and utf32le_mbc_to_code computed the code point in
int, which overflowed when the most significant byte was 0x80 or more.
With gcc -O2 such sequences were accepted as valid UTF-32.
[Bug #22495] -
02:41 AM Ruby Bug #22457 (Closed): Implicit Ractor shareability for frozen objects is buggy
- ko1's fix been merged as 7fe831a84b198d617455e71505e20de7635ec749 and a few follow-up commits.
-
02:26 AM Ruby Revision b9d053cc (git): [ruby/open-uri] Ignore Errno::ECONNRESET in the open-uri test HTTPS server
- When the client aborts the handshake after failing certificate validation, Windows can report it to SSL_accept as Errno::ECONNRESET rather than OpenSSL::SSL::SSLError. The server thread then died and with_https reported it as a failure o...
-
02:15 AM Ruby Revision 9e09e742 (git): sync_default_gems.rb: Exclude jruby related files all in open3
-
01:15 AM Ruby Revision 236fa6d5 (git): [ruby/rubygems] Split long SafeMarshal Bignum data before converting it
- `String#to_i(16)` takes quadratic time on JRuby and TruffleRuby, where a 100000-byte Bignum took about 1.5 seconds and failed `test_load_bignum_in_linear_time`. Converting halves of at most 4096 bytes and joining them with shifts takes 0...
-
01:15 AM Ruby Revision 4d54326f (git): [ruby/rubygems] Register Bignum in the SafeMarshal object table
- Marshal counts every Bignum as an object, so an object link written after one pointed one slot off. `[2**64, s, "t", s]` loaded as `[2**64, "s", "t", "t"]`, and `[2**64, s, s]` raised IndexError.
https://github.com/ruby/rubygems/commit/... -
01:15 AM Ruby Revision 24e55673 (git): [ruby/rubygems] Convert SafeMarshal Bignum data in linear time
- Adding a fresh power of two per byte made loading a Bignum grow faster than quadratically with its size, so a 40000-byte one took about 8 seconds. Reading the little-endian bytes as one hex string takes 0.3 ms for the same value.
https:... -
01:15 AM Ruby Revision 66d63ebc (git): [ruby/rubygems] Test the unexpected Bignum sign in SafeMarshal
- https://github.com/ruby/rubygems/commit/b5cbd15a9f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> - 01:04 AM Ruby Revision f1f09824 (git): Fix a ractor alias concurrency bug involving method definitions
- Fix a UAF for method entry definition when Ractors race to resolve an
unresolved aliased method. These definitions have a reference_count
that needs to be managed across Ractors.
11/12/2026
-
11:30 PM Ruby Revision d6424cce (git): Time out the macOS tarball test step after 60 minutes
- A hung test ran until the 6 hour job limit cancelled the job, and a cancelled job skips the failure() notification steps, so nobody heard of it. A step timeout fails the step instead, which keeps the notifications. The longest successful...
-
11:17 PM Ruby Bug #22543 (Open): Segmentation fault when compiling `CONST ||= value`, `CONST &&= value` or `CONST += value` under `# shareable_constant_value: literal` (Prism compiler)
- Ruby 4.0 and the current master branch crash with a segmentation fault while they compile this file:
```ruby
# shareable_constant_value: literal
C ||= foo
```
```
$ ruby min.rb
min.rb: [BUG] Segmentation fault at 0x0000000000f... -
10:50 PM
Ruby
Bug #22541 (Closed): `Thread#raise` and `Fiber#raise` can set VM throw data as `Exception#cause`, causing a crash.
- Applied in changeset commit:git|9388ee4e5fcf4ef14709693423325074eaa3271a.
----------
Do not use throw data as the cause in Thread#raise and Fiber#raise
[Bug #22541]
rb_exception_setup takes the implicit cause from errinfo without
chec... -
07:49 PM Ruby Bug #22541 (Closed): `Thread#raise` and `Fiber#raise` can set VM throw data as `Exception#cause`, causing a crash.
- `Thread#raise` and `Fiber#raise` can store VM-internal throw data as the exception's `cause`. This happens when they are
called while a non-local exit (`break`, `return` or `throw`) is unwinding through a C frame, for example from a sig... - 10:50 PM Ruby Revision 9388ee4e (git): Do not use throw data as the cause in Thread#raise and Fiber#raise
- [Bug #22541]
rb_exception_setup takes the implicit cause from errinfo without
checking for throw data. While a non-local exit (break, return or
throw) unwinds through a C frame, errinfo holds a vm_throw_data imemo.
A Thread#raise or Fi... -
10:48 PM Ruby Revision e7442077 (git): [ruby/open3] Allow JRuby itself to control selection of its alternate implementation
- Since under modern Java, it may not be able to use native popen without
the user manually specifying additional java opts.
https://github.com/ruby/open3/commit/61b3ba58c7 - 10:25 PM Ruby Revision b721561c (git): ZJIT: Only profile shape for getinstancevariable
- This lets us optimize more cases (like singleton classes) because we
don't even care about the class in the generated code. - 10:25 PM Ruby Revision e33ba4b3 (git): ZJIT: Add tests for getivar on receivers with singleton classes
-
10:18 PM Ruby Revision efac75f1 (git): Now onigenc_single_byte_code_to_mbclen checks out-of-bound
- (cherry picked from commit aaf47cca03c4c7561fd931e0aa1a76adfdb23eba)
-
10:18 PM Ruby Revision a4b3c74f (git): JIT: Reject --{y,z}jit-exec-mem-size values that overflow the u32 reservation size (#19720)
- (cherry picked from commit 9bfa7c99a6b4b115318e63d92438f1a92cfbb9ed)
-
10:18 PM Ruby Revision 356398b6 (git): [k-takata/Onigmo] Fix out-of-bounds read in parse_char_class()
- (Close
https://github.com/k-takata/Onigmo/pull/139)
/[\x{111111}]/ causes out-of-bounds read when encoding is a single byte
encoding. \x{111111} is an invalid codepoint for a single byte encoding.
Check if it is a valid codepoint.
http... -
10:16 PM Ruby Revision 46ccdddc (git): Set ENV String encodings in place
- env_str_encode built a second String from the binary copy with
rb_external_str_new_with_enc, so each value was allocated and copied
twice. This gives the copy its encoding instead, making the same
choice that function would, and only all... -
10:16 PM Ruby Revision 659bb14d (git): Fix ENV deadlock in Ractors when default_internal is set
- ENV builds its Strings with rb_external_str_new_with_enc while holding
the VM lock. When Encoding.default_internal is set and differs from the
locale encoding, non-ASCII values are transcoded, and the first
conversion between two encodin... -
10:16 PM Ruby Bug #22542 (Open): ASCII-incompatible default_internal mislabels ENV and Dir strings without converting them
- `Encoding.default_internal` accepts ASCII-incompatible encodings like UTF-16LE. IO transcodes into it correctly, but ENV and Dir return the original UTF-8 bytes relabeled as UTF-16LE.
```shell
$ LC_ALL=C.UTF-8 FOO=hello ruby -E UTF-8... -
07:42 PM Ruby Bug #22084: invokesuper from define_method in Ractor can call wrong super method or crash
- This was backported to 4.0 back in June
https://github.com/ruby/ruby/pull/17154 -
07:41 PM Ruby Bug #22242: SEGV in method dispatch (`vm_call_iseq_setup_kwparm_nokwarg` / `def_iseq_ptr`) on Ruby 4.0.6 — Rails CI
- This was backported to 4.0 way back in August
https://github.com/ruby/ruby/pull/18516 -
06:58 PM Ruby Revision 84da5393 (git): Fix race condition in rb_str_tmp_frozen_no_embed_acquire
- [Bug #22382]
rb_str_tmp_frozen_no_embed_acquire is not Ractor safe for the non-embedded
case because it modifies the orig string. This can cause a race condition
if multiple Ractors are executing the same code path for the same string.
... -
06:58 PM Ruby Revision 799fd1f5 (git): Allocate a frozen copy of a shareable string with the terminator of its encoding
- str_new_frozen_buffer copied a shareable string with room for a 1-byte
terminator, so String#-@ on a shareable UTF-16 or UTF-32 string
returned a string without room for its terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <nor... -
06:58 PM Ruby Revision aeb3d4cb (git): Keep room for the terminator in the result of String#scrub
- enc_str_scrub set the encoding of the result without adjusting the room
for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit a60de9cfe17be2fbc76b504c965b13593c8d2113) -
06:58 PM Ruby Revision 077d1615 (git): Allocate the result of String#succ with the terminator of its encoding
- [Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit fc9d1cd671d4fbc1927bdb49f2f3b51264532ce1) -
06:58 PM Ruby Revision 1c564521 (git): Use rb_enc_associate_index to set the encoding in ASCII-only case mapping
- rb_str_ascii_casemap set the encoding of the result with str_enc_copy,
which does not adjust the room for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 6b6d75fd8c014e88... -
06:58 PM Ruby Revision 59dbb22e (git): Use rb_enc_associate_index to set the encoding of interpolated strings
- rb_str_concat_literals set a UTF-16 or UTF-32 encoding with
str_enc_copy_direct or rb_enc_set_index, which do not adjust the room
for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked ... -
06:58 PM Ruby Revision ec5b3f01 (git): Allocate the result of case mapping with the terminator of its encoding
- rb_str_casemap allocated the result with room for a 1-byte terminator
and then set a UTF-16 or UTF-32 encoding with str_enc_copy_direct, which
does not adjust the room for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <n... -
06:58 PM Ruby Revision a7c45148 (git): Allocate the result of String#reverse with the terminator of its encoding
- rb_str_reverse allocated the result with room for a 1-byte terminator
and then set a UTF-16 or UTF-32 encoding with str_enc_copy_direct, which
does not adjust the room for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <n... -
06:58 PM Ruby Revision aaf97abb (git): [Bug #22500] Extend sp over keyword locals for methods with more than 31 keywords
- The fast paths in vm_callee_setup_arg and vm_call_iseq_setup_kwparm_kwarg
call args_setup_kw_parameters with the keyword locals above cfp->sp. With
more than 31 keywords, leaving one past the 31st to a default that is not
static allocate... -
06:58 PM Ruby Revision c239ebbf (git): [Bug #22498] [DOC] Clarify `Proc#==`
- `Proc` is including the binding, not mere code block. State that
`Proc`s with different bindings are not equal.
(cherry picked from commit 86751a10d06e074103a692d92f1626ec656d9619) -
06:58 PM Ruby Revision 85e6cd39 (git): Do not treat a leading .* after an assertion as an implicit anchor
- When an assertion such as ^, \b or a lookahead precedes the leading .*, it may fail at the start position and hold later, so the search must try later positions.
[Bug #22494]
(cherry picked from commit dbfe6bac2285ea61a76a2dec970cf859f... -
06:58 PM Ruby Revision 6e7a8c5d (git): Do not use the leading .* shortcut in a backward search
- A match at an earlier position does not imply one at the start position, so String#rindex with /.*.../m missed matches.
[Bug #22492]
(cherry picked from commit d55b67dfa3c1f94a4855381b400da7aa987bb5be) -
06:58 PM Ruby Revision f9537330 (git): Check that the recompiled regexp has the same number of groups
- The registers are allocated for the original regexp, so if the regexp
recompiled for the string's encoding has a different number of groups,
Onigmo would reallocate them. Check it when recompiling and stop with
rb_bug if they differ.
[B... -
06:58 PM Ruby Revision ebf8b9e8 (git): Keep the groups of a regexp compiled again for a string
- When a regexp is compiled again for the encoding of a string, pass its
options to the preprocessor so that the comments of extended mode are
dropped as in the first compilation. Also make is_code_ctype of
Emacs-Mule return false for non... -
06:58 PM Ruby Revision b210f971 (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.... - 06:58 PM Ruby Revision 1df862fe (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... -
06:58 PM Ruby Revision e0412137 (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@... -
06:58 PM Ruby Revision c26506e8 (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.
(cherry pick... -
06:58 PM Ruby Revision 59250b6d (git): [Bug #22461] Fix dangling pointers after associating encoding
- `rb_enc_associate` may re-allocate the string buffer because of the
terminator length change.
(cherry picked from commit faefcb11050ea61ee011e3b73c929ff406d30b68) -
06:58 PM Ruby Revision 46bb61f9 (git): [Bug #22458] Fix out-of-bound in `Time#strftime`
- (cherry picked from commit 5c52c2a37bed5507c1898486cdf7eba736296ed4)
-
06:58 PM Ruby Revision 3654ad81 (git): [Bug #22450] Preserve do-block binding in control-flow arguments
- Inherited `CMDARG` state made `do` blocks in control-flow arguments
bind to the wrong call.
(cherry picked from commit 31a3aa4e46dd33b5a08708d687ed9f9d3253b55a) -
06:58 PM Ruby Revision afc3c470 (git): [Bug #22449] Fix out-of-bounds in `Array#sample` when array modified
- Get the length after the conversion using `to_int` is complete.
(cherry picked from commit 88ffa9a3003c36e5c6001cca33e0bba2fcb37125) -
06:58 PM Ruby Revision 7748f680 (git): Fix ifunc block handler leak from method_missing
- [Bug #22436]
The check_funcall_exec function incorrectly restored the pending block
handler which causes it to leak.
For example, the following code crashes:
o = Object.new
def o.method_missing(*) = nil # Array#zip calls o.e... -
06:58 PM Ruby Revision abb89ef1 (git): ZJIT: prepare options whenever the zjit feature is enabled
- --enable=zjit sets the zjit feature bit without parsing a --zjit option,
so OPTIONS is never initialized and rb_zjit_option_enable() returns
false.
ZJIT then stays disabled at boot. The same happens with --enable-zjit
and RUBYOPT=--enab... - 06:58 PM Ruby Revision c44c4d84 (git): Fix termlen in String#initialize
- Without capacity:, rb_enc_raw_set doesn't resize the buffer for a wider
terminator, so the terminator could overflow an embedded string.
rb_enc_associate resizes it.
With capacity: and no encoding:, the buffer was sized for a 1-byte
ter... -
06:58 PM Ruby Revision 9d70ef8a (git): [Bug #22423] Preserve encoding with `String` capacity
- (cherry picked from commit 2d08b5f42f2cbed4a4e6ecf8d62987a4f21f98c1)
-
06:58 PM Ruby Revision 4dac54f3 (git): Evaluate gemspecs in a binding without local variables
- Gemspecs can assign local variables such as `files`, `file` and
`base`, which overwrote the ones of `load_gemspec`. For instance,
ipaddr.gemspec and net-http.gemspec assign `file`, and `loaded_from`
of their specs pointed to their Ruby ... -
06:58 PM Ruby Revision 8c3820f8 (git): [Bug #22420] Prefix `lib/` only to collected files of default gems
- The files collected for a default gem are relative to its lib
directory, while the files listed by the gemspec itself are relative
to the gem root. `load_gemspec` prefixed `lib/` to any `.rb` entry
missing from the current directory, so ... -
06:58 PM Ruby Revision b4b36502 (git): Compute the buffer size of unpack("m") without overflow
- (send - s + 3) * 3 / 4 overflowed for an input of about 700 MB where
long is 32-bit. Divide before multiplying, as each 4 characters decode
to at most 3 bytes.
[Bug #22518]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cher... -
06:58 PM Ruby Revision 1b973182 (git): Assert that str_enc_copy_direct is used on a string with room for the terminator
- str_enc_copy_direct does not adjust the room for the terminator, so the
string must already have room for the terminator of the new encoding.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from com... -
06:58 PM Ruby Revision b5e415db (git): Allocate the result of String#slice! with the terminator of its encoding
- [Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 8d2bec3b97c3198e49387180b83ae34b60b364c9) -
06:57 PM Ruby Revision 7c3945f7 (git): Fix NameError from singleton_method for a name with no ID
- rb_check_id returns 0 when the name has no ID, and we were passing that
to ID2SYM. 0 is never a valid ID, so also assert against it in
rb_id2sym.
[Bug #22535]
(cherry picked from commit 45666487ee3868605bc6fd792f21ff8ac42264da) -
06:55 PM Ruby Revision ecb6a5cc (git): Keep curry's argument array alive across the inner call
- In the call branch of `curry`, `passed` is the only reference keeping the
freshly built argument array alive, yet its backing buffer is handed to
`rb_proc_call_with_block` as `argv` via `RARRAY_CONST_PTR(passed)`. After
taking that point... -
06:49 PM Ruby Revision 59fcae00 (git): Socket#connect spec: handle `EHOSTUNREACH`
- Since ENETUNREACH is handled, is seems reasonable to also
handle `EHOSTUNREACH` as I witnessed it failing on one of
my CI runs.
(cherry picked from commit d9ac2852dd0b21965ada94f67f8f2873a1d1cd86) - 06:49 PM Ruby Revision 7770167c (git): Make blockparamproxy shareable
- Fixes YJIT compilation bug. During YJIT compilation, it could see a
`Ractor::IsolationError` by getting the attached object of the blockparamproxy's
singleton class's (the proxy object). This object needs to be shareable in order
for the... -
06:48 PM Ruby Revision 9aad07d9 (git): Check array modifiability in Array#fill (#19821)
- Array#fill yields to a block and the block code may freeze the array.
We need to check when iterating otherwise we'll end up mutating a frozen
array
[Bug #22529]
(cherry picked from commit dd0ff240523781569ade1d438e16df2d381070aa) -
06:18 PM Ruby Bug #22540 (Open): Process.spawn leaves the env, umask, and redirections applied in the parent on Windows when chdir: fails
- On Windows, when `Process.spawn` is given a `chdir:` directory that is missing or can't be entered, it raises as expected, but the environment, umask, and redirections intended for the child are left applied in the parent process.
```... -
03:59 PM Ruby Revision acc624e4 (git): [ruby/json] Prevent ResumableParser double initialization
- Reported-By: Frank Kuhn <frank@swipergy.com>
https://github.com/ruby/json/commit/c737292654 -
03:40 PM Ruby Revision 14285dee (git): Optimize `String.new(capacity:)`
- Followup: https://github.com/ruby/ruby/pull/19537
Similarly, by adding a fastpath for `String` in
`opt_new` we can peek in the stack to pre-allocate
a string of the right size.
Additionally, by moving `String#initialize` in
`string.rb`... -
03:09 PM Ruby Revision af71c7ae (git): ZJIT: extend `gen_new_hash` optimization to String keys (take 2)
- String keys are about as common as symbol ones, and can benefit
from the same optimization because Ruby hashes directly hash and
compare bare strings without calling `#hash` nor `#eql?` just like
Symbols.
However that only applies if ke... -
02:33 PM Ruby Revision 218df132 (git): Fix race condition in rb_str_tmp_frozen_no_embed_acquire
- [Bug #22382]
rb_str_tmp_frozen_no_embed_acquire is not Ractor safe for the non-embedded
case because it modifies the orig string. This can cause a race condition
if multiple Ractors are executing the same code path for the same string.
... - 02:33 PM Ruby Revision f8e3db68 (git): Fix GC compaction re-embedding for arrays and strings
- Don't re-embed after compaction for these types if they are pinned because if these objects
aren't embedded we want to keep their xmalloc's backing storage intact so that RARRAY_PTR
and RSTRING_PTR don't point to freed memory across a co... -
02:26 PM Ruby Bug #22462: For UnboundMethod, super_method.bind and bind.super_method should return an equal Method
- I agree with the proposed invariant: `um.bind(o).super_method == um.super_method.bind(o)`. Please go ahead, on top of the fix for #22505.
Regarding the point @shugo raised, I accept that `UnboundMethod#==` and `Method#==` differ here.... -
02:21 PM Ruby Revision 7845f5b7 (git): merge revision(s) 11bb5c82d2107f7609151e088eceecb8d9c71d97:
- [PATCH] Disable MacOS ReportCrash in Github Actions CI
Hopefully this will mitigate MacOS timeouts for tests that are exercising the crash path (assert_segv, etc). -
02:20 PM Ruby Revision 5ede9f29 (git): merge revision(s) e42fb9492e214cdeafac44d68b649c543c0e40ff:
- [PATCH] Scale ModGC test timeouts by runner and GC
Apply independent timeout factors for macOS runners and the MMTk
collector. This extends Ubuntu MMTk subprocess timeouts without
retaining an excessive scale fo... -
02:18 PM Ruby Revision ffd78612 (git): merge revision(s) ce081bb04abd5e22bb00297c5a4ba8af2ee75cb3:
- [PATCH] Scale test timeouts of test-bundled-gems on macOS
Subprocess assertions in the bundled gem tests expire at 10 seconds on contended runners, as test-all did before dd4153cbfe1.
Co-Authored-By: Claude Opus 5.5 <no... -
02:18 PM Ruby Revision 2b1e8df3 (git): merge revision(s) dd4153cbfe178ebe35a2eaf6d7c621a5440fb83f:
- [PATCH] Scale test timeouts in the macOS test-all job again
108a92ac633 dropped RUBY_TEST_TIMEOUT_SCALE from this job together with --repeat-count=2, so its subprocess assertions time out at 10 seconds on the slower runners.
... -
02:17 PM Ruby Revision 950460a3 (git): merge revision(s) 8e8682fc2312164c49d3bf4a15d1f464d2644598:
- [PATCH] Add timeout scale to all macos check CI jobs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
MacOS CI jobs are prone to flake on Github Actions with timeo... -
02:12 PM Ruby Feature #22437: Speed up creation and basic operations of Struct / Data
- This is an interim report about iseq approach experiment.
## Background
* For now, I only look at Struct. I am trying to build the `initialize` of classes made by `Struct.new(...)` (`keyword_init` nil/true/false) directly as ISEQs.... -
01:41 PM Ruby Bug #22505: UnboundMethod#{bind,bind_call} results in incorrect behavior when method owner is at multiple places in ancestry
- I agree this is a bug. An `UnboundMethod` taken from `C` should start method lookup from the position of `C` in the ancestry, so `[:m, :c]` is the expected result. Please go ahead with the fix.
Since the current behavior dates back to... -
01:23 PM Ruby Revision ee74a10c (git): [ruby/openssl] ssl: update docs for SSLContext#servername_cb
- Recommend using it with the newly added SSLSocket#add_certificate.
https://github.com/ruby/openssl/commit/9778ae6f94 -
01:18 PM Ruby Bug #22467: IO#readpartial can raise EFAULT during GC.compact in another thread
- It appears that `e131720215251851efab1811a24c4d59a0fc979d` [Bug #22389] is also required to fix test hang-ups on macOS.
I have filled `REQUIRED` in the Backport field. -
01:18 PM Ruby Bug #22389: Hang on GC.compact
- After I backported for `[Bug #22467]`, the CI on macOS starts to hang-up. I suppose this change is also necessary.
-
01:13 PM Ruby Bug #22389: Hang on GC.compact
- ruby_3_4 commit:0b4e70bbd94ce4383b733860bd265dbf51764e6b merged revision(s) commit:e131720215251851efab1811a24c4d59a0fc979d.
-
01:12 PM Ruby Revision 0b4e70bb (git): merge revision(s) e131720215251851efab1811a24c4d59a0fc979d: [Backport #22389]
- [PATCH] Use pthread_sigmask in the GC read barrier signal handler
sigprocmask() is unspecified in multithreaded processes; on macOS it
left SIGSEGV/SIGBUS blocked on the faulting thread, so a second
read-barrier ... -
01:04 PM Ruby Feature #22536: Add Enumerable#longest_slice to return the range of the longest consecutive matching sequence
- duerst (Martin Dürst) wrote in #note-1:
> My impression is that this proposal is useful in some cases, but these are too rare to include it in core. This functionality is better suited for a gem. Maybe it's already available in some gem... -
06:53 AM Ruby Feature #22536: Add Enumerable#longest_slice to return the range of the longest consecutive matching sequence
- My impression is that this proposal is useful in some cases, but these are too rare to include it in core. This functionality is better suited for a gem. Maybe it's already available in some gem.
-
12:38 PM Ruby Revision c326f3f7 (git): merge revision(s) aaf47cca03c4c7561fd931e0aa1a76adfdb23eba:
- [PATCH] Now onigenc_single_byte_code_to_mbclen checks out-of-bound
-
12:10 PM Ruby Revision 780a40c7 (git): merge revision(s) 81c13349049a3674819842e87b14cf35b8755392:
- [PATCH] [k-takata/Onigmo] Fix out-of-bounds read in parse_char_class() (Close https://github.com/k-takata/Onigmo/pull/139)
/[\x{111111}]/ causes out-of-bounds read when encoding is a single byte
encoding. \x{111111} is a... -
11:39 AM Ruby Bug #22539 (Closed): Class#new shouldn't call refined initialize methods
- Applied in changeset commit:git|db22451d7e1fcb04f033436fe099b0f0489d70d6.
----------
[Bug #22539] Do not apply refinements to the initialize call of opt_new
opt_new inlines the call to initialize in the caller's bytecode, which made
re... -
11:04 AM Ruby Bug #22539 (Closed): Class#new shouldn't call refined initialize methods
- Since the introduction of `opt_new` in [Feature #21254], if a class's `initialize` method is refined, the refined version is called.
That's not the case when disabling compiler optimizations, or calling `new` with `send`.
After put... -
11:39 AM Ruby Revision db22451d (git): [Bug #22539] Do not apply refinements to the initialize call of opt_new
- opt_new inlines the call to initialize in the caller's bytecode, which made
refinements of #initialize active at the call site of .new apply, unlike
Class#new (e.g. via #send) and Ruby <= 3.4.
Add the internal VM_CALL_IGNORE_REFINEMENTS... -
11:06 AM Ruby Feature #22501 (Closed): Optimize `Hash.new` and `String.new` in `opt_new`
- A bug report has been filed [Bug #22539] and backport requested for 4.0.
Closing this, and I'll merge the `String.new` fastpath soon. -
10:55 AM Ruby Feature #22501: Optimize `Hash.new` and `String.new` in `opt_new`
- > BTW, I think this should be Bug, not Feature since it's an unintentional incompatibility.
The bug should be a different ticket. I'll open it.
-
10:39 AM Ruby Feature #22501: Optimize `Hash.new` and `String.new` in `opt_new`
- I made a PR to fix this: https://github.com/ruby/ruby/pull/19857
BTW, I think this should be `Bug`, not `Feature` since it's an unintentional incompatibility.
I think it may make sense to backport to Ruby 4.0, up to the branch mainta... -
08:09 AM Ruby Feature #22501: Optimize `Hash.new` and `String.new` in `opt_new`
- > refinements applying to initialize seems an accidental side-effect of opt_new inlining the call to initialize in the bytecode and we should fix it.
Indeed.
> ...
I assume it means instead of generating a `send` instruction, we ne... -
10:31 AM Ruby Feature #14915: Deprecate String#crypt
- +1 to deprecate and then remove `String#crypt`.
In my understanding it's already widely discouraged and known to have various security issues, so keeping it in Ruby exposes us to more vulnerabilities.
It's also not portable as mentione... -
09:53 AM Ruby Feature #14915: Deprecate String#crypt
- Let me report a recent change in behaviour that is related to this ticket. I noticed it while investigating https://github.com/bcrypt-ruby/bcrypt-ruby/issues/305 , which appeared after the `rubylang/ruby` Docker images moved to Ubuntu 26...
-
10:20 AM Ruby Feature #21962: Add deep_freeze for recursive freezing
- Regarding "Why not just ice_nine?" one more reason besides performance and "it belongs in the language, we shouldn't need a gem dependency to make constant values immutable",
is `ice_nine` doesn't work for T_DATA and notably `Set`, `Stru... -
08:21 AM Ruby Feature #21962: Add deep_freeze for recursive freezing
- Some concrete use cases:
Here are some real-world examples of deep freezing objects other than Array, Hash and primitives.
They are user-defined objects, Structs, ASTs, config objects and so on.
### Value objects which deep-freeze... - 10:12 AM Ruby Revision 2c7dfcfa (git): [ruby/openssl] ssl: add SSLSocket#add_certificate
- Allow adding a certificate per connection. This is the SSLSocket
counterpart of SSLContext#add_certificate.
This is a step toward configuring the SSL object directly from
callbacks instead of switching the SSLContext.
Ref https://githu... -
09:25 AM Ruby Revision 556ee49c (git): [ruby/rubygems] Mirror RubyGems 4.0 in the legacy NameTuple stand-in
- The stand-in skipped the nil and empty platform normalization and the matching full_name branch, so it diverged from the class it reproduces.
https://github.com/ruby/rubygems/commit/eee16db57a
Co-Authored-By: Claude Opus 5.5 <noreply@a... -
09:25 AM Ruby Revision 61157ea9 (git): [ruby/rubygems] Test the NameTuple content address shim directly
- The specs added in #10055 used Gem::NameTuple, which is the native class on the RubyGems running the test harness, so they passed even with the shim removed. Move the shim into a module that is always defined and only prepended on older ...
-
09:20 AM Ruby Feature #22279: Region (Length / Range) Arguments for String Bit Operations
- Regarding the exception message at an invalid `lsb_first:` option:
```ruby
"".bit_count(0, 1, lsb_first: :no)
# -e:1:in 'String#bit_count': lsb_first must be true or false (ArgumentError)
```
While other boolean flags:
```rub... - 09:10 AM Ruby Revision 5a1bd936 (git): [ruby/ipaddr] Accept compressed IPv6 addresses with 7 groups and an embedded IPv4
- An address such as "::1:2:3:4:5:1.2.3.4" (0:1:2:3:4:5:102:304) was
rejected because the colon limit for the embedded-IPv4 form did not
account for a leading "::", unlike the plain compressed form.
With the colon checks in place, the "re... -
08:59 AM Ruby Misc #22502: Clarify whether compiling an untrusted string into a Regexp is supported
- The glibc has for example this policy about RegExps:
https://sourceware.org/git/?p=glibc.git;a=blob;f=SECURITY.md#l59 -
04:09 AM Ruby Misc #22502: Clarify whether compiling an untrusted string into a Regexp is supported
- 1. Assigning vuln identifier such as CVE/GHSA: Can be done retroactively if we don't want to increase burden for dealing with security issues
2. Threat model: It is still not the common sense that passing untrusted input to regexp compi... - 07:55 AM Ruby Revision e6e232d5 (git): [ruby/rubygems] Refuse to extract through a pre-existing leaf symlink
- raise when destination is a symlink to avoid escaping the destination folder
https://github.com/ruby/rubygems/commit/986afc9060 -
07:38 AM Ruby Feature #21308: Replacing the Float#to_s (dtoa.c) implementation with a modern algorithm
- akr (Akira Tanaka) wrote in #note-8:
> I'm afraid the new implementation's behavior is different from Ruby's.
> ...
I add some references about this concern.
It is discussed in https://bugs.ruby-lang.org/issues/2152.
After some discu... -
06:51 AM Ruby Feature #21308: Replacing the Float#to_s (dtoa.c) implementation with a modern algorithm
- I'm afraid the new implementation's behavior is different from Ruby's.
As far as I remember, Ruby's implementation produces different strings for different floats as follows.
```
% ruby -e '1000.times { n = rand; p n.to_s != n.next_... - 07:36 AM Ruby Revision a04f940d (git): [ruby/rubygems] Fix content-addressed lockfile checksum collisions on older RubyGems
- https://github.com/ruby/rubygems/commit/c6cc7b619b
-
05:35 AM Ruby Revision 526384b7 (git): Fix crash/hang sending to the main Ractor after fork
- A thread blocked in Port#receive adds a waiter, allocated on its own
stack, to its Ractor's waiters list. Only the forking thread survives
fork, but the child kept the main Ractor's list with the dead threads'
waiters still on it. glibc ... -
01:04 AM Ruby Bug #22510: YJIT on arm64 crashes when the code region is larger than 128MiB
- ruby_4_0 commit:35bd011334 merged revision(s) commit:7f451f6c00 (https://github.com/ruby/ruby/pull/19725).
-
01:02 AM Ruby Bug #22535: Release mode segfault due to half-initialized error in singleton_method
- 4.0: https://github.com/ruby/ruby/pull/19848
3.4: https://github.com/ruby/ruby/pull/19849 -
01:00 AM Ruby Bug #22535 (Closed): Release mode segfault due to half-initialized error in singleton_method
- Applied in changeset commit:git|45666487ee3868605bc6fd792f21ff8ac42264da.
----------
Fix NameError from singleton_method for a name with no ID
rb_check_id returns 0 when the name has no ID, and we were passing that
to ID2SYM. 0 is neve... -
12:59 AM Ruby Revision 45666487 (git): Fix NameError from singleton_method for a name with no ID
- rb_check_id returns 0 when the name has no ID, and we were passing that
to ID2SYM. 0 is never a valid ID, so also assert against it in
rb_id2sym.
[Bug #22535] -
12:55 AM Ruby Bug #22415: Thread.handle_interrupt needs to preserve errinfo
- ruby_4_0 commit:ac121993f5 merged revision(s) commit:21c6e8a54b.
-
12:55 AM Ruby Bug #22445: On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
- ruby_4_0 commit:27204205e6 merged revision(s) commit:e06b9da3f2.
-
12:55 AM Ruby Bug #22512: Overflow in `st_init_existing_table_with_size` / `Hash.new(capacity:)`
- ruby_4_0 commit:67ddc4a20c merged revision(s) commit:165bb8173f.
-
12:55 AM Ruby Bug #22426: ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
- ruby_4_0 commit:df0d7a87b6 merged revision(s) commit:d81a11d4e6.
-
12:55 AM Ruby Bug #22434: "No live threads left. Deadlock?" when running system() or spawn in Ractors
- ruby_4_0 commit:c092fd8552 merged revision(s) commit:28f2eae4cf.
-
12:55 AM Ruby Bug #22451: Coderange may be set incorrectly when concatenating a string into itself
- ruby_4_0 commit:ccb92217d3 merged revision(s) commit:b740f7d553.
-
12:55 AM Ruby Bug #22504: Empty keyword hash mishandled when calling a Method proc through the C API
- ruby_4_0 commit:c276ef0a4a (via https://github.com/ruby/ruby/pull/19607).
-
12:54 AM Ruby Bug #22511: Please backport ee90e8e380 (concurrent set size overcount) to 4.0: fstring table keeps doubling in long-running apps
- ruby_4_0 commit:7c0547b397 merged revision(s) commit:ee90e8e380.
-
12:21 AM Ruby Bug #22538 (Closed): require 'socket' raises NameError for builds with --disable-ipv6, and IPv6 addresses leak from the resolver
- On a Ruby built with `./configure --disable-ipv6`, `require 'socket'` fails:
```
$ ruby -rsocket -e0
.../socket.rb:622:in '<class:Socket>': uninitialized constant Socket::AF_INET6 (NameError)
from .../socket.rb:478:in '<top (requi... -
12:17 AM Ruby Revision ba4a7a5a (git): Wait on the kept reply port in Ractor#join, require, and autoload
- Ractor#join made a Ractor::Port for each call and closed it, and a
require or autoload from a non-main Ractor made one, made it shareable,
and passed it to the main Ractor in the request. All three now wait on
the Ractor's kept reply po... -
12:17 AM Ruby Revision f54c8c67 (git): Do not mark the kept reply port from the Ractor wrapper
- ractor_mark marks only the wrapper's direct references: the wrapper is
shareable, so following an unshareable object from it breaks the shref
rule, and the Ractor's unshareable parts are marked by the root scan
instead. The kept reply p...
11/11/2026
-
08:37 PM Ruby Feature #22501: Optimize `Hash.new` and `String.new` in `opt_new`
- To state the obvious: at least the interpreter and JIT should be consistent.
I think the interesting part is whether normal `Class#new` calls `initialize` with refinements or not.
From:
```ruby
class Foo
end
module R
refine Foo do
... - 05:39 PM Ruby Revision 0738c9df (git): ZJIT: Add cruby_methods inline annotation for Integer#pred (#19842)
- ZJIT: Inline Integer#pred
Replace calls to Integer#pred with FixnumSub x, 1 when the receiver is a Fixnum, the same way Integer#succ is inlined with FixnumAdd.
Other receivers still call the C method.
Add HIR tests for the Fixnum and B... -
01:31 PM Ruby Bug #22533: Peephole optimizer infinite loop
- I have a patch for this: https://github.com/ruby/ruby/pull/19844, but I'm not 100% certain it doesn't regress this optimization, and based on the handful of failing ZJIT tests, it looks like it does generate different code sometimes.
... -
11:39 AM Ruby Bug #22419 (Closed): [BUG] "rb_objspace_reachable_objects_from_local: set is owned by another Ractor" when a non-main Ractor reads a class instance variable since f0439cdfa7
- Applied in changeset commit:git|7fe831a84b198d617455e71505e20de7635ec749.
----------
Only the owner Ractor makes its objects shareable [Bug #22419]
Making an object shareable sets FL_SHAREABLE, the page's shareable/shref
bits, and make... -
11:38 AM Ruby Revision 993fd8f4 (git): Keep one reply port per Ractor for internal requests
- Each wait for a share request's answer made a Ractor::Port and closed it.
Keep one per Ractor (sync.reply_port) and lend it to one wait at a time
(sync.reply_port_busy); a wait that finds it busy makes a port of its own
as before. A wai... -
11:38 AM Ruby Revision 7fe831a8 (git): Only the owner Ractor makes its objects shareable [Bug #22419]
- Making an object shareable sets FL_SHAREABLE, the page's shareable/shref
bits, and makes strings independent. Those writes belong to the owner's
objspace and are single-writer, but rb_ractor_shareable_p did them on
whatever it walked, s... -
11:38 AM Ruby Revision d2e2d91f (git): Run Ractor-targeted postponed jobs on whichever thread takes the GVL
- rb_postponed_job_trigger_for_ractor flags only threads.running_ec, which may
be a thread that has gone to sleep or exited since (with 1:1 threads it keeps
pointing at the last thread that ran, e.g. Ractor#require's). The job then
waits ... -
11:38 AM Ruby Revision d00d4a46 (git): Let an objspace point back to the Ractor running on it
- rb_gc_obj_ractor(obj) returns the living Ractor whose objspace holds
obj's page, so a caller can find the Ractor that may write obj's flags
and page bits.
The pointer is set when the objspace is made for a Ractor (the main
Ractor's in r... -
09:29 AM Ruby Bug #22537 (Open): `IO#gets(nil, limit)` stops right after a 0xFF byte
- `IO#gets(nil, limit)` (no separator, with a limit) returns early when the data contains a `0xFF` byte: it returns the bytes up to and including the first `0xFF`, even though neither the limit nor EOF has been reached. `IO#gets(nil)` and ...
-
08:14 AM Ruby Revision 2a250326 (git): Revert "hash.c: rb_any_cmp only consider the LHS for optimization"
- This reverts commit f2828fd01fb52b89562cdfe8791c097e050aa6e9.
-
08:00 AM Ruby Revision f2828fd0 (git): hash.c: rb_any_cmp only consider the LHS for optimization
- If the left hand side is a Symbol or bare String, it doesn't make
sense to gate the optimization to the right hand side being of the
same type.
If the type differs, we can directly return. -
07:37 AM Ruby Revision 79190756 (git): Build again where pthread_t is not a scalar
- configure still defines NON_SCALAR_THREAD_ID, but three places assume
a scalar pthread_t: the main-thread check in native_thread_init_stack
and Thread#name= compare an id with 0, and last_exiting_thread keeps a
pthread_t in a void *. Ch... -
07:37 AM Ruby Revision 58767c21 (git): Record a native thread's id again in a forked child
- The child re-records nt->tid, which fork does change, but kept the
parent's nt->thread_id. No pthread implementation we know of gives the
forking thread a new pthread_t in the child (checked on glibc, where it
is the address of the thre... -
04:51 AM Ruby Bug #22535: Release mode segfault due to half-initialized error in singleton_method
- Fix: https://github.com/ruby/ruby/pull/19839
-
02:50 AM Ruby Bug #22535 (Closed): Release mode segfault due to half-initialized error in singleton_method
- This causes a segfault seemingly only in release mode:
name = "never_interned_#{rand(10**12)}"
begin
Object.new.singleton_method(name)
rescue NameError => e
STDERR.puts "rescued #{e.class}; e.name.class = #... -
03:58 AM Ruby Feature #22536 (Open): Add Enumerable#longest_slice to return the range of the longest consecutive matching sequence
- I propose adding `Enumerable#longest_slice`, which returns a Range identifying the longest consecutive sequence of matching entries.
Without a block, entries match when they are truthy. Both `nil` and `false` break a sequence. With a ... -
03:53 AM Ruby Revision 5ef4ff5e (git): [ruby/mmtk] Bindings for MMTK harness_begin and harness_end
- MMTk provides performance analysis functions `harness_begin` and
`harness_end`. We allow Ruby programs to invoke those functions using
`GC::MMTk.harness_begin` and `GC::MMTk.harness_end`, respectively.
https://github.com/ruby/mmtk/comm... -
03:49 AM Ruby Feature #22466: Allow disabling the shape redblack cache via RUBY_SHAPE_REDBLACK_CACHE=disable
- I wonder if we shouldn't also initially map this space as PROT_NONE, and then reserve space as it's used. We're now reserving large segments of virtual memory for shapes, stacks (fiber and M:N thread), and GC pages. It feels like we shou...
- 02:35 AM Ruby Revision 688c4fed (git): [ruby/rubygems] Document plugin hooks in the bundle-plugin man page
- The man page did not mention hooks at all, and 4.1 added events around
Gemfile evaluation (before-eval, after-eval), each gem download
(before-fetch, after-fetch) and each git source fetch (before-git-fetch,
after-git-fetch). Add a HOOKS... - 02:35 AM Ruby Revision a2402ad7 (git): [ruby/rubygems] Document that the Gemfile ruby patchlevel option is ignored
- Bundler no longer compares the patchlevel given to the `ruby` directive
against the running Ruby, but the PATCHLEVEL section of the gemfile man
page still presented the option as meaningful. Say that it is accepted
for compatibility with... - 02:32 AM Ruby Revision e5a78a65 (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.90.2 to 2.90.3
- [Release notes](https://github.com/taiki-e/i... - 02:29 AM Ruby Revision fbf30851 (git): [ruby/prism] RubyParser: fix for `it` and `_<n>` lvars
- This was matching bugs in RubyParser at the time it was ported.
https://github.com/ruby/prism/commit/4299fc2641 -
01:57 AM Ruby Revision 98e2c7fd (git): ZJIT: Restore the inline budget's self.insns() check (#19763)
11/10/2026
-
11:51 PM Ruby Revision b8aa7c9d (git): [ruby/rubygems] Reword the comment on skipping the running Bundler
- The running Bundler is not always the one pinned by BUNDLED WITH, for example without a lockfile or with `bundle _x_`.
https://github.com/ruby/rubygems/commit/4d4a2c68fd
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:51 PM Ruby Revision 640f7747 (git): [ruby/rubygems] Don't warn about the running Bundler in default gem downgrades
- The resolved specs always include the running Bundler, so a Bundler 4.1.x locked by BUNDLED WITH was reported as a downgrade on every install whenever Ruby or `gem update --system` shipped a newer default bundler.
https://github.com/rub... -
11:41 PM Ruby Revision 40a3c883 (git): [ruby/rubygems] Require yaml in test_roundtrip_block_scalar_indicators
- The test calls Psych.unsafe_load, but Gem.load_yaml only requires psych
when use_psych is enabled. Otherwise yaml_serializer.rb defines a minimal
Psych module without unsafe_load, so the test raised NoMethodError
whenever no earlier test... -
11:10 PM Ruby Revision d9bbf7af (git): [ruby/rubygems] Name a default gem that bundler/inline's install still activates
- securerandom is now loaded as Gem::SecureRandom, while building native extensions still activates tempfile, tmpdir and open3.
https://github.com/ruby/rubygems/commit/0efc389046
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:10 PM Ruby Revision 15ac93b6 (git): [ruby/rubygems] Print bundler/inline's resolution output only once
- After a forked install the parent resolves again to set up the bundle, which repeated the metadata and resolution lines the child had already printed.
https://github.com/ruby/rubygems/commit/44b9654200
Co-authored-by: Samer Masry <smas... -
11:10 PM Ruby Revision 7104f3e9 (git): [ruby/rubygems] Raise bundler/inline install failures in the script's process
- The forked installer child ran the script's at_exit hooks on its way out and reported a failure by making the parent exit, so the script could not rescue it. The child now always ends with exit!, even when flushing its output to a closed...
-
11:01 PM Ruby Revision 99db83e8 (git): [ruby/rubygems] Read a wrapped quoted sequence item containing ": " as a scalar
- Its first line has no closing quote, so it looked like a mapping key. A closed one followed by " :", such as `- "b" : 1`, still goes through the mapping check as before.
https://github.com/ruby/rubygems/commit/2cabfa724f
Co-Authored-By... -
11:01 PM Ruby Revision cfedf927 (git): [ruby/rubygems] Fold quoted scalars that run onto several lines in Gem::YAMLSerializer
- Psych wraps long quoted strings, and writes a single-line string ending in a newline as a quoted scalar spanning three lines, so metadata built before RubyGems 4.1 often has them. The serializer kept the quotes and escapes of such a valu...
-
10:38 PM Ruby Revision f4ec3e4c (git): Revert "ZJIT: extend `gen_new_hash` optimization to String keys"
- This reverts commit 01bace6fcef6ac74493bd682adc572aab6e084a4.
-
10:09 PM Ruby Revision 9e16f8e1 (git): [ruby/rubygems] Warn about downgrading default gems in bundle install
- Downgrading a gem below the default gem version shipped with the
running Ruby version is not guaranteed to work. Warn when the bundle
contains an older version of a default gem during "bundle install" or
"bundle update".
This can be par... -
10:09 PM Ruby Revision ccf94258 (git): [ruby/rubygems] Refactor Bundler tests for default gems
- ENV["BUNDLER_GEM_DEFAULT_DIR"] is a Bundler test helper that overrides
Gem.default_dir. Make spec/support/hax.rb rebuild the cache used by
Gem.find_default_spec, which otherwise continues to reference the
original default gems.
Existing... -
08:46 PM Ruby Revision f6a88faf (git): [ruby/prism] Escape invalid bytes consistently
- https://github.com/ruby/prism/commit/76c1909a6b
-
08:45 PM Ruby Bug #22534 (Open): Stack consistency error
- The following snippet causes a crash both on 3.4 and master:
a = [7, begin; [(true || 2), (foo while true)]; rescue; 5; end, 6]
p a
def m = (begin; [(true || 2), (foo while true)]; rescue; 5; end)
p m
I think the... -
08:11 PM Ruby Revision 01bace6f (git): ZJIT: extend `gen_new_hash` optimization to String keys
- String keys are about as common as symbol ones, and can benefit from
the same optimization because Ruby hashes directly hash and compare
them without calling `#hash` nor `#eql?`. -
07:44 PM Ruby Revision d9ac2852 (git): Socket#connect spec: handle `EHOSTUNREACH`
- Since ENETUNREACH is handled, is seems reasonable to also
handle `EHOSTUNREACH` as I witnessed it failing on one of
my CI runs. - 06:52 PM Ruby Revision c54c08aa (git): [ruby/json] Fix integer overflow in the number parser digit counter
- json_parse_digits returns the number of digits consumed as an
(int)(cursor - start). A JSON number whose digit run is 2^31 or
longer (a >= 2GiB document) wraps the counter negative, and the
mantissa_digits <= MAX_FAST_INTEGER_SIZE fast-... -
06:46 PM Ruby Bug #22529: Array#fill should respect frozenness from yields
- 4.0 backport: https://github.com/ruby/ruby/pull/19829
-
05:52 AM Ruby Bug #22529 (Closed): Array#fill should respect frozenness from yields
- Applied in changeset commit:git|dd0ff240523781569ade1d438e16df2d381070aa.
----------
Check array modifiability in Array#fill (#19821)
Array#fill yields to a block and the block code may freeze the array.
We need to check when iterating... -
04:33 AM Ruby Bug #22529: Array#fill should respect frozenness from yields
- I sent a patch here: https://github.com/ruby/ruby/pull/19821
-
04:32 AM Ruby Bug #22529 (Closed): Array#fill should respect frozenness from yields
- Array#fill yields to a block, and the array could get frozen in the block, so we need to check for it.
I expect the following program to raise an exception, but instead the array is mutated:
```ruby
a = [1, 2, 3]
a.fill { a.freez... -
06:40 PM Ruby Revision 76102e78 (git): Fix signed integer overflow in rb_range_component_beg_len
- When an inclusive range ends at RB_LEN_MAX, `end++` overflows, and
`end - beg` can overflow as well. With -fno-strict-overflow the
values wrap around and give wrong results, e.g.
L = 2**63 - 1
[1, 2][0..L] #=> [... -
05:54 PM Ruby Revision cf39d16a (git): [ruby/prism] Recover performance on multibyte encodings
- https://github.com/ruby/prism/commit/bdbd482dc0
-
05:54 PM Ruby Revision 15855d93 (git): [ruby/prism] Avoid function pointers for encodings
- Instead of housing a set of function pointers, make each encoding
a different kind that knows how to check its own char width. Do
this by introducing effectively tiny state machines that check
multiple bytes at once.
https://github.com/... -
05:54 PM Ruby Revision 11f44589 (git): [ruby/prism] Bulk-scan ASCII identifiers in all encodings
- https://github.com/ruby/prism/commit/3fe4a48b5c
-
05:54 PM Ruby Revision 12e3bbd8 (git): [ruby/prism] Route encoding calls through a single entrypoint
- Instead of calling function pointers directly, route them through
one place so that we can change the underlying implementation of
the encoding objects without having to update callers.
https://github.com/ruby/prism/commit/8b1fc85f18 -
05:54 PM Ruby Revision cf92eb06 (git): [ruby/prism] Respect CESU-8 lower surrogates
- https://github.com/ruby/prism/commit/9fe15a9fc7
-
05:52 PM Ruby Bug #22527 (Closed): Implicit super with a reassigned keyword rest writes into the shared frozen empty hash
- Applied in changeset commit:git|4a3a75e61661ca0457901255e5e370ba8aa46eb2.
----------
[Bug #22527] Pass the kwrest local to hash_merge_ptr for zsuper
zsuper with both keywords and a keyword rest compiled the rest local
as `rest.dup` fol... -
05:52 PM Ruby Revision 4a3a75e6 (git): [Bug #22527] Pass the kwrest local to hash_merge_ptr for zsuper
- zsuper with both keywords and a keyword rest compiled the rest local
as `rest.dup` followed by core#hash_merge_bang_ptr. The local can be
reassigned, so dup could return nil (which merged into the shared
frozen empty hash) or a non-Hash ... -
05:27 PM Ruby Bug #22533 (Open): Peephole optimizer infinite loop
- The following code compiles a small loop with and without the peephole optimizer. It spawns a subprocess and waits 5 seconds before killing it to demonstrate the hang.
SRC = "while true; if true then 1 end; end"
pid = fork do... -
05:15 PM Ruby Revision 73c3ca89 (git): [ruby/openssl] pkey: do not retry OSSL_DECODER_from_bio() for DER encoding
- Retries are only needed for PEM input, where they are used to skip PEM
blocks that decode into something other than EVP_PKEY. Such cases
should be treated as an error when decoding the input as DER.
https://github.com/ruby/openssl/commi... -
05:14 PM Ruby Revision 6214dbf5 (git): [ruby/openssl] ts: refactor OpenSSL::Timestamp::Factory#create_timestamp
- Wrap everything in a big rb_protect() to simplify error handling and
cleanup. This also fixes potential issues:
- Missing error check of TS_RESP_CTX_set_signer_key()
- Missing error check of TS_RESP_CTX_set_certs()
- Missing error... -
05:11 PM Ruby Revision be1c9d51 (git): [ruby/openssl] Fix unchecked OpenSSL calls, part 2
- Fixes https://github.com/ruby/openssl/issues/1038
https://github.com/ruby/openssl/commit/96aa2a0f3d - 05:11 PM Ruby Revision a2e54c7d (git): [ruby/openssl] fix: unchecked *_set_* calls
- Fixes https://github.com/ruby/openssl/issues/1038
https://github.com/ruby/openssl/commit/874d9053af -
04:44 PM Ruby Revision 7be1ce89 (git): ZJIT: A64: Load address, not offset for far conditional jumps to a CodePtr
- generate_branch takes the destination as an offset into the code region,
and its far path uses that offset both to size the load and as the value
to load before `br`. So it previously jumped to a small address
erroneously.
Nothing emits... -
04:44 PM Ruby Revision ebc72e39 (git): ZJIT: A64: Load address, not offset for far jumps in emit_jmp_ptr
- Since CodePtr became an offset into the code region, the fallback in
emit_jmp_ptr for targets out of the range of `b` loads that offset
instead of the address before `br`, so it jumps to a small address.
Every side exit ends with a jump... -
04:44 PM Ruby Revision 91a08e0a (git): ZJIT: A64: Add stable_disasm() for snapshot tests
- Code that loads an address in the code region can't be snapshot as-is,
since the dummy CodeBlock is mapped at a different address every run and
the number of instructions it takes to load an address depends on it.
stable_disasm() collap... -
04:32 PM Ruby Bug #22521: `Ractor.shareable_proc` allows outer variables reassigned by loops, and silently keeps a stale value
- I found a related case, which I added to https://github.com/ruby/ruby/pull/19802 as a second commit since it is the same analysis (and both changes touch the same code). A variable assigned only once in the source is considered never rea...
-
04:19 PM Ruby Bug #22532: pthread_mutex_lock: Invalid argument (EINVAL) / SEGV in rb_threadptr_join_list_wakeup when a fiber blocked in Thread#join under a Fiber scheduler is never resumed
- Proposed fix: https://github.com/ruby/ruby/pull/19826
-
04:08 PM Ruby Bug #22532 (Open): pthread_mutex_lock: Invalid argument (EINVAL) / SEGV in rb_threadptr_join_list_wakeup when a fiber blocked in Thread#join under a Fiber scheduler is never resumed
- Thread#join links a struct rb_waiting_list waiter, allocated on the joining fiber's stack, into target_th->join_list. Only the rb_ensure clause (remove_from_join_list) ever unlinks it. Under a Fiber scheduler, a non-blocking fiber joinin...
-
03:53 PM Ruby Bug #22531 (Open): String#% with %s format string runs arbitrary code that can invalidate the argument array
- For example,
$a = Array.new(20) { "x" * 100 }
o = Object.new
def o.to_s = ($a.clear; GC.start; "o")
$a[0] = o
puts "%s %s %s" % $a
This crashes for me with a segfault.
`String#%` calls `rb_str_format_ary`... - 03:24 PM Ruby Revision ad336890 (git): ZJIT: Fold Float#== nil, Float#== true, Float#== false to false
- Same as https://github.com/ruby/ruby/pull/19594 (d1a7948529a44576d07afa4eb098963450323b33).
- 03:24 PM Ruby Revision 5dd8bbb0 (git): ZJIT: Add baseline tests for Float#== nil, true, false
- 03:24 PM Ruby Revision a3422a54 (git): ZJIT: Fold Integer#== true and Integer#== false to false
- Same as https://github.com/ruby/ruby/pull/19594 (d1a7948529a44576d07afa4eb098963450323b33).
- 03:24 PM Ruby Revision 1c42d595 (git): ZJIT: Add baseline tests for Integer#== true, false
- 12:00 PM Ruby Revision 1f2a4bd5 (git): [ruby/rubygems] Normalize require_relative targets before checking them against spec.files
- The extension `require_relative` validation added in RubyGems 4.1 resolves
the required path with a plain `File.join` on the requiring file's
directory. A path such as `require_relative "../foo"` in `lib/foo/bar.rb`
therefore became `lib... -
11:51 AM Ruby Revision 2aac3bcd (git): [ruby/json] Update extensions for `rb_len_t`
- (https://github.com/ruby/json/pull/1133)
* Update extensions for `rb_len_t`
* Split the conditions for each definition of the `rb_len_t` macro
Since the update to the Windows binaries used by `setup-ruby` has
stalled at an incomplete ... -
11:50 AM Ruby Revision 3dad454a (git): [ruby/rubygems] Merge pull request #10034 from smasry/yaml-emitter-block-scalar-indicators
- Fix `gem build` dropping leading indentation and trailing newlines from multi-line spec strings
https://github.com/ruby/rubygems/commit/d6308b9809
Hiroshi SHIBATA (3):
Compare what Psych reads back in the keep indicator test
... -
10:53 AM Ruby Revision 09658e85 (git): [ruby/rubygems] Reject a tab-separated nested mapping value in a gemrc
- Now that a tab after the colon separates a value, `key:\tfoo:\tbar` loads as the String "foo:\tbar", which the check for a second mapping value missed because it looked for a space only. Psych rejects such a line.
https://github.com/rub... -
10:53 AM Ruby Revision 420c7e01 (git): [ruby/rubygems] Fix the comment on why the BOM check is byte-wise
- Gem::Specification.from_yaml puts `--- ` in front of the input, so a BOM in gem metadata never reaches this check. The binary input it does see is checksums.yaml.
https://github.com/ruby/rubygems/commit/b38602e32c
Co-Authored-By: Claud... - 10:53 AM Ruby Revision 29353175 (git): [ruby/rubygems] Spec that Bundler loads a config with only `---` or a tab after the colon
- Both inputs made `Bundler::Settings#load_config` crash with a
NoMethodError on `inject`: the serializer returned nil for a file
containing only the document marker, which `bundle config unset` leaves
behind, and a String for `BUNDLE_PATH... - 10:53 AM Ruby Revision 210bf94e (git): [ruby/rubygems] Ignore a leading UTF-8 BOM when loading YAML
- `Gem::YAMLSerializer.load` kept a byte order mark at the start of the
document as part of the first mapping key, so `BUNDLE_PATH: vendor`
preceded by a BOM loaded as `{"BUNDLE_PATH"=>"vendor"}`, and when
the BOM preceded the `---` docum... - 10:53 AM Ruby Revision 9290799f (git): [ruby/rubygems] Treat a tab after a mapping colon as separation whitespace
- `Gem::YAMLSerializer.load` only recognized a space between a mapping
key's ":" and its value, so a line such as `BUNDLE_PATH:\tvendor` did
not match as a mapping entry and the whole line was returned as a
String. Bundler's `.bundle/confi... -
10:53 AM Ruby Revision 171a6252 (git): [ruby/rubygems] Stop parsing YAML at a document end marker
- Gem::YAMLSerializer read `...` as a scalar, so an empty document closed by it loaded as "..." rather than as an empty document. Psych reads only the first document, so the lines after the marker are dropped as well.
https://github.com/r... -
10:53 AM Ruby Revision f75e449b (git): [ruby/rubygems] Return {} from Gem::YAMLSerializer.load for an empty or null document
- Bundler 4.0 and older call Hash methods on what it returns for .bundle/config, so every command crashed on RubyGems 4.1 once that file held only `---` or `--- ~`. Gem::SafeYAML.safe_load keeps returning nil like Psych.
https://github.co... -
10:24 AM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Feature #18915] Introduce `AbstractMethodError` (koic)
* Matz previously decided that `AbstractMethodError` should inherit from `ScriptError`. A recent comment raises a concern that it behaves more like `NoMethodError`, which inher... -
06:48 AM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Feature #22530] Deprecate fractional day support for Date (jeremyevans0)
* Date's fractional day support is implemented inconsistently, and seems more an implementation detail of the initial Date/DateTime design then a deliberate d... -
04:32 AM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Misc #22506] Clarify read-only, lock and freeze in IO::Buffer (himura467)
* I'd like to confirm the proposed meanings of read-only, lock and freeze in IO::Buffer, so the implementation can follow them. -
09:33 AM Ruby Bug #22220: Performance regression when requiring `aws-sdk-ec2` in Ruby 4.0.6
- k0kubun (Takashi Kokubun) wrote in #note-6:
> ruby_4_0 commit:faa5caf1b734f371ce0ea0b1ae544b47d865e551.
Hi, may I clarify why 3.4 is marked as not needed? 3.4.11 includes the #22126 backport (commit:8a159ffbd6, merging commit:1f473ed... -
09:15 AM Ruby Revision 3dc4837b (git): Advance the Array iteration index in rb_len_t
- `rb_builtin_fixnum_inc` passed the incremented `rb_len_t` to `LONG2FIX`, which takes a `long`. On mswin64, where `long` is 32 bits, the index wrapped at 2**31, so `Array#each` read before the buffer and `Array#each_index` never finished ...
-
08:50 AM Ruby Revision 4cc5f72c (git): [ruby/rubygems] Fall back when the mirror host does not resolve
- `Socket.getaddrinfo` raised `SocketError` out of `Mirror#validate!`, although a mirror that cannot be resolved does not respond within the fallback timeout either.
https://github.com/ruby/rubygems/commit/32ba1ce0fb
Co-Authored-By: Clau... -
08:50 AM Ruby Revision 75e97df1 (git): [ruby/rubygems] Resolve an IPv6 literal mirror host without its brackets
- `URI#host` keeps the brackets of `http://[2001:db8::1]:9292`, which `Socket.getaddrinfo` cannot resolve.
https://github.com/ruby/rubygems/commit/147b5e0c93
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:50 AM Ruby Revision edcf4645 (git): [ruby/rubygems] Probe each mirror address only once
- Without a socket type `Socket.getaddrinfo` returns an entry for each of STREAM, DGRAM and RAW, so an unreachable mirror took three times `fallback_timeout` per address before falling back.
https://github.com/ruby/rubygems/commit/fc26d9d... -
08:50 AM Ruby Revision 5408d971 (git): [ruby/rubygems] Close the mirror probe socket even when the probe raises
- https://github.com/ruby/rubygems/commit/38525bc3d9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:50 AM Ruby Revision e58dcb09 (git): [ruby/rubygems] Treat an immediate connect failure as an unreachable mirror
- `connect_nonblock` raises `Errno::EHOSTUNREACH` right away when there is no route to the address, such as an IPv6 address on a host without IPv6 connectivity. Only `RuntimeError` was rescued, so `Mirror#validate!` raised instead of falli...
-
08:00 AM Ruby Revision c65a8e03 (git): Check the machine stack on the rb_funcall fast path
- The fast path added in 1ecda21366 skips the stack_check that rb_call0 does, so C recursion through rb_funcall did not raise SystemStackError on platforms that cannot catch a stack overflow in a signal handler, such as mswin.
Co-Authored... -
07:02 AM Ruby Feature #22244: `ruby -UU` should set both internal and external, `ruby -E` should print encoding list
- I'm not sure about a situation you emulate with `env -u LANG`.
> --help doesn't list -U. (The man page does)
Usually with LANG environment variable, it is automatically set.
Another reason is that matz says `--help` should be show... - 06:48 AM Ruby Revision f1c7762d (git): [DOC] Update bundled gems list at dd0ff240523781569ade1d438e16df
-
06:39 AM Ruby Feature #22530 (Open): Deprecate fractional day support for Date
- I think we should deprecate fractional day support in Date. This has been discussed in #21264 as well as in the PR to convert from the current C implementation to a Ruby implementation (https://github.com/ruby/date/pull/155#pullrequestre...
-
06:33 AM Ruby Feature #22501: Optimize `Hash.new` and `String.new` in `opt_new`
- The intended behavior is that a refinement of `#initialize` does not affect `new`.
That said, I'm fine with making it implementation-defined if that helps optimizations like `opt_new`. -
05:51 AM Ruby Revision dd0ff240 (git): Check array modifiability in Array#fill (#19821)
- Array#fill yields to a block and the block code may freeze the array.
We need to check when iterating otherwise we'll end up mutating a frozen
array
[Bug #22529] -
05:34 AM Ruby Feature #22466: Allow disabling the shape redblack cache via RUBY_SHAPE_REDBLACK_CACHE=disable
- jeremyevans0 (Jeremy Evans) wrote in #note-2:
> alanwu (Alan Wu) wrote in #note-1:
> ...
I think adding such a feature makes sense. I'm surprised it isn't resilient against getting full (I know I tested it at one point, but maybe I mad... -
05:25 AM Ruby Misc #22506: Clarify read-only, lock and freeze in IO::Buffer
- kou (Kouhei Sutou) wrote in #note-3:
> Open question 1:
> ...
Thanks. I wrote question 1 with `rb_io_buffer_new` in mind, where the C code that creates the buffer owns the memory and invalidates the buffer before releasing it. The same... -
04:07 AM Ruby Misc #22506: Clarify read-only, lock and freeze in IO::Buffer
- Open question 1:
This is about the `IO::Buffer.for(str) {|buffer| buffer.freeze}` case, right? I think it should behave the same as `File.open(path) {|file| file.freeze}`:
* `freeze` is allowed inside the block
* The block-end can... -
04:58 AM Ruby Revision 927ee743 (git): Stop running `go clean -modcache` in `bundle gem --ext=go` specs
- `bundle gem --ext=go` only writes templates and never runs go, so the specs leave nothing in the module cache. With `GOMODCACHE` set in the environment, the hook removed the developer's own module cache after every example and timed out....
-
04:26 AM Ruby Revision afa0153b (git): Describe the clang-cl, GNU make and mimalloc builds of mswin in NEWS
- Of the new ways to build mswin, NEWS mentioned only YJIT.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:53 AM Ruby Bug #22518 (Closed): String#unpack("m") computes the buffer size with an overflowing multiplication
- Applied in changeset commit:git|9deaec155c201ac11342adbd416bfeba42031d27.
----------
Compute the buffer size of unpack("m") without overflow
(send - s + 3) * 3 / 4 overflowed for an input of about 700 MB where
long is 32-bit. Divide be... -
03:52 AM Ruby Revision 9deaec15 (git): Compute the buffer size of unpack("m") without overflow
- (send - s + 3) * 3 / 4 overflowed for an input of about 700 MB where
long is 32-bit. Divide before multiplying, as each 4 characters decode
to at most 3 bytes.
[Bug #22518]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:52 AM Ruby Revision 7ec50764 (git): Check that the recompiled regexp has the same number of groups
- The registers are allocated for the original regexp, so if the regexp
recompiled for the string's encoding has a different number of groups,
Onigmo would reallocate them. Check it when recompiling and stop with
rb_bug if they differ.
[B... -
03:19 AM Ruby Revision 8151145b (git): [DOC] Fix block precedence description and add ::, [] to the table
- A { ... } block binds to the nearest method call rather than having
priority below all listed operations, so remove the "{ } blocks" row
and describe only the relative binding between { ... } and do ... end,
with an example.
Also add ::... - 01:36 AM Ruby Revision 6214ace5 (git): Fix malformed size_t overflow predicates in internal/bits.h
- ADD_OVERFLOW_SIZE_P and SUB_OVERFLOW_SIZE_P, added in b980bb0572,
are missing a comma before SIZE_MAX:
ADD_OVERFLOW_UNSIGNED_INTEGER_P(a, b SIZE_MAX)
SUB_OVERFLOW_UNSIGNED_INTEGER_P(a, b SIZE_MAX)
so the first invokes a 3-argum... -
12:02 AM Ruby Bug #22519 (Closed): Incompatibility between parse.y and Prism in the encoding of interpolated strings
- Applied in changeset commit:git|7a07e456e4bc5e68dbe56cf943fa0ef93d34016a.
----------
Fix up interpolation in prism compiler
When an interpolation is the first element of a string and the
interpolated values have different encodings, we... -
12:02 AM Ruby Revision 7a07e456 (git): Fix up interpolation in prism compiler
- When an interpolation is the first element of a string and the
interpolated values have different encodings, we need an empty
string at the start to get the negotiation correct.
[Bug #22519]
11/09/2026
-
11:46 PM Ruby Revision deaea318 (git): Avoid copying owned hashes when compiling hash splats in prism compiler
-
11:46 PM Ruby Revision 72211ced (git): Use merge_bang_ptr for zsuper keywords like compile.c
-
11:46 PM Ruby Revision 40f97eee (git): Remove unused core_hash_coerce and m_core_hash_coerce
-
11:46 PM Ruby Revision 4077d7ec (git): Merge leading hash splat into new hash
- When a hash literal starts with a ** element, we need to push a
newhash 0 so that we don't use the user's value as the starting
hash. Otherwise we have problems with default values, compare by
identity, and potentially corrupting results... -
11:22 PM Ruby Bug #22528 (Open): rb_enc_cr_str_buf_cat frees the buffer with the wrong size when an empty string adopts a wide encoding
- When a UTF-16 or UTF-32 string is appended to an empty string whose buffer has no room for the wider terminator, the old buffer is freed with a size computed from the new terminator length.
```ruby
s = ("a" * 1000).encode("UTF-16LE")... -
11:18 PM Ruby Bug #22519: Incompatibility between parse.y and Prism in the encoding of interpolated strings
- https://github.com/ruby/ruby/pull/19815
-
01:17 PM Ruby Bug #22519: Incompatibility between parse.y and Prism in the encoding of interpolated strings
- I found https://github.com/ruby/ruby/pull/11728. I'm guessing that introduced this behaviour, it used to always emit the empty string.
-
11:36 AM Ruby Bug #22519: Incompatibility between parse.y and Prism in the encoding of interpolated strings
- Yes, Parse.y puts an extra empty string with the final encoding:
```
0003 putobject ""
0005 getlocal_WC_0 x@0
0007 dup
0008 objtostring <calldata!mid... -
10:47 AM Ruby Bug #22519 (Closed): Incompatibility between parse.y and Prism in the encoding of interpolated strings
- There seems to be an incompatibility between parse.y and Prism in the encoding of interpolated strings.
```ruby
# in a script file
x = 1
p "#{x}#{x}".encoding # parse.y: #<Encoding:UTF-8> prism: #<Encoding:US-ASCII>
a = "abc".... -
10:47 PM Ruby Revision 23ace0e8 (git): [ruby/rubygems] Probe socket errors via SO_ERROR in TCPSocketProbe
- Calling connect_nonblock a second time to confirm a non-blocking
connect is not portable. On BSD-based systems such as macOS the second
connect returns EISCONN even after the asynchronous connect failed with
ECONNREFUSED, so a down mirro... -
10:46 PM Ruby Bug #22527: Implicit super with a reassigned keyword rest writes into the shared frozen empty hash
- That's likely my bad, I'll have a look.
-
10:07 PM Ruby Bug #22527 (Closed): Implicit super with a reassigned keyword rest writes into the shared frozen empty hash
- `zsuper` passes `rest.dup` as the left operand of the keyword merge. If the method reassigns its keyword-rest local, that value can be anything. Both compilers reach this through `merge_bang_ptr`, where `dup` is false, so it inserts into...
-
10:28 PM Ruby Revision e54d3bb7 (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>
(cherry picked from commit 349d9d65bc... - 10:28 PM Ruby Revision d2639df0 (git): Socket.tcp_with_fast_fallback: Fix typo in getaddrinfo family
- ADDRESS_FAMILIES[:family_name] used the Symbol :family_name as the key
instead of the local variable family_name, so the address family was
always nil. This is a follow-up to b896f80598 [Bug #21512].
Co-Authored-By: Claude Opus 5.5 <nor... -
10:28 PM Ruby Revision e948d568 (git): Fix thread leaks
- Wait for terminated threads to finish.
(cherry picked from commit c091c186e425b659f7aa88ffeac20a41a27b0582) -
10:28 PM Ruby Revision 995a67cc (git): Report the IPv4 resolution error after EAI_ADDRFAMILY for IPv6
- EAI_ADDRFAMILY left the IPv6 result looking successful, so a later IPv4 resolution error was not recorded and TCPSocket.new raised Socket::ResolutionError with error_code 0. When the IPv6 notification failed, EAI_ADDRFAMILY was recorded ...
-
10:28 PM Ruby Revision 95e68261 (git): Keep the getaddrinfo result when the resolver notification fails
- The errno of the failed write(2) overwrote err, so the main thread took it for an EAI code, discarding addresses that had been resolved or raising with an unrelated message.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry ... -
10:28 PM Ruby Revision 8ee97090 (git): Stop reading the resolver pipe on EOF and errors
- The loop only left on EAGAIN, so EOF or a read error other than EINTR spun forever while holding the GVL.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 7a770e26b21a12b03663e4b34cae7552859189ff) -
10:28 PM Ruby Revision 890710f1 (git): Watch fd 0 when it is the only connection attempt
- When stdin is closed, a socket can get fd 0, and nfds stayed 0 if it was the only fd to wait for, so select never reported the connection.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 903930335dd6a75e... -
10:28 PM Ruby Revision 9b1c99a2 (git): Forget the connection attempt fd when getsockopt fails
- The fd was closed but left in connection_attempt_fds, so it was passed to the next select and closed again in the cleanup, possibly after the number had been reused.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked f... -
10:28 PM Ruby Revision a4398676 (git): Don't skip the next connection attempt after a failed one
- remove_connection_attempt_fd shifts the remaining fds down, so advancing the index skipped the fd moved into the current slot. A connection that had already succeeded could go unnoticed until the next select, and a new attempt was starte...
-
10:28 PM Ruby Revision 4762ff19 (git): Read has_syserr under the lock
- The main thread polls has_syserr on every loop while the resolver thread may be setting it, so read it with the lock the resolver thread holds. Once it is seen set, err and ai were written before it and can be read as before.
Co-Authore... -
10:28 PM Ruby Revision e6395340 (git): Close the resolver notification pipe under the lock
- The resolver thread checks notify and writes to it while holding the lock. Closing it outside the lock let the thread write a byte to an unrelated file that had reused the fd number.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>... - 10:28 PM Ruby Revision e5eddc8d (git): Fix: Do not fast_fallback if local_port is explicitly specified (#15732)
- `fast fallback` cannot be used with explicitly specified local port,
because concurrent binds to the same `local_host:local_port`
can raise `Errno::EADDRINUSE`.
This issue is more likely to occur on hosts with `IPV6_V6ONLY` disabled,
be... -
10:09 PM Ruby Revision c0013b35 (git): [ruby/prism] Do not leave buffer in a bad state after bad allocation
- https://github.com/ruby/prism/commit/a53bf1eec6
-
10:05 PM Ruby Bug #22526 (Open): parse.y m(**h, **{})
- In parse.y `foo(**h, **{})` passes `h` through as if it were `foo(**h)`
```ruby
def kw(**k) = k
p kw(**Hash.new(5), **{}).default # expected nil, got 5
p kw(**Hash.new { 7 }, **{})[:x] # expec... -
09:56 PM Ruby Revision 99e9862a (git): [ruby/prism] Reject trailing content after a heredoc opener backslash
- https://github.com/ruby/prism/commit/5e3ed03cb5
-
09:56 PM Ruby Revision 5903fbe2 (git): [ruby/prism] Warn on all whitespace in control and meta escapes
- https://github.com/ruby/prism/commit/4c2cf2af94
-
09:56 PM Ruby Revision 4021f870 (git): [ruby/prism] Match parse.y when dedenting lines continued by control and meta escapes
- https://github.com/ruby/prism/commit/24c791c707
-
09:56 PM Ruby Revision 062ebd8f (git): [ruby/prism] Treat CRLF as a newline in control and meta escapes
- https://github.com/ruby/prism/commit/1be1f4cf5b
-
09:56 PM Ruby Revision 553b492c (git): [ruby/prism] Read regexp options after a pending heredoc body
- https://github.com/ruby/prism/commit/c376155add
-
09:56 PM Ruby Revision 1c0dc28b (git): [ruby/prism] Flush pending heredocs at newline delimiters of %r, %W, and %I
- https://github.com/ruby/prism/commit/42f8757350
-
09:56 PM Ruby Revision 5b6de433 (git): [ruby/prism] Ensure we always account for heredocs
- Even when we have escapes that contain newlines.
https://github.com/ruby/prism/commit/5673539fa3 -
09:56 PM Ruby Revision d3f24ecf (git): [ruby/prism] Always check monotonic line offsets
- https://github.com/ruby/prism/commit/c9aae6910d
- 09:34 PM Ruby Revision a5ea2cd0 (git): Skip zeroing page bodies the pool knows read as zero
- heap_add_page memsets a new page's slot area so free slots read as
T_NONE, which faults in all 64KiB of the body. A page that the bump
allocator fills from free_region only touches the slots it hands out, so
for a small Ractor most of t... -
09:31 PM Ruby Revision 9553b671 (git): Clamp the ar_table bound to RHASH_AR_TABLE_MAX_SIZE everywhere
- Since "Dynamic ar_table size" (60a4894bdb, GH-18345) a hash's ar_table
capacity comes from its slot size, and RHASH_AR_TABLE_MAX_BOUND clamps
it to RHASH_AR_TABLE_MAX_SIZE on 32-bit platforms only. There the slot
sizes do not line up wi... - 08:40 PM Ruby Revision 7041d9e6 (git): ZJIT: End blockparamproxy and block profiling experiments (#17852)
- We don't use the counters for much these days.
- 08:28 PM Ruby Revision 98e59fa6 (git): Dont take the VM lock or do re-resolution on cached method_missing
-
07:22 PM Ruby Bug #22525 (Open): Ractor.shareable_proc sees nil for a block parameter of the method which was not read yet
- When a shareable Proc reads a block parameter (`&b`) of the enclosing method, it gets `nil` if the method did not read `b` before. It does not raise `Ractor::IsolationError` even when the block is not shareable, and it loses the block ev...
- 05:24 PM Ruby Revision c276ef0a (git): [Backport #22504] Fix empty keyword hash handling for Method procs
- https://github.com/ruby/ruby/pull/19607
https://bugs.ruby-lang.org/issues/22504 - 05:18 PM Ruby Revision 7c0547b3 (git): Concurrent set fix when encountering garbage obj in find_or_insert
- When CASing the garbage key to EMPTY, if we succeed we should decrease
set->size because we're trying to re-insert into the same slot right after.
The insertion increases set->size if it succeeds. This issue can lead to
set->size being o... -
05:16 PM Ruby Revision 67ddc4a2 (git): st.c: recompute MAX_POWER2
- Remove the entries that would result in an overflow if allocated.
[Bug #22512] -
05:01 PM Ruby Revision 0e258742 (git): [ruby/openssl] Use `_ex` versions for `time_t`
- https://github.com/ruby/openssl/commit/fc40bf9f39
-
05:01 PM Ruby Revision 504689bd (git): [ruby/openssl] Fix conversions of time
- Use the dedicated macro `NUM2TIMET` for `time_t`. `long` is not
enough for 64-bit `time_t` on 32-bit `long` platforms.
https://github.com/ruby/openssl/commit/90aca2a731 -
04:50 PM Ruby Revision 02471f1b (git): [ruby/openssl] x509store: fix double free if warning raises in verify callback
- Clear the temporary StoreContext before calling rb_warn() instead of
after it. rb_warn() can raise, e.g. if Warning.warn is overridden, and
the StoreContext would then free the X509_STORE_CTX it only borrows.
https://github.com/ruby/ope... -
04:35 PM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Feature #22523] define_method should make its body shareable when possible, using Ractor.shareable_proc semantics (eregon)
* As proposed in #21557, and like #22444 did for `Ractor.new`: `define_method`/`define_singleton_method` make... -
02:27 PM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Feature #22520] `{Proc,Method,UnboundMethod}#syntax_tree` should return the block node, not the enclosing call (eregon)
* `#syntax_tree` (#21795, experimental, not yet released) returns the call the block is passed to (`CallNode`, ... -
04:29 PM Ruby Bug #22524 (Open): Calling a shareable Proc overwrites $~ and $_ of a Thread.new/Fiber.new block
- Calling a shareable Proc which sets `$~` or `$_` directly from the block of `Thread.new` or `Fiber.new` overwrites the `$~` and `$_` of that block:
```ruby
set = Ractor.shareable_proc { |s| s =~ /(.)/; $_ = s; nil }
p Thread.new {... -
04:12 PM Ruby Feature #22444: Ractor.new should use Ractor.shareable_proc semantics for the block
- => https://bugs.ruby-lang.org/issues/22523
-
04:11 PM Ruby Feature #22523 (Open): define_method should make its body shareable when possible, using Ractor.shareable_proc semantics
- #22444 made `Ractor.new` use the `Ractor.shareable_proc` semantics from #21557 for its block, and there was some interest in doing the same for `define_method` ([#22444#note-5](https://bugs.ruby-lang.org/issues/22444#note-5)).
That was ... -
03:52 PM Ruby Bug #22522 (Open): `Ractor.shareable_proc` silently drops the block of the method for `block_given?`, `defined?(yield)` and `super`
- `yield` in a block calls the block of the enclosing method. A shareable Proc cannot keep that block: the block (or the Proc it becomes) has its own `self` and environment, which are generally not shareable, and the copied environment of ...
-
03:52 PM Ruby Bug #22517 (Closed): Some String methods return a UTF-16/32 string without room for its terminator
- Applied in changeset commit:git|73db2bd4e98cab1e28f04f14cefd660bb5b75b84.
----------
Allocate the result of String#reverse with the terminator of its encoding
rb_str_reverse allocated the result with room for a 1-byte terminator
and th... -
09:09 AM Ruby Bug #22517: Some String methods return a UTF-16/32 string without room for its terminator
- https://github.com/ruby/ruby/pull/19794
-
09:07 AM Ruby Bug #22517 (Closed): Some String methods return a UTF-16/32 string without room for its terminator
- Case mapping, `String#reverse`, `String#succ`, `String#scrub`, `String#slice!`, string interpolation and `String#-@` can return a UTF-16 or UTF-32 string allocated with room for a 1-byte terminator only, so filling the 2- or 4-byte termi...
-
03:51 PM Ruby Revision c6cf749f (git): Assert that str_enc_copy_direct is used on a string with room for the terminator
- str_enc_copy_direct does not adjust the room for the terminator, so the
string must already have room for the terminator of the new encoding.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:51 PM Ruby Revision 8d2bec3b (git): Allocate the result of String#slice! with the terminator of its encoding
- [Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:51 PM Ruby Revision c2f4312b (git): Allocate a frozen copy of a shareable string with the terminator of its encoding
- str_new_frozen_buffer copied a shareable string with room for a 1-byte
terminator, so String#-@ on a shareable UTF-16 or UTF-32 string
returned a string without room for its terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <nor... -
03:51 PM Ruby Revision 6b6d75fd (git): Use rb_enc_associate_index to set the encoding in ASCII-only case mapping
- rb_str_ascii_casemap set the encoding of the result with str_enc_copy,
which does not adjust the room for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:51 PM Ruby Revision 6b35fcfe (git): Use rb_enc_associate_index to set the encoding of interpolated strings
- rb_str_concat_literals set a UTF-16 or UTF-32 encoding with
str_enc_copy_direct or rb_enc_set_index, which do not adjust the room
for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:51 PM Ruby Revision 00492f24 (git): Allocate the result of case mapping with the terminator of its encoding
- rb_str_casemap allocated the result with room for a 1-byte terminator
and then set a UTF-16 or UTF-32 encoding with str_enc_copy_direct, which
does not adjust the room for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <n... -
03:51 PM Ruby Revision 73db2bd4 (git): Allocate the result of String#reverse with the terminator of its encoding
- rb_str_reverse allocated the result with room for a 1-byte terminator
and then set a UTF-16 or UTF-32 encoding with str_enc_copy_direct, which
does not adjust the room for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <n... -
03:51 PM Ruby Revision a60de9cf (git): Keep room for the terminator in the result of String#scrub
- enc_str_scrub set the encoding of the result without adjusting the room
for the terminator.
[Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:51 PM Ruby Revision fc9d1cd6 (git): Allocate the result of String#succ with the terminator of its encoding
- [Bug #22517]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:51 PM Ruby Bug #22521 (Open): `Ractor.shareable_proc` allows outer variables reassigned by loops, and silently keeps a stale value
- `Ractor.shareable_proc` must reject blocks reading an outer variable which may be reassigned, because the shareable Proc copies the variable's value ([Feature #21557]). The "Loop Cases" section of #21557 lists cases which should be `Ract...
-
03:36 PM Ruby Bug #22465: Method lookup cache invalidation loop from Kernel#extend
- For JITs, and in general anything with a slower cache invalidation path, I am interested in having "invalidate downward" be a possibility, even at the expense of more memory. I think ZJIT would especially benefit from opting in to using ...
-
02:47 PM Ruby Revision 7e5d8828 (git): [DOC] Doc for MatchData#values_at (#19761)
-
02:21 PM Ruby Feature #22520 (Open): {Proc,Method,UnboundMethod}#syntax_tree should return the block node, not the enclosing call
- ## Summary
Currently, when a `Proc` (or a `Method` defined with `define_method`) comes from a block, `#syntax_tree` returns the call that owns the block (`CallNode`, `SuperNode`, `ForwardingSuperNode`), not the block. I propose return... -
01:02 PM Ruby Revision 7f64df39 (git): Check the size before growing the output buffer of transcoding
- Raise ArgumentError when doubling `len + max_output` in
more_output_buffer would exceed RB_LEN_MAX.
Reported-by: RelunSec <relunsec@insitetech.jp>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:56 PM Ruby Revision da460a89 (git): Do not swallow an exception raised while retrying fork
- When fork(2) fails with EAGAIN, rb_fork_ruby sleeps for a second and
retries. It always passed its own status to handle_fork_error, so the
sleep was wrapped in rb_protect, and the caught exception was dropped
when the caller did not ask ... -
12:08 PM Ruby Misc #22506: Clarify read-only, lock and freeze in IO::Buffer
- Eregon (Benoit Daloze) wrote in #note-1:
> A frozen buffer might still be moved (by the GC) though, which needs to be prevented during native calls (e.g. `write(2)`).
> ...
Thanks. As far as I understand, INTERNAL and MAPPED memory, an... -
12:00 PM Ruby Bug #22494 (Closed): Regexp search misses a match when an assertion precedes a leading .*
- Applied in changeset commit:git|dbfe6bac2285ea61a76a2dec970cf859f5a8fef4.
----------
Do not treat a leading .* after an assertion as an implicit anchor
When an assertion such as ^, \b or a lookahead precedes the leading .*, it may fail... -
11:59 AM Ruby Revision dbfe6bac (git): Do not treat a leading .* after an assertion as an implicit anchor
- When an assertion such as ^, \b or a lookahead precedes the leading .*, it may fail at the start position and hold later, so the search must try later positions.
[Bug #22494] -
11:32 AM Ruby Bug #22492 (Closed): String#rindex misses a match with a leading .* in multiline mode
- Applied in changeset commit:git|d55b67dfa3c1f94a4855381b400da7aa987bb5be.
----------
Do not use the leading .* shortcut in a backward search
A match at an earlier position does not imply one at the start position, so String#rindex with... -
11:32 AM Ruby Revision d55b67df (git): Do not use the leading .* shortcut in a backward search
- A match at an earlier position does not imply one at the start position, so String#rindex with /.*.../m missed matches.
[Bug #22492] -
09:58 AM Ruby Bug #22518: String#unpack("m") computes the buffer size with an overflowing multiplication
- https://github.com/ruby/ruby/pull/19797
-
09:55 AM Ruby Bug #22518 (Closed): String#unpack("m") computes the buffer size with an overflowing multiplication
- `(send - s + 3) * 3 / 4` overflows where long is 32-bit: an input of about 700 MB is rejected, and an input of about 1.4 GB makes it allocate a buffer too small.
```ruby
# On a platform where long is 32-bit (tested with a 32-bit buil... -
09:46 AM Ruby Revision 05e951b6 (git): [ruby/mmtk] Exclude flaky URI linear time test
- the test_merge_path_dot_dot_removal_is_linear test bases its time limit
on the CPU time of the calling thread.
But the limit is actually checked against wall clock time so GC pauses
count against it - despite that work happening on othe... -
09:42 AM Ruby Revision bade2d0f (git): Fall back to the general path when the joined length overflows
- ary_join_fast computed the length of the result without checking for
overflow, and could allocate a buffer shorter than it copied into.
Leave such an array to the general path, which checks the length.
Co-Authored-By: Claude Opus 5.5 <n... -
08:17 AM Ruby Bug #22516: Emacs-Mule accepts a code point whose first byte is below 0x80 in format("%c")
- https://github.com/ruby/ruby/pull/19792
-
08:13 AM Ruby Bug #22516 (Open): Emacs-Mule accepts a code point whose first byte is below 0x80 in format("%c")
- `format("%c")` in Emacs-Mule accepts a code point that `Integer#chr` rejects, and writes more bytes than it allocated.
```ruby
fmt = ("a" * 100 + "%c").force_encoding("Emacs-Mule")
p format(fmt, 0x01018000)
# expected: ArgumentEr... -
07:44 AM Ruby Revision 4f0a0a0e (git): [ruby/zlib] Test Zlib::Deflate#params after a failed deflate
- The chunked break test does not reach the reset of next_in on the error path.
https://github.com/ruby/zlib/commit/58f7956b38
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:44 AM Ruby Revision 24dffafb (git): [ruby/zlib] Clear next_in once the rest of the input is buffered
- Zlib::Deflate#params after breaking out of the block of #deflate compressed the input left by the break a second time, and the output no longer inflated to the original. Zlib::Inflate#inflate now checks the buffered input instead of avai...
-
07:27 AM Ruby Feature #22513: Allow Kernel#extend and Module#prepend to take a block
- I personally don't like this much. Yes `klass.prepend(Module.new {})` is a pattern found in the while, but generally it's used for quick monkey patches that aren't committed, for anything that is here to stay, it's much preferable to use...
-
07:23 AM Ruby Misc #22515 (Rejected): Add tests for hash#sort_by
- Not sure if you intended to link to a patch of some sort but it's not there.
Anyway, you are probably best to submit a PR to https://github.com/ruby/spec/ -
03:58 AM Ruby Misc #22515 (Rejected): Add tests for hash#sort_by
- I noticed Hash#sort_by had no test coverage, so I added a few tests for it:
``` ruby
def test_sort_by
assert_equal({ zebra: 90, apple: 90, banana: 85,c: 3, a: 1, b: 2 }.sort_by { |key, value| [ key, value] }.to_h,{a: 1, app... -
07:12 AM Ruby Revision 39c3c361 (git): [ruby/json] Java generator: call as_json only once for invalid
- strings
(https://github.com/ruby/json/pull/1127)
When a string with invalid encoding is generated in strict mode, the
Java and pure-Ruby generators call as_json on it. If as_json returned
a Symbol, the Symbol was turned back into the sa... -
06:44 AM Ruby Revision f10a4688 (git): [ruby/rubygems] Keep Gem::DependencyList#spec_predecessors
- contrast-agent still calls it, so removing it would break that gem.
https://github.com/ruby/rubygems/commit/9ae77ff7b6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:44 AM Ruby Revision 9d2421f4 (git): [ruby/rubygems] Delete `Gem::Resolver::DependencyRequest#implicit?`
- - This was added in https://github.com/ruby/rubygems/commit/49270ff8c7fd in 2013
alongside `explicit?`, but never used anywhere.
https://github.com/ruby/rubygems/commit/8af4bf3ec5 -
06:44 AM Ruby Revision e3232938 (git): [ruby/rubygems] Delete `Gem::Commands::SourcesCommand#remove_cache_file`
- - This was used in four places until
https://github.com/ruby/rubygems/commit/736ba628edc4 in 2011.
https://github.com/ruby/rubygems/commit/dbd215ea94 -
06:44 AM Ruby Revision 86c56b74 (git): [ruby/rubygems] Delete `Gem::Command#merge_options`
- - The final use of this - `install_command.merge_options(options)` - was
removed in https://github.com/ruby/rubygems/commit/497ae9a52fa9 in 2008.
https://github.com/ruby/rubygems/commit/7607d75d6a -
06:44 AM Ruby Revision 1be0e985 (git): [ruby/rubygems] Delete `Gem::DependencyList#{remove_specs_unsatisfied_by,spec_predecessors}`
- - `remove_specs_unsatisfied_by` has been unused since
https://github.com/ruby/rubygems/commit/544c3dc995e0 in 2019.
- `spec_predecessors` has been unused since
https://github.com/ruby/rubygems/commit/4cd3f98602b6 in 2008.
https://gi... -
06:44 AM Ruby Revision c70fddf0 (git): [ruby/rubygems] Delete `Gem::DependencyInstaller#install_development_deps`
- - This was only ever an argument to `AvailableSet#to_request_set`,
and https://github.com/ruby/rubygems/commit/7e35930340b1 in 2014 removed both.
https://github.com/ruby/rubygems/commit/6c758625bf -
06:44 AM Ruby Revision 37ce1d9d (git): [ruby/rubygems] Delete `Gem::AvailableSet#{to_request_set,inject_into_list}`
- - `to_request_set` has been unused since
https://github.com/ruby/rubygems/commit/7e35930340b1 in 2014.
- `inject_into_list` has been unused since
https://github.com/ruby/rubygems/commit/544c3dc995e0 in 2019.
https://github.com/ruby/... -
05:53 AM Ruby Revision 2102a46d (git): [ruby/rubygems] Fix negated include_gems for gem names with dashes
- Spec gems with a dash in their name put their entrypoint under a slash path since https://github.com/ruby/rubygems/commit/5c2d1653726, but only the positive matcher was updated to require it. The negated matcher still required the dashed...
-
05:21 AM Ruby Revision 0c36bdb3 (git): [ruby/rubygems] Prune even when bundle clean cannot remove everything
- The prune setting was skipped once clean raised, though everything removable is gone by then.
https://github.com/ruby/rubygems/commit/afe037fb1a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
05:21 AM Ruby Revision c4f3cece (git): [ruby/rubygems] Only warn when the clean after install or update leaves files behind
- With the clean setting enabled, a gem that could not be removed made a successful bundle install or bundle update exit with an error.
https://github.com/ruby/rubygems/commit/b57e20cfca
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic... -
05:21 AM Ruby Revision 6736d7a8 (git): [ruby/rubygems] Report git cache and extension directories bundle clean cannot remove
- They were still removed with FileUtils.rm_rf, which ignores the same permission errors that unused gem directories now report.
https://github.com/ruby/rubygems/commit/2209694856
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
05:21 AM Ruby Revision 7782268a (git): [ruby/rubygems] Keep cleaning past paths that bundle clean cannot remove
- Raising on the first failure left later gem directories, gemspecs and binstubs behind, so the gemspec of a gem whose directory was already removed stayed installed. Now everything removable is removed, only those paths are reported as re...
-
05:21 AM Ruby Revision 8a21d9d9 (git): [ruby/rubygems] Treat gem directories that vanish before bundle clean as removed
- FileUtils.rm_rf ignored a directory another process had already deleted, but rm_r raises ENOENT, which reached the user as an unexpected error report.
https://github.com/ruby/rubygems/commit/dd34f3791f
Co-Authored-By: Claude Opus 5.5 <... - 05:21 AM Ruby Revision 9bc016fa (git): [ruby/rubygems] Report permission errors from bundle clean
- https://github.com/ruby/rubygems/commit/82a35c358e
-
05:19 AM Ruby Revision 0a3bdf27 (git): [ruby/rubygems] Only discard git checkouts without a working tree when copy_to fails
- The cleanup for a failed submodule update removed the destination even when it was a complete checkout. With a local override the install path is the user's own working copy, so `bundle install --redownload` deleted it together with its ...
-
04:08 AM Ruby Revision b980bb05 (git): Add overflow predicates for `size_t`
-
04:08 AM Ruby Revision 877b6a20 (git): Add overflow predicates for `rb_len_t`
-
04:08 AM Ruby Revision f74e61ab (git): Remove the deprecated `rb_mul_size_overflow`
- In the only usage `glob_alloc_size`, use `rbimpl_size_mul_or_raise`
instead. -
03:43 AM Ruby Revision d848052e (git): [ruby/zlib] Do not raise Zlib::BufError for a repeated flush with no new input
- zlib's deflate() returns Z_BUF_ERROR when it is asked to flush again without having consumed any input since the previous flush of the same or higher rank, and the binding treated every code other than Z_OK and Z_STREAM_END as fatal. Not...
-
03:34 AM Ruby Revision 9eca0a8f (git): [ruby/resolv] Omit Windows and MinGW platforms with with_udp_and_tcp
- https://github.com/ruby/resolv/actions/runs/12021339854/job/33511655994?pr=64
```
=> 705: with_udp_and_tcp('127.0.0.1', 0) do |u1, t1|
706: with_udp_and_tcp('127.0.0.1', 0) do |u2,t2|
707: u2.close # XXX: u... -
03:34 AM Ruby Revision 37123dbc (git): test/resolv/test_dns.rb: Keep `UDPSocket`s until a free port is found
- Follow up to 589f1978d8c368b8eccf34453463ad46a58d36da
I suspect `UDPSocket.new` grabs the same port number because they are
closed at each trial. -
03:34 AM Ruby Revision acc3cd04 (git): mingw environment can't bind free port with 10 times. We should omit it instead of test failure.
- ```
1) Error:
TestResolvDNS#test_multiple_servers_with_timeout_and_truncated_tcp_fallback:
Errno::EACCES: Permission denied - bind(2) for "127.0.0.1" port 59677
D:/a/ruby/ruby/src/test/resolv/test_dns.rb:78:in 'TCPServer#initi... -
03:34 AM Ruby Revision 098d7276 (git): [ruby/resolv] test_dns: Fix failure on Windows
- (https://github.com/ruby/resolv/pull/58)
test_dns: Fix failure on Windows
1. Switch to #with_udp_and_tcp helper method for EACCES retries on Windows;
the given UDP socket is unnecessary though.
2. Using 127.0.0.1 should be fine, as ... - 03:34 AM Ruby Revision bff49be1 (git): [ruby/resolv] Add an explicit with_udp_and_tcp helper to test_dns.rb
- This helper tries to bind UDP and TCP sockets to the same port, by
retrying the bind if the randomly-assinged UDP port is already taken in
TCP. This fixes a flaky test.
[Bug #20403]
https://github.com/ruby/resolv/commit/3d135f99d9 -
02:49 AM Ruby Bug #22504: Empty keyword hash mishandled when calling a Method proc through the C API
- Backport PRs are ready:
- [3.3](https://github.com/ruby/ruby/pull/19723)
- [3.4](https://github.com/ruby/ruby/pull/19781)
- [4.0](https://github.com/ruby/ruby/pull/19782) - 02:35 AM Ruby Revision 5e9b68fa (git): [DOC] Update bundled gems list at 15fcccd57d5cccb23ff1d53f9680db
- 02:34 AM Ruby Revision 15fcccd5 (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.336.0` | `1.338.0` |
| [github/codeql-action/init](https://github... -
02:00 AM Ruby Revision 977cd8d3 (git): wbcheck: Report wb_protected in object metadata
- Fixes TestObjSpace#test_dump_flags_wb_protected.
-
02:00 AM Ruby Revision c8cd7926 (git): wbcheck: Count every full GC in GC.count
- Previously only GC.start incremented the count, so GCs triggered by the
allocation threshold or GC.stress were invisible. This broke
test_gc_stress_on_obj_allocation and the TestTDataNonThreadSafeFree
tests, which use GC.count to tell wh... -
02:00 AM Ruby Revision 1ece51c6 (git): Only take barrier when GC is enabled
-
02:00 AM Ruby Revision 6d2599b5 (git): Implement latest_gc_info and total_allocated_slots
- 12:59 AM Ruby Revision 60306bf2 (git): Update bundled gems list as of 2026-11-09
-
12:46 AM Ruby Revision 1ca9c04a (git): test-bundled-gems.rb: Refer to BundledGem.build for the prism templates
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
12:46 AM Ruby Revision 98f42f8c (git): test-bundled-gems.rb: Generate the templated files of prism
- A released prism is tested in the checkout of its tag, which lacks the generated files that BundledGem.build creates only for a pinned revision.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:16 AM Ruby Bug #21663 (Closed): IO#pos will corrupt the file position in specific situation.
- Merged https://github.com/ruby/ruby/pull/15934.
-
12:03 AM Ruby Revision d3fad326 (git): Fixed io_unread behavior in exceptional situations.
- As noted in the comment, the trailing ‘\r’ is not included in rbuf.len, so limiting it with extra_max is not appropriate.
-
12:03 AM Ruby Revision d3fc5e73 (git): avoiding max_extra overflow in io_unread()
- On Windows, when the file position exceeds LONG_MAX (31 bits), io_unread() fails to calculate max_extra.
Limit max_extra based on the assumption that the maximum value for newlines is rbuf.len.
[Bug#21663]
11/08/2026
-
09:13 PM Ruby Feature #22513: Allow Kernel#extend and Module#prepend to take a block
- Pull request with the patch and tests: https://github.com/ruby/ruby/pull/19774
It has one commit for `Kernel#extend` and one for `Module#prepend`.
-
04:26 PM Ruby Feature #22513 (Open): Allow Kernel#extend and Module#prepend to take a block
- # Abstract
Let `Kernel#extend` and `Module#prepend` take a block. The block is
evaluated in a new anonymous module, as `Module.new` evaluates its block,
and the receiver is extended with, or prepended with, that module.
```ruby
... -
09:12 PM Ruby Feature #22514: Add an optional depth argument to Module#descendants
- Pull request with the patch, tests and specs: https://github.com/ruby/ruby/pull/19777
-
08:15 PM Ruby Feature #22514 (Open): Add an optional depth argument to Module#descendants
- # Abstract
Let `Module#descendants` take an optional depth, and return only the
descendants that many steps from the receiver or fewer.
```ruby
module A; end
module B; include A; end
class C; include B; end
class D < C; end
... -
06:34 PM Ruby Bug #22512: Overflow in `st_init_existing_table_with_size` / `Hash.new(capacity:)`
- Backport PRs:
- 4.0 https://github.com/ruby/ruby/pull/19775
- 3.4 https://github.com/ruby/ruby/pull/19776 -
06:30 PM Ruby Bug #22512 (Closed): Overflow in `st_init_existing_table_with_size` / `Hash.new(capacity:)`
- Applied in changeset commit:git|165bb8173f577bcef6103ba0ba19f7596efa23e5.
----------
st.c: recompute MAX_POWER2
Remove the entries that would result in an overflow if allocated.
[Bug #22512] -
04:15 PM Ruby Bug #22512 (Closed): Overflow in `st_init_existing_table_with_size` / `Hash.new(capacity:)`
- If provided a large enough size, `st_init_existing_table_with_size` and `Hash.new(capacity:)` can overflow instead of raising, which could ultimately lead to a crash.
That being said, this bug isn't treated as a security vulnerability... -
06:30 PM Ruby Revision 165bb817 (git): st.c: recompute MAX_POWER2
- Remove the entries that would result in an overflow if allocated.
[Bug #22512] -
12:09 PM Ruby Revision 2cd57fe6 (git): Fix size of Fixnum
-
11:32 AM Ruby Revision 195919b1 (git): ruby-spec: Refactor fixnum_spec and numeric_spec
- Replace platform-dependent magic numbers and rewrite assumptions
regarding unguaranteed values. -
09:41 AM Ruby Revision 4eeef09e (git): ruby-spec: Fix the guard for `NUM2ULONG`
- The `FIXNUM_MAX` may be out of the `long` range now.
-
09:41 AM Ruby Revision 7cbf5d46 (git): ruby-spec: Fix the guards for `Integer#size` to use `rb_len_t_size`
- The size of Fixnum is independent from the size of `long` now.
-
09:41 AM Ruby Revision 4b132685 (git): ruby-spec: Define `max_rb_ulen_t`
- And calculate `fixnum_min` and `fixnum_max` platform-independently.
-
09:41 AM Ruby Revision 6be798bc (git): ruby-spec: Move `max_ulong` to the helper
-
09:41 AM Ruby Revision 2c79dbb3 (git): Add missing `RB_LEN_MAX` etc to `RbConfig::LIMITS`
-
05:48 AM Ruby Bug #22480: Ruby's release tarballs are not POSIX compliant since 2018
- ruby_3_4 commit:40d962360a9f5f2fae012e314d14f483306708a0 merged revision(s) commit:130c9ec44bd35c7319cdc99c301419188510e3a9.
-
05:47 AM Ruby Bug #22491: The number of captures may change depending on the encoding of the target string
- ruby_3_4 commit:1fe5db3586edf57ff67728c07a7bfd27b9aad13b merged revision(s) commit:b4e5cb26164848f4d5b775a624533c4583a73264.
-
05:10 AM Ruby Revision 1fe5db35 (git): merge revision(s) b4e5cb26164848f4d5b775a624533c4583a73264: [Backport #22491]
- [PATCH] Keep the groups of a regexp compiled again for a string
When a regexp is compiled again for the encoding of a string, pass its
options to the preprocessor so that the comments of extended mode are
dropped... -
05:09 AM Ruby Revision 40d96236 (git): merge revision(s) 130c9ec44bd35c7319cdc99c301419188510e3a9: [Backport #22480]
- [PATCH] [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... -
05:08 AM Ruby Bug #22458: `Time#strftime` out-of-bound access
- ruby_3_4 commit:f0300186340a25978e84da77ed2b33a479aef84e merged revision(s) commit:5c52c2a37bed5507c1898486cdf7eba736296ed4.
-
05:07 AM Ruby Bug #22461: Use-after-free in `String` formatting with wide character encodings
- ruby_3_4 commit:153123a9b5f74b2cde4ff14d1fe47bc17521bd3e merged revision(s) commit:faefcb11050ea61ee011e3b73c929ff406d30b68.
-
05:07 AM Ruby Bug #22471: Thread#name= on a terminated thread may dump core
- ruby_3_4 commit:d545840aa6297fb93d9ffb3e44ac944ace009ce7 merged revision(s) commit:6fdd4520878eebd737d2a702c62051d46f199f89.
-
05:07 AM Ruby Bug #22467: IO#readpartial can raise EFAULT during GC.compact in another thread
- ruby_3_4 commit:340a3a8b249bbb735fa1169941daeeadd084811f merged revision(s) commit:8094e4e2477fc68577bd36447424a61e75749992, commit:0b7838e23b8f9b01765dafd5e675da6113f5b566.
-
04:37 AM Ruby Revision 340a3a8b (git): merge revision(s) 8094e4e2477fc68577bd36447424a61e75749992, 0b7838e23b8f9b01765dafd5e675da6113f5b566: [Backport #22467]
- [PATCH] Don't lose consumed bytes when IO#read times out (#19053)
* io: preserve data after read timeout
* io: make timeout regression tests robust against small send buffers
A synchronous write of the whole pa... -
04:20 AM Ruby Revision ac2cc760 (git): win32: Define HAVE_VA_ARGS_MACRO for clang-cl
- scan_args.h expands rb_scan_args at compile time only when HAVE_VA_ARGS_MACRO is defined, which configure.ac does for every C99 compiler but config.h on mswin did not.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:20 AM Ruby Revision ff54952c (git): win32: Define the builtins of clang-cl in config.h
- config.h is written for cl, so clang-cl builds miss the ID cache of rb_intern with a literal and the compile-time rb_scan_args, whose headers test HAVE_STMT_AND_DECL_IN_EXPR and HAVE_BUILTIN___BUILTIN_* instead of __has_builtin. Define t...
-
04:18 AM Ruby Revision d545840a (git): merge revision(s) 6fdd4520878eebd737d2a702c62051d46f199f89: [Backport #22471]
- [PATCH] 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 c... -
04:17 AM Ruby Revision 153123a9 (git): merge revision(s) faefcb11050ea61ee011e3b73c929ff406d30b68: [Backport #22461]
- [PATCH] [Bug #22461] Fix dangling pointers after associating encoding
`rb_enc_associate` may re-allocate the string buffer because of the
terminator length change. -
04:16 AM Ruby Revision f0300186 (git): merge revision(s) 5c52c2a37bed5507c1898486cdf7eba736296ed4: [Backport #22458]
- [PATCH] [Bug #22458] Fix out-of-bound in `Time#strftime`
-
03:59 AM Ruby Revision e30246ec (git): [DOC] Doc for MatchData#to_s (#19758)
-
03:58 AM Ruby Revision 782f4389 (git): [DOC] Doc for MatchData#to_a (#19757)
-
03:58 AM Ruby Revision 129d56a4 (git): [DOC] Doc for MatchData#string (#19756)
-
03:57 AM Ruby Revision 36e9fe9e (git): [DOC] Doc for MatchData#size (#19755)
-
03:57 AM Ruby Revision dab3ef88 (git): [DOC] Doc for MatchData#regexp (#19754)
11/07/2026
-
04:07 PM Ruby Revision e67e4a69 (git): [ruby/openssl] ssl: remove dependency on io/nonblock
- Use C API rb_io_set_nonblock() instead.
https://github.com/ruby/openssl/commit/7bf23b629e -
03:18 PM Ruby Revision 9fc86fc5 (git): [ruby/openssl] cipher: fix use-after-free in in-place Cipher#update
- Take RSTRING_PTR() of the input buffer after resizing the output
buffer, as the input and output buffers may be the same String object.
Also explicitly reject in-place Cipher#update when the input is too
large to process in a single EVP... -
03:17 PM Ruby Revision 11589a5b (git): Check Bignum arguments in C API specs
- Reject non-Bignum values before Bignum-only APIs can access their representation.
-
03:17 PM Ruby Revision 2019f0f5 (git): Test Bignum conversions against rb_len_t bounds
- Conversion outcomes depend on how the rb_len_t range compares with C integer ranges.
-
09:34 AM Ruby Revision d8d20bf0 (git): Reserve the maximum character length in tr_buffer_mbcput
- A character that is not replaced by String#tr with a Hash can be longer
than 4 bytes, e.g., 6 bytes for a supplementary character in CESU-8.
Reported-by: Regy Robson (https://github.com/Atract0n)
Co-Authored-By: Claude Opus 5.5 <noreply... -
07:56 AM Ruby Bug #22511: Please backport ee90e8e380 (concurrent set size overcount) to 4.0: fstring table keeps doubling in long-running apps
- Backport PR: https://github.com/ruby/ruby/pull/19767
-
07:49 AM Ruby Bug #22511 (Closed): Please backport ee90e8e380 (concurrent set size overcount) to 4.0: fstring table keeps doubling in long-running apps
-
03:41 AM Ruby Revision aec71b2a (git): [ruby/zlib] Update the buffer length before expanding it in Deflate#params
- When deflateParams returned Z_BUF_ERROR, the buffer was expanded before
the bytes just written were added to its length, so the next call wrote
over them and the length was counted twice.
Reported-by: Dániel Percze (https://hackerone.co... -
03:40 AM Ruby Revision e21a3dcf (git): [ruby/zlib] Pass the input beyond UINT_MAX bytes to zlib
- avail_in is a uInt, and the input past the first UINT_MAX bytes was discarded. Zlib::Deflate.deflate and Zlib::GzipWriter#write silently lost the tail of a longer input, and Zlib::Inflate.inflate raised Zlib::BufError on longer compresse...
-
02:39 AM Ruby Bug #22465: Method lookup cache invalidation loop from Kernel#extend
- WIP at <https://github.com/ruby/ruby/pull/19764>. Eyes welcome.
-
01:28 AM Ruby Revision 4684fdbc (git): Reject an insertion whose result does not fit in rb_len_t
- slen + vlen - len in rb_str_update_1 could wrap around where rb_len_t is 32 bits wide. Check it before the capacity test, as str_buf_cat4 does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
01:28 AM Ruby Revision 90db2162 (git): Cast the capacity to rb_len_t to fix the sign-compare warning
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
01:28 AM Ruby Revision 16d12f21 (git): Keep the capacity in rb_str_update_1 when the insertion fits
- RESIZE_CAPA reallocates a heap string to the exact size, so an insertion by bytesplice or String#[]= shrank a buffer that already had room, and the next append grew it again. Each of those reallocs can move and copy the whole buffer.
Co...