Activity
From 08/24/2026 to 08/30/2026
Today
-
10:04 PM Bug #20243 (Open): M:N threading VM_ASSERT failure in rb_current_execution_context with clang 17 (on Linux)
- Thank you, I understand now.
When I said “the issue,” I was referring to the problem where Ruby crashes when built with Clang 17 and `-DVM_CHECK_MODE=1`.
However, I now realize that this issue does not address that specific case, but r... - 07:29 PM Revision 3aa34522 (git): [ruby/timeout] Exclude the gemspec from packaged files
- https://github.com/ruby/timeout/commit/72a3743ec4
-
05:21 PM Revision aa33db69 (git): Pass the buffer's size to ruby_xrealloc_sized, not the field distance
- rb_econv_insert_output() grew the insertion buffer with
ruby_xrealloc_sized(*buf_start_p, s, buf_end_p - buf_start_p);
The old-size argument subtracts the two local pointer variables instead
of the pointers they point at, so the al... -
05:21 PM Revision 6804adde (git): Keep the fallback string alive across rb_econv_insert_output
- transcode_loop() passed the fallback result to rb_econv_insert_output()
as a bare pointer and length. Nothing roots the string during that call:
args.rep still holds the pre-fallback error-bytes string, and with
clang -O3 the VALUE itse... -
01:43 PM Bug #20917: redo/next in nested begin block causes wrong order of execution
- I simplified the script to make it easier to read in ISEQ.
```
1.times do
begin
redo
ensure
end
ensure
puts 1
break
end
```
```
$ ./miniruby -v --dump=insn a.rb
ruby 4.1.0dev (2026-08-30T06:52:45Z :detache... -
10:19 AM Bug #22268: Backport resolv security fixes (CVE-2026-80212, CVE-2026-80213)
- Thank you for creating PR. merged into ruby_3_4 at commit:6deacfb8275bd1583ffa1b8c2b87f25484586a91.
-
10:18 AM Revision 6deacfb8 (git): Bump up resolv-0.7.2 for Ruby 3.4
- Backport of the August 2026 resolv security release.
CVE-2026-80212
CVE-2026-80213
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> - 06:52 AM Revision a889da90 (git): ZJIT: Remove WriteBarrier for immediates
- It doesn't end up generating any code (we catch this in codegen too) but
we might as well not have the instruction lying around in our IR. - 06:52 AM Revision 4068011d (git): ZJIT: Fold BoxBool(Test(cond:BoolExact)) to cond
- This appears when doing e.g. `l & (a == b)` (as in the included new
test) where `TrueClass#&` does `RTEST(RBOOL(rhs))` and then the right
hand side is already known to be returning a `BoolExact` because it's
from `FixnumEq`. - 06:52 AM Revision 6ce41703 (git): ZJIT: Add line numbers to Perfetto traces
- This helps figure out what part of long functions is causing the exit or
fallback or whatever is being traced. - 06:52 AM Revision b6071e1e (git): ZJIT: Specialize TrueClass#&
- It just does `RBOOL(RTEST(other))`.
- 06:52 AM Revision e5cd8f00 (git): ZJIT: Specialize FalseClass#&
- It just returns `false` no matter the other argument.
- 06:52 AM Revision 0f20fd9f (git): ZJIT: Support generating Const::CBool in codegen
- 06:50 AM Revision f20155d5 (git): marshal.c: Make partial objects table conditional
- Only allocate and use the partial objects table when a load proc is active or loaded objects must be frozen.
Co-authored-by: Codex <noreply@openai.com> -
06:27 AM Revision ce15950f (git): thread_sched: keep io fds registered in epoll with EPOLLONESHOT
- A blocking read used to cost four epoll_ctl per wait cycle: ADD before
the wait and DEL after the wake, on both ends of an exchange. The DEL
ran on the timer thread, the one serial resource every io readiness
event already passes throug...
08/29/2026
-
01:05 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1, Kevin has a lot of experience with String semantics and optimizations, as well as with implementing & JIT-compiling many parts of Ruby, he would be a great committer.
-
06:49 AM Bug #22269 (Closed): `Coverage.line_stub` clobbers already-collected coverage data
- Applied in changeset commit:git|22e4a75d67d1e25deed4dce5b801397713dbdefa.
----------
[Bug #22269] Make coverage_enabled: false effective for compile/compile_file
Use it in Coverage.line_stub so compiling the stub does not overwrite alr... -
06:48 AM Revision 22e4a75d (git): [Bug #22269] Make coverage_enabled: false effective for compile/compile_file
- Use it in Coverage.line_stub so compiling the stub does not overwrite already-collected coverage data.
-
05:51 AM Misc #22249: DevMeeting-2026-09-10
- * [Feature #22279] Region (Length / Range) Arguments for String Bit Operations (hasumikin)
* Follow-up to [Feature #22118] (String bit operations, accepted): adds `(offset, length)` and Range overloads to `bit_set` / `bit_clear`... -
05:29 AM Feature #22279 (Open): Region (Length / Range) Arguments for String Bit Operations
- PR URL: https://github.com/ruby/ruby/pull/18562
## What this adds
Region overloads for the methods introduced in #22118, so they act on a contiguous run of bits in a single call:
```
String#bit_set(offset, length, lsb_first: tr... -
05:17 AM Revision fcbdc207 (git): Dynamically derive base_label in iseq
- base_label isn't used very often in iseq and we can dynamically derive it
from the label (of the current iseq or the local_iseq). We can remove this
field to save 8 bytes. -
03:15 AM Revision e947cbd1 (git): Regenerate build dependencies after revision changes
-
01:04 AM Revision a7361d3e (git): [DOC] Harmonize chmod methods doc
-
01:02 AM Revision 25ab32c7 (git): [DOC] Tweak for filesystem_modes.md
08/28/2026
-
11:19 PM Bug #22246: Rational#to_f incorrectly rounds when the numerator is a bignum that cannot be represented exactly by a double, and the denominator is a fixnum
- I found two more cases where `rb_big_fdiv_double` produces an incorrectly rounded result. I added them to [pull request #18599](https://github.com/ruby/ruby/pull/18559).
```Ruby
assert_equal(3.333333333333333e39, (10**40).fdiv(3), "Bug... -
07:04 PM Revision 90e729c9 (git): Share one thread/ractor scheduler between POSIX and Windows
- Windows carried a second, much weaker scheduler: a single Win32 mutex as
the GVL, vm->clock for preemption, its own VM barrier over
vm->ractor.sync.barrier_*, its own Ractor wait/wakeup on a per-Ractor
condvar, no ready queue and no time... -
05:02 PM Bug #22263: NoMethodError: super: no superclass method 'require' for main — raised in a forked child process after a Ractor has exited in the parent (bisected to c59c4d717a)
- I've just encountered this issue with the following repro:
```
Ractor.new { 1 }.value
Kernel.module_eval { alias old_require require }
old_require 'tempfile'
```
Thanks @luke-gru for pointing this ticket out to me.
I ended u... -
04:30 PM Revision 46e53809 (git): [ruby/date] Implement compaction and embedded structs
- Currently dates are allocated in a 40B slot plus a 32B (simple)
or 48B (complex) external struct.
Once embedded they entirely fit into a 80B slot.
https://github.com/ruby/date/commit/e8a1442c60 - 04:00 PM Revision 89719849 (git): [ruby/date] Assert warnings for invalid offsets
- https://github.com/ruby/date/commit/569565d8c0
- 04:00 PM Revision c84cb4d4 (git): [ruby/date] Range-check the integral Rational offset
- Every branch of offset_to_sec range-checks the resulting number of
seconds except one path through the Rational branch: when the day
fraction is an integral Rational, n is assigned inside the if arm and
reaches *rof without passing the g... -
03:58 PM Revision 2084db2e (git): [ruby/date] Validate the commercial week range before conversion
- Reject week numbers outside -53..-1 and 1..53 before conversion so
integer overflow cannot make invalid input appear valid.
Fixes https://github.com/ruby/date/pull/180.
https://github.com/ruby/date/commit/e9c07010c7 -
03:58 PM Revision b95de2b9 (git): [ruby/date] Preserve input encoding when parsing time zones
- Pass the input encoding through `date__strptime` so non-ASCII trailing
data is treated as a parse failure instead of raising an encoding error.
Fixes https://github.com/ruby/date/pull/179.
https://github.com/ruby/date/commit/edf7cf016c -
02:14 PM Bug #22018: ISeq created via `RubyVM::InstructionSequence.compile` don't support coverage
- I found an unintended interaction with `Coverage.line_stub` after this change: calling `line_stub` while coverage is running can reset already-collected coverage counters.
I opened #22269 for this issue:
https://bugs.ruby-lang.org/is... -
01:23 PM Revision 16de6937 (git): Remove wrapper field in iseq
- We keep a singleton of iseq wrappers (RubyVM::InstructionSequence). However,
this is rarely used and causes 8 bytes to be wasted on all iseq objects.
Since we now have the 32-byte slot size in the default GC, we can save that
memory. -
01:22 PM Bug #22278 (Open): `Coverage.line_stub` emits warnings found in source code
- `Coverage.line_stub` is implemented via `RubyVM::InstructionSequence.compile_file`. That emits all warnings found in the source code when `$VERBOSE = true`.
I found this via `simplecov`. It can do coverage for compiled erb, and it als... -
12:55 PM Bug #22276: alias in a module falls back to Object even in classes not inheriting from Object
- I implemented option 2: https://github.com/ruby/ruby/pull/18553
When `alias` in a module does not find the method in the module, it now creates a ZSUPER method entry whose original name is the aliased method. `Object` is searched only t... -
09:55 AM Bug #22276 (Open): alias in a module falls back to Object even in classes not inheriting from Object
- When `alias` (or `alias_method`) is used in a module and the method is not found in the module, `alias` searches the method from `Object`. So a module can alias a method of `Kernel` or `Object`, and the alias works even if the module is ...
-
12:48 PM Feature #22277 (Open): Make `rb_gc_register_address` Ractor-local
- ## Summary
[Github PR #18393](https://github.com/ruby/ruby/pull/18393)
`rb_gc_register_address` stores its entries in a single VM-wide list. This means that every Ractor local GC walks the list under a VM wide lock, which causes co... -
10:53 AM Revision 7af12706 (git): [ruby/date] Suppress warnings by clang 21
- https://bugs.ruby-lang.org/issues/21629
https://github.com/ruby/date/commit/214024627a -
09:33 AM Bug #22273: Aliasing doesn't interact well with Module#prepend
- I agree with Jeremy, and would like to point out that Ruby already has exactly this semantics for refinements.
If the prepend in the example is replaced with a refinement, we get the expected behavior:
```ruby
using Module.new {
... -
05:03 AM Bug #22273: Aliasing doesn't interact well with Module#prepend
- As I mentioned in https://bugs.ruby-lang.org/issues/22263#note-5, I think a module should only be able to alias methods in ancestor modules, it should not be able to alias methods in descendant modules, as I don't think the semantics mak...
-
08:05 AM Misc #22275 (Open): Ruby::Box support plan for RubyGems and Bundler
- This is a tracking issue for making RubyGems and Bundler work with Ruby::Box, so that reviewers can see the whole picture and what to look at next in one place.
## Goal
The goal is to realize [Feature #13847](https://bugs.ruby-lang... -
07:56 AM Bug #22173 (Closed): `Ractor.new { Fiber.current }.value` raises `[BUG] rb_ractor_confirm_belonging object-ractor id:1, current-ractor id:2`
- Thank you for the report!
- 07:43 AM Revision 69b49ac7 (git): hash.c: avoid signed integer overflow in ar_hint_first_match SWAR splat
- This was previously flagged by ubsan because the AR_HINT_BASE_MASK
constant is implicitly typed as long:
hash.c:664:43: runtime error: signed integer overflow: 72340172838076673
* 131 cannot be represented in type 'long'
Notably, in an... -
07:04 AM Revision a3f47303 (git): parse.y: fix high nibble in invalid byte escapes
-
05:47 AM Revision ed55edaa (git): Avoid freezing nested array in Array#flatten!
-
04:27 AM Revision 19db053a (git): Fix use-after-free of rb_thread_t in the M:N termination epilogue
- coroutine_thread_terminated() leaves the Ractor's living set before handing
the scheduler slot over, then keeps using th for the rest of the function:
thread_sched_to_dead_common() reads th->nt and deregisters th from the
barrier, and th... -
02:25 AM Revision 8f3d12f7 (git): Install MSYS2 perl on the MinGW runner
- MSYS2 dropped perl from its base install and the windows-2022 runner
image picked that up in 20260818.277.1, so autogen.sh now dies with
`/usr/bin/perl: bad interpreter`. master and ruby_4_0 set up their own
MSYS2 with autoconf, which pu... -
02:25 AM Revision e675ccc0 (git): Install MSYS2 perl on the MinGW runner
- MSYS2 dropped perl from its base install and the windows-2022 runner
image picked that up in 20260818.277.1, so autogen.sh now dies with
`/usr/bin/perl: bad interpreter`. master and ruby_4_0 set up their own
MSYS2 with autoconf, which pu... -
02:25 AM Revision 619ea0f6 (git): Bump up resolv-0.3.2 for Ruby 3.3
- Backport of the August 2026 resolv security release.
CVE-2026-80212
CVE-2026-80213
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
02:15 AM Revision 7dec7a2a (git): Fix assert_not_include typo in test_box.rb
- test_global_variables called nonexistent assert_not_include?, raising
NoMethodError when the suite runs with RUBY_BOX=1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
01:49 AM Revision b414f282 (git): [Misc #22206] Sync dependency files from default gems
- Keep complete dependency rules in upstream gems while storing only source
mappings in the Ruby repository. -
01:49 AM Revision 67addc08 (git): [Misc #22206] Keep generated dependency duplicates
- Keep generated rules even when manual rules cover them so source
mappings can round-trip between default gems and ruby/ruby. -
01:18 AM Bug #22090: Enabling Ruby::Box breaks Marshal.load
- The root cause is that `Marshal.load` is a builtin method written in Ruby (`marshal.rb`), so it is defined in the master box. The box resolution stops at that frame and looks up the dumped class names there, where user-defined classes ar...
- 12:36 AM Revision 888a9fe2 (git): [ruby/rubygems] Document :credential_store in the gemrc option list
- The option has been readable from gemrc since it was added, but the RDoc
list of valid gemrc options never gained a row for it.
https://github.com/ruby/rubygems/commit/3521da48ae -
12:35 AM Revision ed0519b7 (git): [ruby/rubygems] Only coerce exact true and false gemrc values to booleans
- Alternation binds looser than the anchors, so `/\Atrue|false\Z/` reads as
`(\Atrue)|(false\Z)` and quietly turned every gemrc string starting with
`true` or ending with `false` into the boolean false. `:credential_store:
truestore` disab... -
12:29 AM Revision f6c8c1f7 (git): [ruby/rubygems] Keep the credential_store vocabulary lists private
- They sit after `private`, which does not apply to constants, so both are
public API today. Nothing outside the file reads them, and the setting
has not shipped, so this is the last release where making them private
costs nothing.
https:... -
12:29 AM Revision 9c8e1e5d (git): [ruby/rubygems] Record why the RubyGems half keeps `off`
- The two sides of one setting now disagree on `off`, so the list has to
say why it stays wider here. Nothing on the way in turns `off` into a
boolean, and nothing on this side shares the single vocabulary that
Bundler's boolean settings a... -
12:29 AM Revision 7c3a23a0 (git): [ruby/rubygems] Align the credential_store false vocabulary with to_bool
- `credential_store` was the only Bundler setting that read `off` as
disabled, while every other setting goes through `Settings#to_bool`,
whose false vocabulary has never had it. The disabled branch now
delegates to `#to_bool` so the two c...
08/27/2026
-
11:37 PM Revision 5eb9a692 (git): [ruby/rubygems] Keep lockfile parsing from loading Bundler source plugins
- A PLUGIN SOURCE section sends Bundler::Plugin.from_lock looking for the
plugin that handles it, and finding one loads and runs that plugin's
`plugins.rb`. The plugin index is read from the lockfile directory, so a
repository could run co... -
11:37 PM Revision 660aa1a2 (git): [ruby/rubygems] Do not restore Bundler root when it was never saved
- `defined?(previous_root)` is true even when the assignment never ran, so
a failure before the root was saved reset Bundler's root to nil.
https://github.com/ruby/rubygems/commit/b2177cd67d
Co-Authored-By: Claude Fable 5 <noreply@anthro... -
11:37 PM Revision 99d127e5 (git): [ruby/rubygems] Restore lockfile remote order for GEM sections
- Bundler::Source::Rubygems stores remotes in reverse of the lockfile
order, so reading them straight through flipped which remote a spec
downloads from when a GEM section lists more than one.
https://github.com/ruby/rubygems/commit/da017... -
11:37 PM Revision 11d8ba65 (git): [ruby/rubygems] Pin lockfile dependencies to the version their section resolved
- The parser removed in #9564 turned a `!` entry in the DEPENDENCIES
section into a `= <version>` requirement. Bundler's LockfileParser
records the pinned source on the dependency and leaves the requirement
at `>= 0`, so `gem install -g` c... -
11:26 PM Revision e722f446 (git): [ruby/io-console] Add Windows console constants
- Merge the unmerged dependency update at the previous merger.
https://github.com/ruby/io-console/commit/e712668ca2 -
11:19 PM Revision ca40db6d (git): [ruby/rubygems] Relativize a plugin path only when it is really under the root
- The save side matched the root as a string prefix, so an absolute path
that starts with the root but climbs above it was written back relative,
and the filter above then dropped it on the next load. Asking the same
question both ways lea... -
11:19 PM Revision 25f520c9 (git): [ruby/rubygems] Ignore plugin index entries that point outside the plugin root
- A path stored relative to the plugin root only means anything inside it,
so an entry that climbs out of it did not come from a plugin Bundler
installed there. Paths recorded as absolute are left alone, which is how
`bundle plugin install... -
11:15 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1 Kevin's got a lot of experience with TruffleRuby that can help improve CRuby
-
11:00 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1.
> He's made significant contributions to ZJIT. Having Kevin as a committer would help the ZJIT development a lot.
Yes, it would be great if he can merge patches -
04:41 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1 Kevin is a very experienced and thoughtful developer. He'd be a great asset to the CRuby committers.
-
04:34 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- Thank you for the nomination, @tekknolagi, and the support from others. I'd be honored to accepted as a committer.
-
04:32 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1 Kevin would be a great addition
-
04:18 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1
-
04:05 PM Misc #22272: Propose Kevin Menard (@nirvdrum) as a core committer
- +1. He's made significant contributions to ZJIT. Having Kevin as a committer would help the ZJIT development a lot.
-
03:11 PM Misc #22272 (Open): Propose Kevin Menard (@nirvdrum) as a core committer
- ## Proposal
I'd like to propose Kevin Menard (@nirvdrum) as a committer. He started full-time work on ZJIT about a year ago and has been doing excellent work since. For example, he wrote the function inliner, which is the single bigge... -
11:10 PM Revision 91582950 (git): Unify jit_payload in iseq_constant_body
- We cannot have YJIT and ZJIT enabled at the same time, so we can use a
single jit_payload pointer in iseq_constant_body to reduce the size by
8 bytes. -
11:10 PM Revision ae55fbba (git): [DOC] New file about filesystem modes (#18521)
-
09:17 PM Feature #22274 (Open): Make `IO::Buffer` no longer experimental.
- `IO::Buffer` was introduced in Ruby 3.1 by Feature #18020 as an experimental API. It provides an efficient buffer abstraction for fiber scheduler I/O, zero-copy operations, binary protocol implementations, and access from native extensio...
-
07:07 PM Revision f4813a34 (git): compile.c: statically resolve `swap` instructions when possible
- If the two preceeding instructions are known not to be dependent
on the state of the stack, then we can eliminate the `swap` and inverse
the two previous instructions.
This mostly eliminate instruction in two cases:
```ruby
Object.new
... -
06:24 PM Bug #22273 (Open): Aliasing doesn't interact well with Module#prepend
- Currently, aliasing doesn't interact well with `Module#prepend` in my opinion.
### Example
```ruby
module Kernel
prepend(Module.new do
def require(feature)
puts "requiring feature (prepend): #{feature}"
super... -
06:03 PM Bug #22246: Rational#to_f incorrectly rounds when the numerator is a bignum that cannot be represented exactly by a double, and the denominator is a fixnum
- Here's an example of Rational#to_f giving an incorrect result when the numerator is a bignum and the denominator is a fixnum that can't be exactly represented as a double:
`Rational(10**24, 10**17 + 9).to_f` should return 10000000.0, but... -
01:57 PM Bug #22246: Rational#to_f incorrectly rounds when the numerator is a bignum that cannot be represented exactly by a double, and the denominator is a fixnum
- Consider the related code in `fix_fdiv_double`, which demonstrates a check for the denominator y being a fixnum that's exactly represented by a double.
```
static double
fix_fdiv_double(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
... -
01:47 PM Bug #22246: Rational#to_f incorrectly rounds when the numerator is a bignum that cannot be represented exactly by a double, and the denominator is a fixnum
- > This bug is not related to Feature #21308 except for the same author.
Yes, I confused it with another ticket, that's why I deleted my comment, sorry. -
01:13 PM Bug #22246: Rational#to_f incorrectly rounds when the numerator is a bignum that cannot be represented exactly by a double, and the denominator is a fixnum
- This bug is not related to Feature #21308 except for the same author. The implementation of Rational#to_f does not perform any base conversions.
The bug is caused by the assumption that a floating-point conversion of a bignum numerator ... -
04:56 PM Revision 12e5584d (git): [ruby/prism] Warn on duplicated key with **hash only
- Previously we were just checking the token, which meant something
like `{ a: 1, **{a: 2}.select { false } }` would warn. As esoteric
as this is, it was possible. This also happily gets rid of the
current_hash_keys field on parser, making... -
04:44 PM Revision 643171f1 (git): [ruby/open3] Close Open3 pipes when spawn exits early
- Prevent file descriptor leaks when process creation exits through an
exception or throw.
https://github.com/ruby/open3/commit/8f5d4b6ae0 -
03:14 PM Bug #22268 (Closed): Backport resolv security fixes (CVE-2026-80212, CVE-2026-80213)
-
04:04 AM Bug #22268 (Closed): Backport resolv security fixes (CVE-2026-80212, CVE-2026-80213)
- The resolv security releases of 2026-08-27 fix CVE-2026-80212 and CVE-2026-80213. https://www.ruby-lang.org/en/news/2026/08/27/multiple-vulnerabilities-in-resolv/
`resolv` is a default gem. master already has the fixes through the aut... -
03:13 PM Revision 2da9a6ef (git): Bump up resolv-0.7.2 for Ruby 4.0
- Backport of the August 2026 resolv security release.
CVE-2026-80212
CVE-2026-80213
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
12:56 PM Bug #19865: Segfault when calling user signal handlers during VM shutdown
- I've just been analysing these recurring segfaults happening from time to time and landed on the bug report. The same combo stands: ruby-odbc and a connected db object at shutdown. Looking forward to a fix.
-
12:15 PM Bug #21830: Ruby::Box and Kernel#require
- Thanks @hsbt.
For the archives, I'd like to add something to
> This breaks Zeitwerk's implicit namespaces
The main idea in Zeitwerk is:
1. Scan the filesystem
2. Set autoloads accordingly
3. React to constants being autolod... -
10:14 AM Bug #21830: Ruby::Box and Kernel#require
- The direct `Kernel#require` decoration now works on master (after #21881), but the autoload path is still broken: an autoload fired under `RUBY_BOX=1` bypasses the decorated `require` entirely.
```ruby
module M
def require(path)
i... -
11:57 AM Revision 14a257cf (git): Combine items, keys, collision_table in rb_id_table
-
11:57 AM Revision aa30b601 (git): Reduce memory usage of rb_id_table
- On 64-bit systems, we used 4 bytes to determine if there is a collision
in the entry. This is a waste because it only needs 1 bit.
This commit separates each item in rb_id_table into three parts: items
(8 byte elements), keys (4 byte el... -
11:11 AM Bug #22271 (Open): Ruby::Box fails to load C extensions from deep paths (temporary file name exceeds NAME_MAX)
- When a C extension is required inside a Ruby::Box, the temporary copy is named by flattening the full source path into a single file name (`/` replaced with `+`). If the extension lives under a deep path, such as a long `BUNDLE_PATH`, th...
-
10:37 AM Bug #22270 (Open): Fix prepend ancestry order in user boxes
- In a user box created with gems disabled, prepending to a built-in module inserts it on the wrong side of the target:
```ruby
box = Ruby::Box.new
box.eval('module BoxDecor; end; Kernel.prepend(BoxDecor)')
box.eval('Object.ancestors... -
10:35 AM Feature #15381: Let double splat call `to_h` implicitly
- Hi,
I’m bringing this up again, hoping for inclusion in 4.1. If not, it would be great to know whether this is something that could happen in the future or whether it’s too much of a breaking change at this point.
Thanks! -
10:27 AM Revision 89d3b11e (git): [ruby/openssl] Look the SSLContext up from the SSL_CTX in the ALPN/NPN callbacks
- ossl_sslctx_mark uses rb_gc_mark_movable, so the SSLContext relocates. Its VALUE
is stored in four places: the SSL_CTX's ex_data, and the callback argument of the
NPN advertise, NPN select and ALPN select callbacks. ossl_sslctx_compact u... -
10:04 AM Revision 127e9038 (git): hash.c: add a substition hint
- By guaranteeing that hints can't match `RHASH_AR_CLEARED_HINT`
we can save on checking the key for `UNDEF_P` in a bunch of places. -
09:27 AM Bug #22269: `Coverage.line_stub` clobbers already-collected coverage data
- Patch: https://github.com/ruby/ruby/pull/18533
-
09:26 AM Bug #22269 (Closed): `Coverage.line_stub` clobbers already-collected coverage data
- `Coverage.line_stub` compiles the file with `compile_file` only to read the ISeq's `trace_points`. Since https://bugs.ruby-lang.org/issues/22018 `compile_file` registers the file into the coverage table, so calling `line_stub` while `Cov...
-
07:20 AM Feature #22256: Replace missing/dtoa.c with a uscale-based algorithm. Faster, smaller footprint, and fixes a rounding error.
- [Feature #21308] was filed a while ago.
`dtoa.c` is really showing its age, and in the last couple years there has been a lot of new algorithms on that particular topic.
Currently `ruby/json` uses Grisu for `double -> string` and E... -
04:25 AM Revision b4322d90 (git): Fix reference update bug in iseq_scan_bits
- In iseq_scan_bits, we only update original_iseq if the element at code
moved. However, this isn't correct as it's possible that code has already
gotten updated but not original_iseq. This will cause original_iseq to not
get updated. -
04:09 AM Revision 38a74677 (git): [ruby/rubygems] Error out when `bundle init --gemspec` gets no specification
- `Bundler.load_gemspec_uncached` returns nil when the gemspec evaluates
to nil, which an empty file does. `CLI::Init` was the only caller not
guarding against that, so it crashed with a `NoMethodError` backtrace
after already writing a pa... - 03:39 AM Revision 3d139905 (git): ZJIT: Eliminate constant-valued block params (#18369)
- In the following code,
```ruby
def test(cond)
if cond
x = 1
else
x = 1
end
x
end
```
the `x` after the conditional would ordinarily get a block param merging two constant `1`. Even if we had dominator-based GVN, this wo... -
03:35 AM Revision 1b33a60f (git): [ruby/rubygems] Rename the no_prune setting to keep_outdated_cache
- The `prune` vocabulary is being reused for a new setting, and `no_prune`
was already a poor name for a flag that only decides whether `bundle
cache` keeps gems that dropped out of the resolution. `no_prune` is
still read until Bundler 5 ... -
03:35 AM Revision 5496feb0 (git): [ruby/rubygems] Drop the settings write behind the removed --no-prune flag
- Every documented spelling of the flag raises before reaching it, so the
only way in was Thor resolving `--skip-no-prune` to a negated value,
which `flag_passed?` does not match. That let an undocumented spelling
change a setting the docu... - 02:30 AM Revision 55379274 (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.86.6 to 2.86.7
- [Release notes](https://github.com/taiki-e/i... -
02:25 AM Revision c56fa940 (git): Don't record EP escape in JIT when not enabled
- We shouldn't record JIT information before the JIT is actually enabled.
This change doesn't seem to affect ZJIT or YJIT performance beyond the
margin of error:
ZJIT:
-------------- ------------ ------------ --------------... -
02:15 AM Revision 4dd33ca6 (git): ZJIT: Fix lattice bug in SSA minimization (#18482)
- Block param minimization was introduced here #17311, but a few tests did not properly eliminate redundant block params.
This is because I used `Vec::resize`. For most passes this was fine, especially when trivial block params were discov... -
02:01 AM Bug #22173: `Ractor.new { Fiber.current }.value` raises `[BUG] rb_ractor_confirm_belonging object-ractor id:1, current-ractor id:2`
- This assertion failure does not reproduce since https://github.com/ruby/ruby/commit/09aab7899fa0d0014e458c319e689175881a2075 so I think we can close it.
-
01:47 AM Revision 5ee95de0 (git): [ruby/resolv] Compare generic classes by descent and stop building the zipped array
- Generic#== accepted only direct subclasses while Message compared any
descendant, so an instance of a subclass of a generated class compared
unequal. Both now go through Generic.type_class_equal?. Passing a block
to zip also avoids alloc... -
01:47 AM Revision c77b5944 (git): [ruby/resolv] Compare generic resources by their type and class values
- Dropping the class cache made every decode build a fresh class for an
unknown type, so comparing the classes by identity reported two otherwise
identical resources, questions, and messages as different.
https://github.com/ruby/resolv/co... -
01:47 AM Revision 1745c36e (git): [ruby/resolv] Shorten the comments added in the previous commit
- https://github.com/ruby/resolv/commit/95e0a6664c
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
01:47 AM Revision 55f73130 (git): [ruby/resolv] Do not register on-demand classes for unknown DNS types and SvcParamKeys
- Decoding a response with unknown (type, class) pairs or unknown
SvcParamKeys generated an anonymous class per value and registered it in
a constant and in ClassHash permanently, so a spoofed or malicious
response carrying many unknown va... -
01:47 AM Revision eafd4471 (git): [ruby/resolv] Describe the label limit the way the encoder now applies it
- The comment predates the check moving into Label::Str and read as though a
label of 64 octets already overflowed its length octet. It does not: 64 to 255
write a reserved or compression pointer value, and only 256 or more wrap. Say
which... -
01:47 AM Revision d17b9216 (git): [ruby/resolv] Make the 63 octet label limit an invariant of Label::Str
- Checking in Name.create left two ways to build an over-long label: Name.new,
which Config#generate_candidates uses to append search domains, and the
search list itself, which Config splits without going through Name.create.
Label::Str is... -
01:47 AM Revision 5bf9c3ce (git): [ruby/resolv] Raise ResolvError for an oversized name
- A hostname is runtime data rather than a programming mistake, and callers
already wrap name resolution in rescue Resolv::ResolvError. Rejecting an
oversized name with ArgumentError escaped that rescue, since
Config#generate_candidates ru... -
01:47 AM Revision f681ca8a (git): [ruby/resolv] Count the encoded form when limiting DNS name length
- The counter started at -1, which measures the presentation form, so a name
encoding to 257 octets passed the 255 octet limit of RFC 1035 section 3.1.
The encoded form includes each label's length octet and the root label's
terminating ze... -
01:47 AM Revision 04c367a7 (git): [ruby/resolv] Enforce DNS label and name size limits when encoding
- A label longer than 255 octets wrapped its length octet mod 256 while the
data was written unchanged, so the wire bytes decoded to a different name
than the caller asked for. A hostname that passed an application's
allowlist could be sen... - 01:42 AM Revision efa87443 (git): Revert "[ruby/rubygems] Skip the RUBY_BOX gem CLI canary on Windows"
- This reverts commit 86817cf6ef9c1bcf7ef0c876ac1ead5b51c0b029.
- 01:42 AM Revision 1c664d80 (git): Defer unloading box-local extension DLLs on Windows
- box_entry_free could run before other T_DATA objects are finalized in
rb_objspace_call_finalizer, and FreeLibrary there unmapped the
rb_data_type_t and dfree functions that later finalization still
dereferences, crashing any boxed proces... -
12:30 AM Revision 3e1ea919 (git): Ignore mistaken indentation only commits and [ci skip]
-
12:29 AM Revision f1c708d0 (git): Adjust indent [ci skip]
-
12:27 AM Revision 9ee713a9 (git): Revert "Adjust indent [ci skip]"
- This reverts commit c0a526dd97b22f462f49a2a0062420523303769d.
-
12:26 AM Revision c0a526dd (git): Adjust indent [ci skip]
08/26/2026
-
11:49 PM Revision abe768e7 (git): [DOC] Doc for File::empty?- #18480
- 09:52 PM Revision 0968fd4b (git): Require `Fiber::Scheduler#fiber_interrupt`. (#18513)
-
09:50 PM Revision 92318965 (git): [ruby/rubygems] Fix relative gemspec paths being expanded twice
- `eval_gemspec` computed `path.expand_path` inside its `chdir` block, so a
relative path resolved against the gemspec directory instead of the
original working directory, and loading `foo/foo.gemspec` handed `eval` a
file name of `<root>/... -
09:42 PM Revision 6a4fe461 (git): [ruby/rubygems] Never prune a locally overridden git repository
- A local override points a git source's install path at the developer's
own working repository, so scoping the removal to the definition's git
sources aimed `rm -rf` at their `.git`. Take only sources that live under
`Bundler.install_path... -
09:42 PM Revision a2a04cb5 (git): [ruby/rubygems] Require a bundle path before pruning
- Without one Bundler installs into the system gem directory, where the
cache is shared with RubyGems and holds gem files Bundler never put
there, so pruning there would delete other people's archives. Skip it
with a warning instead. Git m... -
09:42 PM Revision 987ce3da (git): [ruby/rubygems] Fetch the archives a reinstall or bundle cache needs
- The forced-reinstall check walked the whole resolution, so a lockfile
carrying other platforms or an excluded group sent every `--redownload`
back to the remote. Scope it to what this platform and these groups
install, and let `bundle ca... -
09:42 PM Revision b866cd78 (git): [ruby/rubygems] Prune after bundle cache has copied the gem files out
- `bundle cache` installs first and copies the gem files afterwards, so
pruning at the end of that install left it with nothing to copy and it
failed with "Missing gem file". Skip the prune during that install and
run it once the app cache... -
09:42 PM Revision 54058ba8 (git): [ruby/rubygems] Download a gem again when the cache no longer holds it
- An installed gem resolves without a remote, so `bundle install
--redownload` had nothing to reinstall from once the cache was gone, and
`prune` left no way back. Go remote when a forced reinstall finds an
uncached gem, and look the gem u... -
09:42 PM Revision 47aa05a7 (git): [ruby/rubygems] Add a prune setting for post-install cleanup
- Container images ship Bundler artifacts they will never use again, so
images today hand-roll `rm -rf` over the cache and the git checkouts.
The new `prune` setting removes the same set from Bundler itself, and
everything it removes is re... -
09:27 PM Revision f3a72fe0 (git): [Bug #22242] Invalidate CCs on cc_table_dup
- When a Ractor is started, rather than modifying the cc table in place we
make a copy and CAS the table. When making the copy we previously
skipped cc_entries with an invalidated CME. However, that left the CCs
associated with that entry ... -
09:00 PM Bug #22242 (Closed): SEGV in method dispatch (`vm_call_iseq_setup_kwparm_nokwarg` / `def_iseq_ptr`) on Ruby 4.0.6 — Rails CI
- Applied in changeset commit:git|f95e71cc1e2a082393d58db1eb6f57b09694f8cb.
----------
[Bug #22242] Invalidate CCs on cc_table_dup
When a Ractor is started, rather than modifying the cc table in place we
make a copy and CAS the table. Wh... -
09:00 PM Revision 7eea38a4 (git): Reapply "Simplify iseq mark_and_move CC handling"
- This reverts commit b746efc1fb46074ae659b4af0f9114aae9540e41.
-
09:00 PM Revision 2a2d027c (git): Reapply "Fix check in cc_is_active"
- This reverts commit 9aa30b512f12ac3e298f7b971cdbd0e2cae8fc68.
-
09:00 PM Revision f95e71cc (git): [Bug #22242] Invalidate CCs on cc_table_dup
- When a Ractor is started, rather than modifying the cc table in place we
make a copy and CAS the table. When making the copy we previously
skipped cc_entries with an invalidated CME. However, that left the CCs
associated with that entry ... -
08:01 PM Revision 0c65ffcd (git): [ruby/prism] Remove now unneeded rdoc private annotations
- RDoc 8 parses rbs (including inline) and so
automatically removes the annotations for us
https://github.com/ruby/prism/commit/5f4d156205 -
04:25 PM Revision c4e235f4 (git): ZJIT: Pass overflow cfunc call args on the stack (#18428)
-
04:14 PM Bug #22263: NoMethodError: super: no superclass method 'require' for main — raised in a forked child process after a Ractor has exited in the parent (bisected to c59c4d717a)
- luke-gru (Luke Gruber) wrote in #note-4:
> [@jeremyevans0 (Jeremy Evans)](/users/1604) is this intentional or a bug?
This is general question of how aliased methods should work with prepend. Currently, we allow a class to alias a met... -
02:47 PM Bug #22263: NoMethodError: super: no superclass method 'require' for main — raised in a forked child process after a Ractor has exited in the parent (bisected to c59c4d717a)
- I have a reproduction showing the issue:
```ruby
module M
def foo
print "M#foo(orig)"
end
end
class C; include M; end
M.prepend(Module.new do
def foo
print "P#foo("
super
print ")"
end
end)
C.new.... -
12:38 AM Bug #22263: NoMethodError: super: no superclass method 'require' for main — raised in a forked child process after a Ractor has exited in the parent (bisected to c59c4d717a)
- Correction on the bisect result. 98f0921f2b is where the forked RailtieTest children start to crash (SIGSEGV or ArgumentError), not where this NoMethodError starts. Bisecting for the NoMethodError itself, with the same bin/test command, ...
-
12:04 PM Revision 0b2edb5b (git): Implement support for AR table backed identity hashes
- This commit adds support for using AR tables for identity hashes (hashes
created by method Hash#compare_by_identity). Before this change, identity
hashes always used ST tables. However, this used a lot more memory because
ST tables are q... -
11:56 AM Revision 68abb349 (git): [ruby/openssl] bn: support marshalling
- This fixes tests with Ruby master, where unshareable T_DATA is copied
across Ractor via Marshal.
https://github.com/ruby/openssl/commit/943fe2340e -
09:53 AM Revision 1eb12836 (git): [ruby/mmtk] Bump mmtk-core
- https://github.com/ruby/mmtk/commit/3926721638
-
09:36 AM Revision ef2ad774 (git): [ruby/rubygems] Cover the compact index success branch
- Dropping Gem::Net::HTTPNotModified from it, or narrowing HTTPSuccess to
HTTPOK, left the suite green even though Updater depends on both the
304 and the 206 reaching it untouched.
https://github.com/ruby/rubygems/commit/b265de4bf7
Co-A... -
09:36 AM Revision b3fd4942 (git): [ruby/rubygems] Wrap raw network errors in FetchError in compact index fetcher
- Gem::RemoteFetcher#request lets SocketError, Errno::ECONNREFUSED and
their kin through unwrapped, and every caller here rescues FetchError
alone. On a host where only index.rubygems.org is unreachable, the
fallback to the Marshal index n... -
09:36 AM Revision 114f30e4 (git): [ruby/rubygems] Reject https to http redirect downgrades in compact index fetcher
- Gem::RemoteFetcher#fetch_http has refused a redirect from https to plain
http since 2012, but the compact index path, which is now the default
and decides which versions resolve, followed it. One 302 from a
compromised edge or a misconfi... -
08:41 AM Revision 76edf35f (git): Refactor RHash size computations
- Share the same code between gc.c and hash.c.
-
08:22 AM Bug #22267 (Open): Active Support tests started failing on ruby master (bisected to [GH-18194])
- On ruby-head, the Active Support (Rails) test suite fails with two Ractor-related errors (rails-nightly build 4651, https://buildkite.com/rails/rails-nightly/builds/4651#01a016ac-eada-492d-9548-44089079b973/L8324).
Rails CI failure. T... - 07:05 AM Revision 346b261a (git): Update bundled gems list as of 2026-08-26
-
06:20 AM Feature #22266 (Open): Stop warning for duplicate keywords in splatted literal hashes
- Ruby warns for duplicate keywords in the same literal hash:
```shellsession
$ ruby -we '{h: 1, h: 1}'
-e:1: warning: key :h is duplicated and overwritten on line 1
```
Ruby does not warn for duplicate keywords in splatted hashes... - 06:04 AM Revision 4a6678f6 (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.86.5 to 2.86.6
- [Release notes](https://github.com/taiki-e/i... -
06:01 AM Revision 86817cf6 (git): [ruby/rubygems] Skip the RUBY_BOX gem CLI canary on Windows
- A boxed gem CLI subprocess dies with SIGSEGV in
rb_objspace_call_finalizer at exit on Windows. The fix belongs in
Ruby::Box itself, so omit the canary there until it lands.
https://github.com/ruby/ruby/actions/runs/32933358242/job/98069... -
05:42 AM Bug #22264 (Closed): Warning missing from parse.y hash literals
- Applied in changeset commit:git|e5132b162737829f744b2b23908b9d08479db977.
----------
[Bug #22264] Warn for duplicate keys after leading keyword splat
Leading keyword splats must not suppress duplicate literal key
warnings. -
02:04 AM Bug #22264: Warning missing from parse.y hash literals
- I agree with Jeremy's concern, but I think it should be discussed separately.
As for this bug, it stems from an oversight when we allowed `**` to be placed in locations other than the end of a hash literal; it should be fixed simply by ... -
05:42 AM Revision e5132b16 (git): [Bug #22264] Warn for duplicate keys after leading keyword splat
- Leading keyword splats must not suppress duplicate literal key
warnings. -
05:15 AM Revision 37f38a37 (git): [ruby/rubygems] Add a canary for the gem CLI under RUBY_BOX=1
- The unit tests cover each fix on its own, but nothing checks that a boxed
gem command actually gets as far as listing gems.
https://github.com/ruby/rubygems/commit/e6ee031539
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
05:15 AM Revision 1c4f9f0c (git): [ruby/rubygems] Drop RUBY_BOX from the extension build subprocess
- Under Ruby::Box mkmf makes RbConfig.expand recurse until SystemStackError,
so building a native extension failed even once the CLI itself started.
Build tools are not a target of box isolation.
https://github.com/ruby/rubygems/commit/b4... -
05:15 AM Revision dc5b349c (git): [ruby/rubygems] Replace Marshal deep copies with Gem::Util.deep_dup
- Under Ruby::Box (RUBY_BOX=1) the builtin Marshal runs in the root box and
cannot resolve Gem:: constants defined in the main box, so every gem
command failed to start while deep-copying its option defaults.
https://bugs.ruby-lang.org/is... -
03:34 AM Revision 8ebb6534 (git): [ruby/rubygems] Cache a shared git source only once per command
- When several gems come from the same git block, Runtime#cache invokes
the shared Source::Git once per gem, and cache_to re-cloned and
re-checked out the whole worktree every time. For large repositories
this made bundle cache/update/inst... -
03:11 AM Revision 106d74c4 (git): [ruby/rubygems] Fix gemspec evaluation under Ruby::Box
- TOPLEVEL_BINDING always belongs to the main box, so when Bundler is
loaded inside a user box, gemspecs were evaluated against the main
box's Gem::Specification, which lacks Bundler's monkey patches and
fails with NoMethodError on `source... -
02:28 AM Revision 327fdb91 (git): Guard `Net::HTTPHeader#content_length` spec by version
- Content-Length parsing became strict in 4.1, so values with anything
around the digits now raise instead of returning the digits.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> - 12:46 AM Revision 2c260b8d (git): [ruby/net-http] Make Content-Length handling strict
- (https://github.com/ruby/net-http/pull/324)
`Content-Length` value must have only digits.
See also RFC 9110 Section 8.6:
https://www.rfc-editor.org/rfc/rfc9110.html#section-8.6
Content-Length = 1*DIGIT
The current implementation ... -
12:33 AM Revision 05e1f1f6 (git): [ruby/net-http] Limit the number of informational responses per request
- A peer that keeps sending 1xx responses keeps the client in the read
loop of transport_request indefinitely, since the per-response header
limit resets for each response. Cap the count at 100, the same value
CPython's http.client uses.
... -
12:26 AM Bug #22265 (Closed): `Thread#value` can return before the target thread completes after a spurious Fiber scheduler unblock
- Ruby 3.3 and 3.4 can allow an untimed `Thread#join` to return after a spurious Fiber scheduler wakeup, even though the target thread is still alive.
Because `Thread#value` relies on `Thread#join`, it can consequently return `nil` befo... -
12:17 AM Revision 078029fb (git): Fix memory leak in symbol_id_entry_directory
- symbol_id_entry_directory is not an embedded TypedData, so we need to free
the allocated id_entry_dir as well.
08/25/2026
-
11:13 PM Revision 331568b2 (git): [ruby/net-http] Limit read length of a single response line
- The response header cap added by #219 applies only once a complete line
has arrived, so a server that never sends a line terminator can still
grow the read buffer without bound, as reported in #315. Read the
status line, header lines, ch... - 10:50 PM Revision b5b032cc (git): Update default gems list at 7f00b21798a9dc156f43ab6fed9505 [ci skip]
-
10:49 PM Revision 7f00b217 (git): [ruby/net-protocol] v0.3.0
- https://github.com/ruby/net-protocol/commit/fb347d5ff4
-
10:15 PM Bug #22264: Warning missing from parse.y hash literals
- I'm not sure whether it is desirable to warn for `{a: 1, **{a: 2}}`. I would guess that internally, this hits the same warning for `{a: 1, a: 2}` (which should warn), but for implementation details, it doesn't hit the warning for `{**{},...
-
06:24 PM Bug #22264 (Closed): Warning missing from parse.y hash literals
- $ ruby --parser=parse.y -cve '{**{}, a: 1, **{a: 2}}'
ruby 4.1.0dev (2026-04-21T02:07:14Z aot be86d5704f) [arm64-darwin23]
Syntax OK
$ ruby --parser=parse.y -cve '{a: 1, **{a: 2}}'
ruby 4.1.0dev (2026-04-21T02:07:14Z aot be86d5704f)... -
09:55 PM Revision 9270124f (git): [ruby/rubygems] Delete `Bundler::ParallelInstaller::SpecInstallation#enqueued?`
- - This predicate method has been unused since
https://github.com/ruby/rubygems/commit/7d1131672a84 in 2021 when the
`ready_to_enqueue?` method was simplified.
https://github.com/ruby/rubygems/commit/88d7eef941 -
09:55 PM Revision 6c28747c (git): [ruby/rubygems] Delete the unused `Bundler::UI::Shell#quiet?` method
- - In https://github.com/ruby/rubygems/commit/304a98301522 in 2013, "quiet?" was any
level that was not "debug", "info", or "warn",
- Its last use was removed in https://github.com/ruby/rubygems/commit/64f1294672e2
in 2014.
- Since ... -
09:51 PM Bug #22261: ruby-head builds have been failing on aarch64-linux CI in ruby/ruby-dev-builder
- The daily "CRuby Dev Builds" workflow in ruby/ruby-dev-builder has been successful. Thanks for your quick fix!
-
01:15 PM Bug #22261 (Closed): ruby-head builds have been failing on aarch64-linux CI in ruby/ruby-dev-builder
- Applied in changeset commit:git|e77a77111224426ca18eaeff55d7ad1618cbacc9.
----------
[Bug #22261] Keep GC root-marking frame alive
Prevent a tail call from discarding saved machine-register roots
before `rb_gc_mark_roots` scans the mac... -
01:09 PM Bug #22261: ruby-head builds have been failing on aarch64-linux CI in ruby/ruby-dev-builder
- nobu (Nobuyoshi Nakada) wrote in #note-1:
> Does [GH-18495](https://github.com/ruby/ruby/pull/18495) fix it?
Thank you for creating a fix.
The easiest way to know would be to merge that PR, and `ruby-dev-builder` runs once per day.
... -
12:45 PM Bug #22261: ruby-head builds have been failing on aarch64-linux CI in ruby/ruby-dev-builder
- Does [GH-18495](https://github.com/ruby/ruby/pull/18495) fix it?
-
11:41 AM Bug #22261 (Closed): ruby-head builds have been failing on aarch64-linux CI in ruby/ruby-dev-builder
- The daily "CRuby Dev Builds" workflow in ruby/ruby-dev-builder has failed every day since 2026-08-07:
* https://github.com/ruby/ruby-dev-builder/actions/workflows/build.yml
Because of this, `ruby-version: head` currently installs... -
09:30 PM Revision 33464485 (git): [ruby/rubygems] Document the credential_store setting
- Where a credential ends up, what happens when the store cannot be reached,
that the store belongs to the machine rather than to a project, and that
credentials already written in plain text are not migrated on their own.
https://github.... -
09:30 PM Revision b4493396 (git): [ruby/rubygems] Ship the credential store with the bundler gem
- Bundler reaches Gem::CredentialStore by name, so a bundler installed
against an older RubyGems needs the file itself, the way it already
carries the YAML serializer and the compact index client. Three places
enumerate what bundler ships,... -
09:30 PM Revision 1a48c7c0 (git): [ruby/rubygems] Keep bundler host credentials in the credential store when it is on
- The credential_store setting takes the same values on this side, and
credential_store.<host> picks a different backend for one host, since a
backend gem published for one registry cannot know what its users want
everywhere else. Bundler ... -
09:30 PM Revision 0f7f4182 (git): [ruby/rubygems] Clear the credential store on gem signout
- Signing out has to reach both places a key can live, including the keys
saved for other hosts with gem signin --host. The two halves report
separately, so a credentials file that cannot be removed does not leave
the stored keys behind, a... -
09:30 PM Revision a3661b9e (git): [ruby/rubygems] Keep gem API keys in the credential store when it is on
- The :credential_store: gemrc setting, off by default, moves API keys out
of ~/.gem/credentials and into the OS store. A key is read from the store
ahead of the file, so the two never disagree about which one wins, and the
plain text copy... -
09:30 PM Revision 8ae89d7a (git): [ruby/rubygems] Add Gem::CredentialStore with native OS backends
- Storing an API key in a plain text file leaves it readable by anything
running as the user. This wrapper keeps secrets in the operating system's
own store instead, through the security CLI on macOS, secret-tool on
Linux, and Windows Powe... -
09:07 PM Revision c6241150 (git): [ruby/rubygems] Bundler::Source::Git: avoid re-fetching the repo
- In `install`, `self.to_s` is called by `print_using_message "Using ... from #{self}`.
This in turn calls `current_branch` which if the local git cache
is missing will re-clone it from scratch.
This is an issue, because a common optimiza... - 07:38 PM Revision 095a2917 (git): ZJIT: Add codegen test for Fixnum#<< overflow side exit (#18390)
- Add codegen tests for the Fixnum left shift fastpath and its overflow side exit.
- 05:45 PM Revision 383397e1 (git): ZJIT: Index into instruction vectors with InsnId directly
- 05:45 PM Revision abc5a924 (git): ZJIT: Index into block vectors with BlockId directly
-
04:14 PM Misc #22262 (Third Party's Issue): OSS-Fuzz `fuzz_prism` target never calls `ruby_init()`, so Prism is not being fuzzed
-
03:26 PM Misc #22262: OSS-Fuzz `fuzz_prism` target never calls `ruby_init()`, so Prism is not being fuzzed
- You should open an issue on the google oss-fuzz repo, I didn't even know that thing existed. It is clearly wrong.
-
02:46 PM Misc #22262 (Third Party's Issue): OSS-Fuzz `fuzz_prism` target never calls `ruby_init()`, so Prism is not being fuzzed
- The OSS-Fuzz fuzz target `fuzz_prism` crashes on every non-empty input before it reaches
the parser, so Prism has never actually been fuzzed. The harness source lives in OSS-Fuzz
(`projects/ruby/fuzz_prism.cpp`), not in this repository... -
03:54 PM Revision 89699e81 (git): hash.c: memzero hashes before allocating st_table
- `hash_copy` will call `st_init_existing_table_with_size` which
allocates and may trigger GC causing the current hash to be marked.
So we need to zero-out the `st_table` to avoid a segfault. -
03:17 PM Bug #22263 (Open): NoMethodError: super: no superclass method 'require' for main — raised in a forked child process after a Ractor has exited in the parent (bisected to c59c4d717a)
- ### 1. First occurrence in Rails CI
https://buildkite.com/rails/rails-nightly/builds/4651#01a016ac-eaf9-4a71-9fb6-1924c8a7b9af
(job "activemodel (master-debug)", 2026-08-18, ruby 4.1.0dev (2026-08-18T13:12:35Z master 6b719acc57) +PRI... -
02:52 PM Revision 4d16abab (git): Avoid GCC clobbered warnings in Ractor payload build
- Keep the payload builder uninlined in optimized GCC builds because
inlining causes false-positive `-Wclobbered` warnings. -
02:52 PM Revision cd929ef3 (git): Enable ubuntu-26.04-arm job
-
02:03 PM Revision 17026737 (git): Replace Array#flatten{,!} internal ident hash with set
- This used a hash with all true values, with is simple to convert
to a set to save on memory when flattening array with a large
number of nested elements. -
02:03 PM Revision 85220035 (git): Add rb_ident_set_new internal function
- This is designed to replace rb_ident_hash_new calls when such hashes
are used purely with with true values.
To implement this, add a set_alloc_with_size_and_type static function,
and have set_alloc_with_size and rb_ident_set_new call it. -
01:24 PM Revision 7a0361b3 (git): Skip Fiddle::TestFunction#test_no_memory_leak on parse.y
-
01:24 PM Revision 759cfbb9 (git): Hash#merge guess size
-
01:24 PM Revision 60a4894b (git): Dynamic ar_table size
- Instead of always allocating `ar_table` backed hashes in 160B
slots for them to have capacity of `RHASH_AR_TABLE_MAX_SIZE` (`8`),
they can now be allocated in any slot size between `64B` and `160B`.
`64B` is the minimum slot size that s... -
01:24 PM Revision 6d4a6a93 (git): Parametize `RHASH_AR_TABLE_MAX_BOUND`
- For now it still returns a constant, but clarify when we're looking
for the max bound, versus a miss, etc. -
01:15 PM Revision e77a7711 (git): [Bug #22261] Keep GC root-marking frame alive
- Prevent a tail call from discarding saved machine-register roots
before `rb_gc_mark_roots` scans the machine stack. -
01:15 PM Revision a5338c32 (git): Fix clobbered warning
- With gcc 15.2.0 on aarch64 Ubuntu 26.4:
```console
ractor_sync.c: In function ‘ractor_basket_new.constprop’:
ractor_sync.c:1093:82: warning: argument ‘type’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
1093 | ractor_basket_... -
01:15 PM Revision 6f57a72f (git): Fix enum-compare warning
- With gcc 15.2.0 on aarch64 Ubuntu 26.4:
```console
io_buffer.c: In function ‘io_buffer_flags_for_new’:
io_buffer.c:978:20: warning: comparison between ‘enum rb_io_buffer_flags’ and ‘enum <anonymous>’ [-Wenum-compare]
978 | if (all... -
01:15 PM Revision f21a04fe (git): Fix maybe-uninitialized warning
- With gcc 15.2.0 on aarch64 Ubuntu 26.4:
```console
hash.c: In function ‘rb_hash_s_create’:
hash.c:1982:20: warning: ‘hash’ may be used uninitialized [-Wmaybe-uninitialized]
1982 | return hash;
| ^~~... -
01:15 PM Revision 259a5f97 (git): [ruby/prism] Fix extra doc docmment
- https://github.com/ruby/prism/commit/9df2a21995764880c6d27213e2c7960f2232c879 changed the comment style
Now rdoc picks this up. The comment doesn't say much, seems fine to just remove
https://github.com/ruby/prism/commit/f703c615ae -
11:19 AM Revision c344021a (git): [ruby/net-protocol] Trim the comments added with the readuntil rewind
- The floor's two reasons fit in one block, and the two tests that
restated them are named for what they cover.
https://github.com/ruby/net-protocol/commit/6ffd258b7c
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
11:19 AM Revision ee3b80cd (git): [ruby/net-protocol] Add limit option to Net::BufferedIO#readuntil
- readuntil buffers until the terminator arrives, so a peer that never
sends one grows the read buffer without bound. The limit lets a protocol
implementation cap what a single read may return, raising the new
Net::ReadLimitExceeded instea... -
10:00 AM Feature #22130: Add a new YARV instruction for a `String.new` fast path
- So I just ran into that issue again on my PR to make `ar_table` dynamic: https://github.com/ruby/ruby/pull/18345
`Hash.new(capacity:)` now can't allocate anything but the smallest usable slot. In theory `Hash.new(capacity: 8)` should ... - 09:50 AM Revision a06bf2f8 (git): Lock `IO::Buffer` coercion callbacks. (#18490)
-
09:43 AM Revision f830d938 (git): Skip the rbs 4.2.0 stdlib tests that still fail in CI
- rbs 4.2.0 adds Etc and IO#pathconf stdlib tests that need getpwent(),
getgrent() and the pathconf constants, none of which exist on Windows,
so they go in the Windows-only list. OpenURISingletonTest reaches
www.ruby-lang.org and now fail... -
09:43 AM Revision 225ff017 (git): Update rbs to 4.2.0
- The bundled_gems workflow has failed every day since 2026-08-16 because
rbs 4.0.3's Ripper_test.rb no longer finds Ripper on master. rbs 4.2.0
picks up the upstream fix that requires "ripper" in the stdlib tests.
typeprof 0.32.0 never fi... -
09:43 AM Revision 48a3a07b (git): Unpin rbs from the bundled gems auto-update
- rbs was pinned in March 2026 while the 4.0 series was breaking CI. Now
that 4.2.0 is in gems/bundled_gems and the tests pass again, the daily
workflow can pick up later rbs releases on its own. -
09:40 AM Revision be288812 (git): [ruby/net-protocol] Add regression tests for the readuntil rewind
- Cover a terminator split across two reads and across more than two, the
negative rewind the floor clamps, the floor keeping the search out of
consumed bytes, and the ignore_eof branch that returns data without a
terminator. FakeReadParti... -
09:40 AM Revision e7619442 (git): [ruby/net-protocol] Fix readuntil missing a terminator that spans two reads
- BufferedIO#readuntil resumed searching at the previous buffer end, so a
multi-byte terminator split across two fills, such as "\r" ending one
chunk and "\n" starting the next, was never matched and readuntil
returned data past the termin... -
08:17 AM Bug #22259: Arrays sharding a buffer segfault when concatenating with each other
- This bug seem to have been present all the way back since Ruby 2.5, so requesting a backport accordingly.
-
03:10 AM Bug #22259 (Closed): Arrays sharding a buffer segfault when concatenating with each other
- Applied in changeset commit:git|46c287e2ca39da63d5164e2b7227308a41554c9a.
----------
Fix splicing an array that shares its buffer with a longer array
Arrays sharing one buffer have the same data pointer, so rb_ary_splice()
took `a` in ... - 07:50 AM Revision 753ace46 (git): Lock `IO::Buffer` allocations during copy. (#18489)
-
06:23 AM Bug #22242: SEGV in method dispatch (`vm_call_iseq_setup_kwparm_nokwarg` / `def_iseq_ptr`) on Ruby 4.0.6 — Rails CI
- I've managed to reproduce this under rr locally through the Active Record test suite with `VM_CHECK_MODE` enabled. I don't have a more reliable reproduction yet or a fix.
What the recording seems to show is that the ccs entries become o... -
04:44 AM Bug #22242: SEGV in method dispatch (`vm_call_iseq_setup_kwparm_nokwarg` / `def_iseq_ptr`) on Ruby 4.0.6 — Rails CI
- The crash does not reproduce on master, so bisecting from the 4.0 branch point (d375bcc965d4) gives the first fixed commit:
> 1da540aeaa1507af4c050bf8a6ee2802e65f9aac "Invalidate CC on cme free as well" (gc.c, +3/-1)
The boundary i... -
06:20 AM Revision 45088e23 (git): [ruby/mmtk] Prevent overflow values
- (https://github.com/ruby/mmtk/pull/107)
https://github.com/ruby/mmtk/commit/f6b8b0d5ae - 04:55 AM Revision b9bcae99 (git): Preserve `IO::Buffer` read-only state when resizing. (#18487)
-
03:10 AM Revision 72a511da (git): Split rb_ary_splice() into a pointer version and an array version
- Most callers have the replacement as an array object; let them pass it
directly.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> -
03:10 AM Revision 46c287e2 (git): Fix splicing an array that shares its buffer with a longer array
- Arrays sharing one buffer have the same data pointer, so rb_ary_splice()
took `a` in `b = a.dup; b.pop; b.concat(a)` for `b` itself and rebased
the source onto `b`'s shorter storage, copying uninitialized memory.
Have the callers tell wh... -
03:03 AM Revision f2b2cfac (git): [ruby/rubygems] Flush atomic write temp files before renaming over the destination
- The temporary file was renamed into place before being closed, so
buffered data had not reached the filesystem yet and a concurrent reader
could observe an empty destination. A flush failure such as ENOSPC would
surface only after the de... -
03:03 AM Revision f4cba14a (git): [ruby/rubygems] Truncate atomic write temp file names at character boundaries
- The basename was cut with byteslice, which can split a multibyte
character in half. Filesystems enforcing UTF-8 validity such as APFS then
reject the temporary name with EILSEQ.
https://github.com/ruby/rubygems/commit/a7dc5647b0
Co-Aut... - 02:46 AM Revision 44da9d73 (git): Make `IO::Buffer` I/O operations single-transfer and composable. (#18483)
-
02:34 AM Revision dda27dcf (git): [ruby/rubygems] Use %r for the slash-containing regexp
- Fixes the Style/RegexpLiteral offense from CI.
https://github.com/ruby/rubygems/commit/c4069df44d
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
02:34 AM Revision 74bc171e (git): [ruby/rubygems] Update changelog fixture to the current header format
- The fixture changelog still used the old `## VERSION (DATE)` header, so
the fixed `release_date_for` no longer matched it and the released case
of the version spec failed.
https://github.com/ruby/rubygems/commit/36ee802a7e
Co-Authored-... -
02:34 AM Revision 0a316984 (git): [ruby/rubygems] Fix release date extraction for the current changelog header format
- release_date_for in spec/support/build_metadata.rb matched the
changelog's old `## VERSION (DATE)` header, but .changelog.yml has
generated `## VERSION / DATE` headers since Bundler 4.0.9. The regex
silently failed to match, so built_at ... -
01:24 AM Feature #13847 (Closed): Gem activated problem for default gems
- This can be addressed by Ruby::Box [Feature #21311], which loads code, including C extensions, into an isolated space with its own constants and loaded features. That resolves the concerns raised in 2017 about shared library conflicts an...
-
12:38 AM Revision 4b8d4626 (git): [DOC] Doc for File::dirname
-
12:34 AM Revision 3d36072a (git): [DOC] Fix `IO.puts` doc
08/24/2026
-
11:37 PM Bug #20243: M:N threading VM_ASSERT failure in rb_current_execution_context with clang 17 (on Linux)
- wanabe (_ wanabe) wrote in #note-3:
> 7866e124a852c344b5762eb917c03a1f95d9058d == https://github.com/ruby/ruby/pull/13217 fixed the issue.
I don't think it is fixed, please see https://gcc.gnu.org/PR124995. It happens with recent GCC... -
10:16 PM Bug #20243 (Closed): M:N threading VM_ASSERT failure in rb_current_execution_context with clang 17 (on Linux)
- 7866e124a852c344b5762eb917c03a1f95d9058d == https://github.com/ruby/ruby/pull/13217 fixed the issue.
```
$ git checkout 7866e124a852c344b5762eb917c03a1f95d9058d~ && make -j miniruby 2>&1 >/dev/null && ./miniruby ../a.rb 2>&1 |head -n... -
11:12 PM Revision 4ea55466 (git): [ruby/resolv] Drop a TCP connection that cannot carry another request
- Giving up part way through a frame leaves the stream between frame
boundaries, so reusing the cached requester made every later attempt
read the previous frame's bytes as a length prefix. Asking the requester
instead of its class keeps a... -
11:12 PM Revision 54db2e95 (git): [ruby/resolv] Apply the request deadline to TCP frame reads
- Requester#request computes a monotonic time limit but only the socket
readability wait honoured it, so a peer that sends an incomplete frame
and keeps the connection open blocked past the configured timeouts
until it closed. The paramete... -
11:02 PM Bug #22259: Arrays sharding a buffer segfault when concatenating with each other
- Thx for the patch, much cleaner than mine. Indeed I thought there must have been a cleaner fix, but I admit I was out of my depth.
-
06:36 PM Bug #22259: Arrays sharding a buffer segfault when concatenating with each other
- Confirmed and reproduced. Thanks for the report.
While looking into it I found that the same line causes another bug.
```ruby
a = [:A, :B, :C, :D, :E]
b = a[1, 4] #=> [:B, :C, :D, :E]
a[0, 0] = b
p a # expected: [:B, :C... -
11:07 AM Bug #22259 (Closed): Arrays sharding a buffer segfault when concatenating with each other
- A succession of crashes was observed on a particular workload from our app, involving recursive set operations, after upgrading it to ruby 4.0.6 . LLM was used to build a reproduction (shared in the description of the PR linked below), a...
-
10:54 PM Revision ff808c66 (git): [ruby/rubygems] Add a release notes link to the update suggestion
- With the changelog dump gone, the pre-update notice is where users decide whether to update, so link the versioned CHANGELOG.md there too, matching npm's three-line notice.
https://github.com/ruby/rubygems/commit/4ca3c9eba1
Co-Authored... -
10:54 PM Revision 05d58bd8 (git): [ruby/rubygems] Print a release notes link instead of the whole changelog on `gem update --system`
- CHANGELOG.md is over 7,000 lines of generated PR titles, and printing every entry since the previous version dominated the output (478 of the 499 lines on the ruby:3.4 image). Print a single line linking the versioned CHANGELOG.md instea...
-
10:21 PM Revision 45702961 (git): Inverse `hash_alloc` and `hash_alloc_capa` naming
-
10:21 PM Revision c7018a38 (git): Hash#rehash: right-size the temporary ar_table
- 08:50 PM Revision 177ead8d (git): Make IO::Buffer MemoryView ready (#17965)
- `null?` buffer isn't MemoryView available.
Not `null?` buffer is MemoryView available. It can be exported as a
1-dimensional contiguous array of bytes.
Users can't change the underlying memory of the exporting IO::Buffer
while exported... - 06:44 PM Revision c4fdf07d (git): ZJIT: Reduce SideExit HashMap rehash (#18411)
- If we don't pre-size the HashMap, it has to re-hash when resizing.
Hashing a SideExit is slow. Give a size hint so we only hash ~once per
exit. - 06:25 PM Revision 6e3061c7 (git): Add accessors for ISEQ_BODY(iseq)->variable fields
- 06:25 PM Revision 5552e2c5 (git): Shrink iseq->body struct: allocate iseq->body->variable lazily
- Most of the time in a production app most iseqs won't have iseq->body->variable
set to anything non-default. We can allocate it lazily and save 32 bytes per iseq.
Some large apps have millions of iseqs, so it adds up.
32B saved per iseq... - 06:13 PM Revision 90529c25 (git): Raise YJIT’s `case` specialization limit to 256 (#18374)
- Raise YJIT case dispatch specialization limit to 256
-
05:38 PM Feature #22231: Add `IO::Buffer#index`
- Thanks for taking this.
Matz asked for out-of-range `offset` and `length` to return `nil` rather than raise. Assuming you have no objection to that direction, there are a few points I would like to think through.
The first is wheth... -
12:32 PM Feature #22231: Add `IO::Buffer#index`
- Thanks for creating this issue, I will review the details.
- 03:04 PM Revision 065a5592 (git): [ruby/json] Add JSON::ParserError#json_path
- (https://github.com/ruby/json/pull/1062)
Add JSON::ParserError#json_path
https://github.com/ruby/json/commit/9ae76bdd3d
Co-authored-by: Jean Boussier <byroot@ruby-lang.org> -
01:34 PM Revision b548f16e (git): Make union for positions and succ_index_table in rb_iseq_constant_body
- We only use either positions and succ_index_table (when VM_INSN_INFO_TABLE_IMPL == 2,
positions is converted to succ_index_table), so we waste 8 bytes in
rb_iseq_constant_body. This changes it so that they are in a union. -
12:51 PM
Feature #21700 (Closed): `IO::Buffer.map`: offset argument is "broken" and needs to be made more useful
- Applied in changeset commit:git|53bc08564542206d0f93dfe984059e245ad16d46.
----------
Expose `IO::Buffer` mapping alignment. (#18474)
[Feature #21700] - 12:50 PM Revision 53bc0856 (git): Expose `IO::Buffer` mapping alignment. (#18474)
- [Feature #21700]
-
12:10 PM Revision 2449a13a (git): Hash::[] start from a right-sized hash
- Saves on potentially having to reallocate multiple times.
-
12:08 PM Bug #22260 (Open): Ruby::Box: SIGSEGV when calling a method inside an isolated Proc defined at class/module body (RUBY_BOX=1)
- ## Summary
Under `RUBY_BOX=1`, any method call inside a Proc isolated by `Ractor.make_shareable` (or `Proc#isolate`) and defined at a class/module body crashes the VM:
```console
$ RUBY_BOX=1 ruby -e 'module M; L = Ractor.make_sha... -
11:50 AM
Bug #22219 (Closed): IO::Buffer#free, #resize and #transfer should raise FrozenError if the receiver is frozen
- Applied in changeset commit:git|5ebbf33a289a314d424fd2b51f5476b0959f4ad3.
----------
Respect frozen `IO::Buffer` lifecycle state. (#18473)
[Bug #22219] - 11:50 AM Revision 5ebbf33a (git): Respect frozen `IO::Buffer` lifecycle state. (#18473)
- [Bug #22219]
-
11:32 AM
Bug #21672 (Closed): `IO::Buffer.new` does not check that flags are valid
- Applied in changeset commit:git|d3bf4529e3553f25104a2f80a5335e536e36bd90.
----------
Validate `IO::Buffer` constructor flags. (#18470)
[Bug #21672] - 11:32 AM Revision d3bf4529 (git): Validate `IO::Buffer` constructor flags. (#18470)
- [Bug #21672]
-
11:14 AM Revision ddb7df37 (git): Front-load slower compilation shards
- Start slower and less predictable shards earlier to reduce the overall
workflow completion time. -
11:12 AM
Bug #22195 (Closed): IO::Buffer read after free silently returns empty data instead of raising
- Applied in changeset commit:git|281c2d4c19f3e7a10772ae0e62ba01ae3695500a.
----------
Document `IO::Buffer#free` empty state. (#18471)
[Bug #22195] - 11:12 AM Revision 281c2d4c (git): Document `IO::Buffer#free` empty state. (#18471)
- [Bug #22195]
- 11:00 AM Revision cc706f39 (git): Clarify `IO::Buffer` slice validity documentation. (#18469)
-
10:31 AM Bug #19970 (Closed): Eval leaks callcache and callinfo objects on arm32 (linux)
- It has been fixed at 1c97abaabae6844c861705fd07f532292dcffa74 == https://bugs.ruby-lang.org/issues/19907.
I confirmed it with arm32v7/ubuntu:noble docker image on qemu-user-static.
```
root@1294e0e49506:/ruby/tmp/master# for commit ... -
10:31 AM Revision 042e2bfd (git): Process.warmup: recompute allocatable_bytes
- A problem I ran into in production, is that the boot sequence,
which tend to be allocation heavy, would cause the `allocatable_bytes`
(or previous version equivalent) to grow much higher than what the
application runtime actually needs.
... -
09:24 AM Bug #22242: SEGV in method dispatch (`vm_call_iseq_setup_kwparm_nokwarg` / `def_iseq_ptr`) on Ruby 4.0.6 — Rails CI
- A `VM_CHECK_MODE` build turns this from a rare SEGV in random places into an
assertion at the moment the corrupted call cache is used, and the assertion
says the cc is holding a reclaimed cme.
```
RUBY_CONFIGURE_OPTS="cppflags=-DVM... - 09:06 AM Revision 09fdc3be (git): Avoid unsafe zero-length `IO::Buffer` operations. (#18465)
- - All `null?` buffers will result in zero-length operations.
-
08:54 AM Revision 37dc070b (git): [ruby/rubygems] Note that the patch level options also imply strict
- They flip the same strict flag as --filter-strict, so the cooldown
caveat applies to them too. Review finding UX-1 (round 3).
https://github.com/ruby/rubygems/commit/92933f7b7b
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
08:54 AM Revision 4e7d55bb (git): [ruby/rubygems] Document that strict mode carries no cooldown annotations
- Review finding UX-3 (round 2).
https://github.com/ruby/rubygems/commit/0fe5f1591e
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
08:54 AM Revision 5c26e1ff (git): [ruby/rubygems] Evaluate cooldown remaining days against a single timestamp
- The resolver already pins its cooldown clock via cooldown_now; do the
same here so every annotation in one run shares the same reference
time. Review finding API-2 (round 2).
https://github.com/ruby/rubygems/commit/8a945d0d61
Co-Author... -
08:54 AM Revision 8f3d809e (git): [ruby/rubygems] Include the source in the matching_specs memo key
- Unreachable today because specs_for_outdated_check yields one spec per
name, but keying on the argument that feeds the computation keeps the
cache honest. Review finding API-1 (round 2).
https://github.com/ruby/rubygems/commit/e710e9ef9... -
08:54 AM Revision 37ba8a69 (git): [ruby/rubygems] Pin the singular form of the cooldown remaining-days note
- No test exercised the "1 more day" path. Review finding GEM-2.
https://github.com/ruby/rubygems/commit/a1baec1d4b
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
08:54 AM Revision 6b103760 (git): [ruby/rubygems] Add a strict-mode regression test for outdated with cooldown
- In strict mode the resolved version is already cooldown-filtered, so no
cooldown annotations appear. Pin that down. Review finding UX-4.
https://github.com/ruby/rubygems/commit/6f564d219a
Co-Authored-By: Claude Fable 5 <noreply@anthrop... -
08:54 AM Revision ecea2620 (git): [ruby/rubygems] Unnest the interpolation in the outdated cooldown column
- Review finding GEM-1.
https://github.com/ruby/rubygems/commit/595c21856d
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
08:54 AM Revision f474b2db (git): [ruby/rubygems] Memoize matching_specs in bundle outdated
- The candidate list was recomputed for the same gem by
retrieve_active_spec and newest_out_of_cooldown. Review finding API-2.
https://github.com/ruby/rubygems/commit/1be428df41
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
08:54 AM Revision 9a37be87 (git): [ruby/rubygems] Document the newest out-of-cooldown tokens in bundle-outdated(1)
- The man page enumerates the cooldown output tokens, so the two tokens
added for #9624 belong there too. Review finding UX-1.
https://github.com/ruby/rubygems/commit/9d227a2b10
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
08:54 AM Revision ee8f5c6e (git): [ruby/rubygems] Say "out of cooldown" in the outdated table too
- The table said "1.5.0 available", but "available" already denotes the
opposite state in the install summary, which reports a blocked version
as "(available in 6 days)". Reuse the exact antonym of the prose
"in cooldown for N more days" i... -
08:54 AM Revision b8f4f8ab (git): [ruby/rubygems] Show the newest out-of-cooldown version in bundle outdated
- With cooldown enabled, "newest" is often a version still inside the
cooldown window and the newest version bundler would actually adopt was
not shown anywhere. Append it to the outdated line, both in the
parseable output and in the table... -
08:46 AM Revision 4bdea88e (git): [ruby/rubygems] Do not rely on the host RubyGems for literal glob joins in Bundler
- Bundler runs against whatever RubyGems the host provides, so calling `Gem::Util.glob_files_in_dir` left `bundle cache` pruning able to resolve a cache entry named `~` to the real home directory and hand it to `FileUtils.rm_rf` on every R...
-
08:46 AM Revision ae04a9d9 (git): [ruby/rubygems] Avoid interpolating install paths into glob patterns
- `gem contents`, `gem stale` and the `gem setup` old-doc cleanup returned no matches when the install path contains glob metacharacters. For `--lib-only`, glob `raw_require_paths`, which stay relative to `full_gem_path`, rather than `requ...
-
08:46 AM Revision 08735aec (git): [ruby/rubygems] Resolve globbed entries literally in Gem::Util.glob_files_in_dir
- Matched entries were resolved with File.expand_path, so an entry starting with `~` was expanded into the home directory. A cache directory named `~` made `bundle cache` pruning delete files under `$HOME`, and an entry like `~foo` raised ...
-
08:36 AM Revision e6a0e37b (git): [ruby/rubygems] Read offset-less created_at timestamps as UTC
- A created_at without a time zone offset was parsed as local time, so a
third-party server that omits the offset shifted the cooldown window by
whatever offset the machine running bundler happened to have.
rubygems.org always sends one, s... -
08:36 AM Revision 298a40c4 (git): [ruby/rubygems] Warn when a configured cooldown value is invalid
- A cooldown from a config file or from BUNDLE_COOLDOWN went through
value.to_i, so "abc" became 0 and "-5" stayed negative, and either one
disabled the cooldown without saying so. Read it with Integer() and
warn, naming the effect: such a... -
08:36 AM Revision ee1da20d (git): [ruby/rubygems] Memoize cooldown settings lookup during resolve
- The resolver asks for the cooldown once per candidate spec, paying a
Bundler.settings lookup each time, so read it once per remote. That
makes the value a snapshot, which is fine because nothing changes the
setting after the sources are ... -
08:36 AM Revision 0dc80ae3 (git): Bump the vcpkg builtin-baseline for the gmp msys2 404
- The gmp portfile at the previous baseline downloads
autoconf2.71-2.71-3-any.pkg.tar.zst from msys2 mirrors by a pinned URL,
but msys2 has rotated the package to -4, so every mirror returns 404 and
Windows CI fails to build gmp whenever t... -
07:12 AM Revision f01bf185 (git): Refactor core_hash_merge_ptr and core_hash_merge_kw
- Rather than start from a mutable hash created with `newhash` or
`duphash`, and then iteratively insert into it, it's preferable to
start from a constant hidden hash, so that we can directly allocate
the final hash with the right size.
F... -
05:31 AM Revision 3570d985 (git): Preserve compilation sources for failed job re-runs
- Keep the source artifact when compilation fails so failed shards can be
re-run. Allow source preparation itself to overwrite the artifact. - 04:46 AM Revision 4c978a5b (git): Make empty `IO::Buffer` slices valid. (#18461)
-
04:27 AM Revision df55fe4a (git): Remove redundant debug compiler jobs
- Avoid separate builds for checks already enabled by `RUBY_DEBUG` or
`RUBY_DEVEL`. - 04:04 AM Revision 4d5ae426 (git): Document dynamic `IO::Buffer` slice validity. (#18459)
- 03:04 AM Revision 98606e21 (git): [ruby/rubygems] Document Bundler proxy semantics in bundle-config
- The switch from net-http-persistent to Gem::Request (https://github.com/ruby/rubygems/pull/9786) aligned
Bundler proxy handling with RubyGems: https_proxy now takes precedence
for https sources, proxy credential variables follow the sche... - 03:04 AM Revision cc4a4828 (git): [ruby/rubygems] Restore NO_PROXY wildcard support in Bundler proxy detection
- net-http-persistent treated NO_PROXY="*" as a request to bypass the
proxy for every host, but Gem::URI::Generic.use_proxy? parses "*" as a
literal hostname that never matches, so the wildcard stopped disabling
proxies after the switch to... - 03:04 AM Revision e6e55f97 (git): [ruby/rubygems] Disable transport-level retries on Bundler connections
- Gem::Request already resends requests on stale connections and
Bundler::Retry retries failed requests, so the Gem::Net::HTTP retry
layer (max_retries defaults to 1) only multiplied the number of
attempts, doubling the worst-case wait on ... - 02:47 AM Revision 10465356 (git): [ruby/rubygems] Preserve native extensions during implicit clean
- https://github.com/ruby/rubygems/commit/3abbef3c18
- 02:34 AM Revision f9f83168 (git): Bump the github-actions group across 1 directory with 4 updates
- Bumps the github-actions group with 4 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action), [github/codeql-action/upload...
- 02:19 AM Revision e2044876 (git): [ruby/rubygems] Honor NO_PROXY="*" in Gem::Request::ConnectionPools
- curl and net-http-persistent treat a "*" entry as bypassing the proxy
for every host, and Bundler's fetcher already honors it, but no_proxy?
never matched it, so gem commands kept using the proxy.
https://github.com/ruby/rubygems/commit... -
02:14 AM Bug #22258 (Open): Update bundled json to >= 2.19.2 on ruby_4_0 (CVE-2026-33210)
- The ruby_4_0 branch bundles json 2.18.0 (ext/json/lib/json/version.rb), which is affected by CVE-2026-33210 / GHSA-3m6g-2423-7cp3 (format string injection when parsing with allow_duplicate_key: false, fixed in json 2.19.2 — there is no p...
-
02:04 AM Revision c5199f46 (git): Preserve old call cache entry before method lookup
- Read the previous method entry before slow lookup invalidates its call
cache. This allows debug counters and assertions to be enabled
together. -
12:52 AM Revision 489b4539 (git): [DOC] Add to doc for Pathname#directory?
-
12:51 AM Revision 1d483d07 (git): [DOC] Doc for File::directory?
-
12:50 AM Revision 7282adc5 (git): [DOC] Doc for File::unlink
-
12:49 AM Revision 37c98349 (git): [DOC] Doc for File::ctime
-
12:45 AM Revision b4809ba4 (git): [DOC] Tweaks for File::chardev? (#18427)
-
12:45 AM Revision 446729fb (git): [DOC] Tweaks for File::blockdev?
-
12:40 AM Revision 92bce8ad (git): [ruby/rubygems] Use `delete_prefix` to strip the `subjectAltName` email tag
- - `Gem::Security::Signer#extract_name` matched `/\Aemail:/` then read
the non-matching part of the string out of `$'`.
- Prefer `delete_prefix("email:")` as it's understandable by mortals.
- Consequently get rid of a RuboCop disable ... -
12:13 AM Revision 05cb6520 (git): Reduce memory for proc objects
- We know the type of the proc object at allocation time, so we can allocate
exactly the amount of memory needed for that type.
We can also shrink the type from a 4 byte enum since there are only 4 types
of procs. This allows us to put so...