Activity
From 10/24/2026 to 10/30/2026
Today
-
08:52 AM Bug #21270: init_fast_fallback_inetsock_internal (default for TCPSocket.new/TCPSocket.open) isn't fiber aware
- The DNS side has the same problem. Only `rsock_getaddrinfo` asks the scheduler's `address_resolve`, and the fast-fallback path resolves on its own threads, so the default `TCPSocket.new` never calls the hook. The `address_resolve` docs l...
- 05:47 AM Revision d531b6bc (git): [ruby/rubygems] Respect enclosing group and platforms for gemspec dependencies
- Since Bundler 2.6.4, `gemspec` adds its gem without normalizing options,
so a surrounding `group`, `platforms` or `install_if` block is ignored.
Fixes https://github.com/ruby/rubygems/pull/9989.
https://github.com/ruby/rubygems/commit/... -
05:34 AM Revision 4abb1199 (git): [ruby/rubygems] Don't report locked gems in the cooldown summary
- When a source has `cooldown:` set, any resolve that keeps gems at their
locked versions, such as `bundle lock --add-platform` or `bundle
install` after a Gemfile change, listed every locked gem with a newer
release inside the window as "... -
05:01 AM Revision a51b4139 (git): ZJIT: Speculate on nil bounds for NewRangeFixnum
-
05:01 AM Revision 18a2083c (git): ZJIT: Stop assuming NewRange uses Fixnum..Fixnum
-
05:01 AM Revision f91fd232 (git): ZJIT: Recompile when a coerce_to guard fails
-
03:41 AM Revision 7be3ed7f (git): [ruby/prism] Speed up error formatting
- https://github.com/ruby/prism/commit/37d2d0d273
-
03:41 AM Revision 31d395bd (git): [ruby/prism] Cap context lines at window size in error formatting
- https://github.com/ruby/prism/commit/7246bf5b4b
-
03:41 AM Revision 2456bac5 (git): [ruby/prism] Error formatting gutters
- Do not hard-code the potential values for gutters, instead build
them on the fly based on what is actually found in the range of
the errors.
https://github.com/ruby/prism/commit/39c4cce3d7 -
03:41 AM Revision 0a13de1f (git): [ruby/prism] Check UTF-8 quality only once in error formatting
- Instead of checking each line individually, sort all of the errors
and do a single walk over the source to figure out if it is valid
UTF-8 to determine how to format the errors.
https://github.com/ruby/prism/commit/d30da30607 -
03:41 AM Revision 7eaf64c6 (git): [ruby/prism] Display only windows of a line in error formatting
- When an error is very far into a line, we were previously displaying
the whole context line above it and then padding out spaces before
the error message. For pathological cases, this ends up being really
bad. Instead we now display erro... - 03:31 AM Revision fb01ba3a (git): Define `IO::Buffer#==` natively. (#19604)
- 02:51 AM Revision 2a3eacc9 (git): ZJIT: Fold TrueClass, FalseClass, NilClass to_s to frozen string
- The C builtin just returns a constant, so fold to that frozen string
constant. - 02:51 AM Revision 68c7ecc3 (git): ZJIT: Add tests for NilClass, TrueClass, FalseClass to_s
- 02:34 AM Revision 5f1eb924 (git): ZJIT: Fold BoxBool with constant input
- 02:34 AM Revision 02cd7c94 (git): ZJIT: Fold IsBitEqual with same Ruby object
- 02:34 AM Revision fd258596 (git): ZJIT: Fold IsBitEqual with identical SSA value
- 02:34 AM Revision 99824554 (git): ZJIT: Add tests demonstrating current IsBitEqual behavior
- 01:58 AM Revision 7704181e (git): ZJIT: Optimize Array != NilClass
- 01:58 AM Revision 599364e5 (git): ZJIT: Optimize String != NilClass
- 01:58 AM Revision d1a79485 (git): ZJIT: Optimize Integer != NilClass
- 01:58 AM Revision 3b150a90 (git): ZJIT: Add before tests for equality with nil
-
01:44 AM Revision ccb92217 (git): Don't write str2's code range back in rb_str_buf_append
- Since rb_enc_str_coderange(str2) is called first, str2_cr is never
UNKNOWN and rb_enc_cr_str_buf_cat returns it unchanged, so writing it
back to str2 is redundant. It is also an unsynchronized write to str2,
which may be a frozen string ... -
12:16 AM Revision 773003bd (git): Do not copy the receiver for every match in String#split
- With MMTk a string of any length is embedded, so rb_reg_search copied the whole receiver into each MatchData, and splitting a large string by a regexp took quadratic time. TestGemSafeYAML#test_load_block_scalar_strip_indicator_in_linear_...
-
12:16 AM Revision 46d53e73 (git): Reconfigure GNU make builds when the makefiles are stale
- GNUmakefile.sub had no rule to update GNUmakefile and verconf.mk, so verconf.mk kept the ABI version from the first configure and config.h followed it after abi.h was bumped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:16 AM Revision 820ced8d (git): Stop nmake when reconfig changed verconf.mk
- The running nmake keeps the values read from the old verconf.mk, so after an ABI version bump config.h was written with the old RUBY_ABI_VERSION and never updated again. Every compile then warned C4005, and mkmf checks with werror failed...
-
12:16 AM Revision 9953185a (git): Read mkmf.log as binary for the failure messages
- The log holds compiler output in the console code page, which is CP932 on Japanese Windows, so building the message raised ArgumentError and hid the actual failure.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:01 AM Bug #22451 (Closed): Coderange may be set incorrectly when concatenating a string into itself
- Applied in changeset commit:git|b740f7d553e6ee4abdff8847760394b4e6ea389c.
----------
Don't write str2's code range back in rb_str_buf_append
Since rb_enc_str_coderange(str2) is called first, str2_cr is never
UNKNOWN and rb_enc_cr_str_b... -
12:01 AM Revision b740f7d5 (git): Don't write str2's code range back in rb_str_buf_append
- Since rb_enc_str_coderange(str2) is called first, str2_cr is never
UNKNOWN and rb_enc_cr_str_buf_cat returns it unchanged, so writing it
back to str2 is redundant. It is also an unsynchronized write to str2,
which may be a frozen string ...
10/29/2026
-
11:59 PM Revision 14733af5 (git): Fix missed write barrier when duplicating a box classext's m_tbl
- Since 44fff96b0b (Attach a box classext to its class before filling it in)
the half-built classext is reachable by the GC while it is being filled,
but the new m_tbl was only stored on it once it was complete, and for an
ICLASS the GC on... -
11:25 PM Revision d5d40d27 (git): Cache refined &:sym funcs only in the owning Ractor's table
- Under refinements, vm_caller_setup_arg_block caches the func it makes for
`&:sym` in the cref's refinements table. The cref belongs to whichever
Ractor ran `using`, usually main, but any Ractor calling a method defined
there reached the ... -
09:47 PM Revision 0abc5521 (git): Keep master's allocation order in the Windows downward sweep
- Only the order of the frees matters to the NT heap. Pushing each region as it closed also made allocation run upwards across the whole page, and the heap then faulted in more pages than with master.
Co-Authored-By: Claude Opus 5.5 <nore... -
09:47 PM Revision d1fe3dab (git): Clarify the comments on the Windows downward sweep
- Allocation runs upwards within each free region rather than across the whole page, and a slot that heap_page_add_free_region returns later goes to the head of the region list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:47 PM Revision f34d844d (git): Sweep heap pages downwards on Windows
- The bump pointer allocator (4f259bc25d) allocates upwards within a page, so sweeping upwards frees the slots' malloc'ed buffers in the order they were allocated. That fragments the NT heap, and string_malloc_pressure of ruby-bench gets s...
-
09:47 PM Revision 82582337 (git): ZJIT: Avoid accumulating send counters during specialization (GH-19485)
- The fixed-point optimizer can revisit a dynamic send after inlining.
Discard runtime counters from its previous specialization attempt before
retrying, while preserving counters for successful replacements.
Cover argument features, call... -
09:14 PM Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
- Eregon (Benoit Daloze) wrote in #note-12:
> @dalehamel Could you update the dev-meeting summary at https://bugs.ruby-lang.org/issues/22417#note-2 to reflect the latest patch?
> ...
Thanks for the guidance, I updated the comment and ope... -
08:53 PM Revision 461085c2 (git): ZJIT: Exit with the original send's stack on stack overflow (GH-19538)
- SendDirect and PushInlineFrame carry a frame state with the callee's
normalized arguments: keywords reordered or default-filled, splats
expanded, rest packed, a nil block arg stripped. Their stack overflow
check side-exits to re-run the ... -
08:52 PM Revision 54d09881 (git): YJIT: Fall back for explicit keywords in IFUNC block calls
- The IFUNC fast path passes raw keyword values to rb_vm_yield_with_cfunc
without packing them into a Hash. For example, an Enumerable iterator
that yields [], key: i loses the keyword name when called by each_slice.
Use VM dispatch for V... -
08:49 PM Revision 1654a6a0 (git): ZJIT: Focus alias redefinition regression tests
- Split normal send and super into separate tests. Remove the inlining controls and source-method redefinition check so each test covers only alias invalidation.
-
08:49 PM Revision 67a320db (git): ZJIT: Guard lookup entries when resolving aliases
- Re-aliasing a module method invalidates the lookup CME, not the resolved
alias target. Keep the lookup entry for method-redefinition patchpoints
in sends and super calls, while retaining the resolved entry for dispatch
and frame setup.
... -
06:20 PM Revision 64ae80dd (git): ZJIT: Clarify expandarray splat handling
-
06:20 PM Revision 1b88c2e4 (git): ZJIT: Use unboxed integers for the expandarray rest loop
- Use IntAdd and IntLt to keep loop control in CInt64 and avoid Fixnum boxing and unboxing.
-
06:20 PM Revision 0dde38a1 (git): ZJIT: Support expandarray with a rest array
- Build forward rest expansion for exact Arrays using existing HIR instructions.
-
05:59 PM Bug #4559: Proc#== does not match the documented behaviour
- I don't know whether this should be the place to discuss it anymore because it is old, but I think currently `Proc#==` still does not match the documented behavior. The current documentation in Ruby 4 says `self == other` "returns whethe...
-
04:59 PM Revision 0819f553 (git): [ruby/openssl] ocsp: use ossl_want_uninitialized() in BasicResponse#initialize
- Commit https://github.com/ruby/openssl/commit/5f104287930a (ocsp: allocate OpenSSL objects in #initialize{,
_copy}, 2025-12-07) forgot to add this line.
https://github.com/ruby/openssl/commit/787afbf9f8 -
04:59 PM Revision 45bcb337 (git): [ruby/openssl] hmac: allocate OpenSSL objects in #initialize{,_copy}
- Allocate EVP_MD_CTX in OpenSSL::HMAC#initialize and #initialize_copy
instead of .allocate. <https://github.com/ruby/openssl/pull/1046>
made similar changes to several other classes, but overlooked HMAC.
This fixes crash in OpenSSL::HMAC... -
04:58 PM Revision c34b1565 (git): [ruby/openssl] test_ssl.rb: Refactor test_pqc_sigalg
- * Align key numbers with the pattern in test/openssl/utils.rb setup: rsa-1 for
CA, rsa-2 for server, rsa-3 for client.
* Use rsa-2 for server, because rsa-1 is already used for CA (@ca_key,
@ca_cert).
* Use mldsa65-1 for CA and mldsa... - 03:57 PM Revision a6c4c8e8 (git): [ruby/openssl] ssl: add SSLSocket#min_version= and #max_version=
- Allow setting the supported protocol version range per connection.
They are the SSLSocket counterparts of SSLContext#min_version= and
#max_version=.
This is a step toward configuring the SSL object directly from
callbacks instead of swi... -
03:13 PM Revision 3fa45471 (git): [ruby/prism] Avoid recursion in parsing escapes
- Previously we would pass forward the flags and then recurse. Now
it's just a goto like we do when we want to lex the next token.
https://github.com/ruby/prism/commit/0c648e0f7a -
02:55 PM Bug #22390: ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
- @eightbitraptor (Matt V-H) thx for taking a look. Just wanted to give a heads up that we managed to upgrade after a lot of experimentation with several GC tunings. We settled on setting RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR to 1.1 . We sus...
-
02:50 PM Revision 6cfd3b4a (git): [ruby/prism] Check depth limit for nested control and meta escapes
- https://github.com/ruby/prism/commit/a95907f011
-
10:53 AM Revision 61332e53 (git): Read the dir output for the symlink check as binary
- cmd.exe writes it in the console code page, which is CP932 in an ssh session, while IO.popen tags it as UTF-8 on Windows, so the regexp match raised ArgumentError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:14 AM Revision 7142a3de (git): Optimize `Hash.new(capacity:)`
- Since the dynamic AR-table refactoring, `Hash.new(capacity:)` no
longer allocate the ideal size for capacity `<= 8`, because the
capacity allocation happens in `#initialize`, hence after the
slot has been allocated.
To solve that, we ha... -
09:00 AM Revision c0813055 (git): Track the given members of Data#initialize without copying them
- Data#initialize copied the member list on every call to find the missing
keywords, then cleared the given ones. A byte per member is enough to
track what was given, and the member list is only needed to build the
error message, so look i... -
08:59 AM Revision d411489c (git): Use addcarry intrinsic for size overflow
-
08:56 AM Bug #22487 (Open): Allocation between GCs and peak RSS keep growing on master when large String buffers are dropped
- ## Summary
On master (637bd7cba1), a loop that repeatedly allocates a String with a 1 MiB buffer, without keeping any reference to the previous Strings, triggers GC after larger and larger amounts of allocation. Peak RSS keeps rising ... -
07:25 AM Feature #13241: Method(s) to access Unicode properties for characters/strings
- One thing I didn't see discussed much is `Script_Extensions`.
`Script` gives a single value for each code point, but `Script_Extensions` can return a set of scripts. The Japanese prolonged sound mark `ー` is a useful example: its Scrip... -
05:51 AM Feature #22486 (Open): Anonymous method
- I propose an API `Method.new(receiver, name = nil, &block)` to define an anonymous singleton method and `UnboundMethod.new(owner, name = nil, &block)` to define an anonymous instance method. The default value of `name` can be `:anonymous...
-
05:05 AM Feature #22485 (Open): ensure modifier
- Similar to the `rescue` modifier, an `ensure` modifier allows writing `ensure` block in one line: `do_something ensure clean_up`.
-
05:04 AM Feature #22484 (Open): Object#undef_singleton_method and Object#remove_singleton_method
- Equivalent to `singleton_class.undef_method` and `singleton_class.remove_method`.
- 02:54 AM Revision a34946d6 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.87.31 to 2.87.32
- [Release notes](https://github.com/taiki-e... -
02:40 AM Revision 0399e2ba (git): Suppress clangarg-mingw warnings
-
02:36 AM Revision bd8cf52b (git): Check RUBY_VERSION against the release version format
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
02:35 AM Revision 27d148a9 (git): Remove code for old rubies from spec_helper
- * `File.realpath` was introduced at 1.9.2.
* `Thread.report_on_exception` was introduced at 2.4.0. - 01:28 AM Revision 952e77c5 (git): Bump the github-actions group across 1 directory with 2 updates
- Bumps the github-actions group with 2 updates in the / directory: [cygwin/cygwin-install-action](https://github.com/cygwin/cygwin-install-action) and [cross-platform-actions/action](https://github.com/cross-platform-actions/action).
Up... -
01:20 AM Revision d176801d (git): Cache Struct members only on the owner Ractor
- struct_ivar_get caches a member list found on a superclass into the
subclass with rb_ivar_set. The ID has no "@", so it skips the Ractor
ownership check, and a Ractor that does not own the class ends up
writing class fields concurrently ... -
12:06 AM Feature #22483 (Open): Region forms of String#bit_get
- Impl: (WIP)
This ticket completes the region arguments of #22279 for `bit_get`. #22279 added the `(offset, length)` and `range` forms to `bit_set`, `bit_clear`, `bit_flip` and `bit_count`, and the commit message of #22118 announced th... -
12:01 AM Feature #22482 (Open): String#bit_index, a bit search for String bit operations
- Impl: (WIP)
This is a reply to the comment of Matz in #22399#note-3. It replaces the seven methods of #22399 and #22405 with one search method. The deferred methods can be written on top of it in Ruby, and the last section gives the m...
10/28/2026
- 10:45 PM Revision b62abdae (git): Faster rb_gc_handle_weak_references
- Pass objspace throughout the call chain.
For a script with 100k callcaches, major GC time improved for bothh
single-ractor and multi-ractor.
| Configuration | Baseline | Patched | Δ |
|---|---|---|---|
| single-ractor | 14.04 ms/major ... -
10:05 PM Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
- @dalehamel Could you update the dev-meeting summary at https://bugs.ruby-lang.org/issues/22417#note-2 to reflect the latest patch?
I think opening a PR to ruby/ruby would also be helpful to help review. -
10:02 PM Misc #22417: DevMeeting-2026-11-12
- * [Feature #21962] Add deep_freeze for recursive freezing (eregon)
* PR ready, following the semantics discussed at the dev meeting at RubyKaigi: https://github.com/ruby/ruby/pull/19529
* OK to merge it? -
10:01 PM Feature #21962: Add deep_freeze for recursive freezing
- PR to implement `deep_freeze` per the last comment & discussion at the dev meeting at RubyKaigi:
https://github.com/ruby/ruby/pull/19529 -
09:51 PM Feature #22376 (Closed): Undefine the allocator for Class
- BTW, this was merged in https://github.com/ruby/ruby/pull/18964, updating the issue status
-
09:49 PM Feature #22376: Undefine the allocator for Class
- There used to be a similar issue in RSpec (IIRC) but I've fixed it a long time ago, when TruffleRuby did the same change as proposed here.
I think `Class.method(:new)` is quite rare, and `Class.instance_method(:new)` is more correct any... -
09:30 PM Feature #22376: Undefine the allocator for Class
- Claude code reports that (I'm not sure it is important or not):
---
FYI, this changes the result of `Class.method(:new)`, and code that rebinds it to another class now fails:
```ruby
class H; def initialize(x) = (@x = x); end
... - 09:30 PM Revision eb1a765b (git): ZJIT: Keep array flags cached across ArrayAset
- An element store never changes the array's flags, so we can keep
cached RBASIC_FLAGS loads in the load/store optimization pass instead
of clearing all cached loads. - 09:30 PM Revision 0a7b079d (git): ZJIT: Avoid emitting WriteBarrier for immediate values
- Add a Function::write_barrier helper that checks whether the value is
known to be an Immediate before emitting a WriteBarrier instruction.
Previously, WriteBarriers with immediate values would only be removed
in the fold_constants pass.... - 09:30 PM Revision c50cc8dd (git): ZJIT: Constrain effects of ArrayAref{,Checked}
- ArrayAref and ArrayArefChecked only read memory and do not write to it.
Constraining their effects from effects::Any to read_write(Memory, Empty)
prevents them from invalidating cached loads in the load/store
optimization pass. - 09:30 PM Revision 79858343 (git): ZJIT: Add new snapshot tests
- So that later commits can optimize them
- 08:32 PM Revision 8f292dad (git): Record a native thread's id from the thread itself
- pthread_create can write the new thread's id through its first argument
after the thread has started (Apple's libpthread and musl do). Since
dce74ebf04, a shared native thread exits and frees its rb_native_thread
when the pool has more t... -
08:25 PM Revision 1b06b950 (git): Update to ruby/spec@9c936cf
- 08:10 PM Revision 810a5a1d (git): [DOC] Fix default mapping in String case method signatures (#19582)
- The call-seq for String#upcase, #downcase, #capitalize, #capitalize!,
and #swapcase showed `mapping = :ascii`, but these methods default
to Unicode case mapping when no argument is passed. -
07:34 PM Bug #22481 (Open): `break` in block passed to Method#to_proc cause [BUG] Stack consistency error
- ```ruby
def m(a) = yield(a)
def run = method(:m).to_proc.(7) { break }
p run
```
Found by fuzzing. Crashes all released versions and on trunk. I haven't investigated a fix. -
06:35 PM Bug #21142: Lazy enumerator `.each_with_index` ignores `.take(0)` before it
- @nobu
The above commit changed the behavior such that `lazy#each_with_index { ... }` is no longer running the block and just returning the enumerator.
4.0:
```
$ ruby -ve 'arr = []; p 3.times.lazy.each { |*a| arr << a }; p arr;'
r... -
05:51 PM Revision 5127bd0d (git): ZJIT: Group inline statement management (#19526)
- Minor refactor to make the code easier to read.
This was suggested by https://github.com/ruby/ruby/pull/18871/changes#r4134748979. -
01:01 PM Feature #22437: Speed up creation and basic operations of Struct / Data
- 3rd PR is here. [Track the given members of Data#initialize without copying them](https://github.com/ruby/ruby/pull/19581)
Before digging into where to store the members, I'm going to look into the ISEQ approach first. -
12:38 PM Bug #22479: File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
- ruby_3_4 commit:72d9d4b935fee84c5c6d9ca7efcf269cf2ddb23b merged revision(s) commit:670f6c1541838af7f0d945af63745ff8d0438122.
-
07:56 AM Bug #22479: File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
- I couldn't reproduce the issue on my machine, but the fix clearly makes sense, so I merged it. Thanks!
-
07:54 AM
Bug #22479 (Closed): File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
- Applied in changeset commit:git|670f6c1541838af7f0d945af63745ff8d0438122.
----------
Keep the symlink target alive while realpath_rec reads it
realpath_rec reads the names of a symlink target through a raw pointer
into the string retur... -
05:30 AM Bug #22479: File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
- Pull request: https://github.com/ruby/ruby/pull/19573
-
05:26 AM Bug #22479 (Closed): File.realdirpath returns a wrong path when GC runs while it resolves a relative symlink
- `File.realdirpath` can return a wrong path for a path behind a relative symlink, when GC runs during the call.
The result is one of these:
* the unresolved symlink path, or
* a path with NUL bytes, so that `Pathname.new` raises `A... -
12:31 PM Revision 72d9d4b9 (git): merge revision(s) 670f6c1541838af7f0d945af63745ff8d0438122: [Backport #22479]
- [PATCH] Keep the symlink target alive while realpath_rec reads it
realpath_rec reads the names of a symlink target through a raw pointer
into the string returned by rb_readlink, while it calls itself to resolve
t... -
12:25 PM Revision 637bd7cb (git): Format box IDs with rb_sprintf
- Avoid creating an intermediate string when inspecting a box.
-
12:04 PM Bug #22477: rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
- merged into ruby_3_4 at https://github.com/ruby/ruby/commit/fc063c977230ecde18d6a79187e82b7794e6b716.
-
12:04 PM Revision fc063c97 (git): Add a signal fence in rb_ec_clear_vm_stack()
- Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_frames() called from a signal
handler returns early instead of walking a stack that is no longer set
on the ec. But these are plain ... -
11:03 AM Bug #22480 (Closed): Ruby's release tarballs are not POSIX compliant since 2018
- Applied in changeset commit:git|130c9ec44bd35c7319cdc99c301419188510e3a9.
----------
[Bug #22480] make release tarballs POSIX compliant
Ruby's own release tarballs are not POSIX compliant since 2018, because
the end-of-archive marker (... -
10:27 AM Bug #22480 (Closed): Ruby's release tarballs are not POSIX compliant since 2018
- Hi,
This is a bit of a curiosity, but I noticed that Ruby's release tarballs are not POSIX compliant, because they're missing an end-of-archive marker.
See https://pubs.opengroup.org/onlinepubs/9799919799/utilities/pax.html#:~:text... -
11:03 AM Revision 130c9ec4 (git): [Bug #22480] make release tarballs POSIX compliant
- Ruby's own release tarballs are not POSIX compliant since 2018, because
the end-of-archive marker (two blocks of zeros) were missing.
The end-of-archive is written when the TarWriter is closed, which is
what this commit does explicitly.... -
10:39 AM Feature #22014: Support `||` and `&&` operations in coverage
- **+1** on this
Branch coverage is now a CI gate in a lot of Ruby projects, and `&&`/`||` is the one place where Coverage reports code as fully covered even though part of it never ran. For example:
```ruby
def publishable?(p... - 09:37 AM Revision 436e72e7 (git): Update default gems list at 8e87705be88d3f1e8bdb8f75ea7e8e [ci skip]
-
09:35 AM Revision 8e87705b (git): [ruby/io-console] bump up to 0.9.5
- https://github.com/ruby/io-console/commit/8ba28809c0
- 07:54 AM Revision 670f6c15 (git): Keep the symlink target alive while realpath_rec reads it
- realpath_rec reads the names of a symlink target through a raw pointer
into the string returned by rb_readlink, while it calls itself to resolve
those names. RB_GC_GUARD(link_orig) keeps that string alive only for an
absolute target. For... -
06:38 AM Revision b1f8ac36 (git): Preserve ensure handlers for unreachable labels
- Ensure catch entries must remain active when dead code removal leaves
unplaced range labels. Dropping them skips ensure clauses on exceptions.
See https://github.com/ruby/ruby/pull/19513#issuecomment-6460531535. -
05:56 AM Revision e80cd771 (git): [ruby/prism] Define PRISM_OOM
- So we have a centralized place to handle out of memory errors.
https://github.com/ruby/prism/commit/14969912cc -
05:36 AM Revision 65c8fc01 (git): [ruby/prism] Avoid strtoul for numbered references
- https://github.com/ruby/prism/commit/432884bd14
-
05:16 AM Revision c7e123c7 (git): [ruby/prism] Bump to v2.1.0
- https://github.com/ruby/prism/commit/ca15cb3d8b
- 04:22 AM Revision 820ad50e (git): Update default gems list at 0c359f342df6f63102e12ac938f90b [ci skip]
-
04:21 AM Revision 0c359f34 (git): [ruby/rubygems] Bump Rubygems version to 4.1.0.beta3
- https://github.com/ruby/rubygems/commit/b1665cc3d1
-
04:21 AM Revision 8f7eb9c4 (git): [ruby/rubygems] Bump Bundler version to 4.1.0.beta3
- https://github.com/ruby/rubygems/commit/f0b70a34eb
-
03:46 AM Revision 16cf9129 (git): [ruby/mmtk] Register pinned root objects in PinningRegistry
- We need to register objects pinned from the root in PinningRegistry for
rb_gc_impl_pinned_p to work properly.
https://github.com/ruby/mmtk/commit/6e8ad61924 -
03:46 AM Revision c27aa172 (git): ZJIT: Specialize ifunc before invokeblock fallback (#19549)
-
03:09 AM Feature #22478: RbConfig::CONFIG could be Ractor-shareable by default?
- The methods in `mkmf.rb` sometimes modify it.
-
02:28 AM Revision 8eaa862c (git): [ruby/rubygems] Compare a rubygems source with itself without building its remotes
- SpecGroup#merge compares the sources of candidates, which are nearly always the same object, and every comparison built the credential-less remote strings of both sides. This removes about 300,000 allocations from `bundle update` in the ...
-
02:28 AM Revision a4af4a22 (git): [ruby/rubygems] Reduce allocations while parsing YAML in Gem::YAMLSerializer
- Gem metadata is loaded with this parser instead of Psych since it became the default, and it allocated about three times as many objects per gemspec. Most came from stripping lines to measure their indentation, keyword arguments to the n...
-
02:28 AM Revision 71f231d3 (git): [ruby/rubygems] Avoid partition in prefer_content_addressable
- It runs for every platform match during resolution, and Enumerable#partition allocates three arrays plus a memo and an ifunc per call even when no candidate is content addressed. Finding the first content-addressed candidate before sorti...
-
02:19 AM Revision c7302c98 (git): [DOC] Doc for MatchData#[]
-
01:09 AM Revision 6926e656 (git): [ruby/rubygems] Avoid a word codespell flags in a YAML serializer test
- codespell read "caf\xC3\xA9", the bytes of "café" spelled out in a string literal, as a misspelling of "calf". Any raw UTF-8 bytes serve the test, so use those of a Japanese character instead.
https://github.com/ruby/rubygems/commit/271... -
01:09 AM Revision 6b66a7e1 (git): [ruby/rubygems] Compare YAML null scalars without allocating an array
- ["~", "null"].include?(val) allocates an array on every plain scalar on Ruby 3.3 and older, where include? on an array literal is not optimized. Use a frozen constant instead.
https://github.com/ruby/rubygems/commit/8319439744
Co-Autho... -
01:09 AM Revision d5b9496e (git): [ruby/rubygems] Keep quoted commas inside a YAML flow sequence entry
- A flow sequence was split on every comma, so a quoted entry containing one, as in ["x, y", z], came back as the fragments "\"x" and "y\"". Scan the entries so a quoted one is taken whole.
https://github.com/ruby/rubygems/commit/b3de2a6c... -
01:09 AM Revision 41e7a8f7 (git): [ruby/rubygems] Unescape the remaining YAML double-quoted escapes
- Psych writes NEL as "\N" and a BOM or other non-printable characters as "\uXXXX" or "\UXXXXXXXX", but those escapes stayed in the loaded string as is. Restore them along with "\_", "\L" and "\P". Metadata is read as binary, so a non-ASCI...
-
01:09 AM Revision c593a9e7 (git): [ruby/rubygems] Keep spaces beyond the indentation on blank-looking block scalar lines
- A block scalar line holding only spaces became an empty line even when it had more spaces than the indentation, which are content in YAML. Gem::YAMLSerializer.dump writes such lines for strings like "x\n \ny\n", so they did not survive...
-
01:09 AM Revision 7e58ec2f (git): [ruby/rubygems] Apply the strip chomping indicator of YAML block scalars
- The strip indicator only took effect when it was the whole header, so "|2-" written by Psych kept the trailing line break, and even "|-" removed just one of several. Read the chomping indicator next to an indentation indicator and remove...
-
01:09 AM Revision d0693e50 (git): [ruby/rubygems] Honor the indentation indicator of YAML block scalars
- Psych writes a block scalar whose first line starts with spaces as "|2", but the parser ignored the digit and took the indentation from that first line. A description such as " Indented first line\nsecond line\n" lost its leading spaces...
-
01:09 AM Revision 79a78fb1 (git): [ruby/rubygems] Stop folding a plain YAML scalar at a comment line
- A more indented comment line after a plain scalar was folded into the value, so "ssl_ca_cert: /path" followed by an indented comment in ~/.gemrc loaded as "/path # comment". A comment line ends a plain scalar, so treat it like a blank li...
-
01:09 AM Revision 70e332c8 (git): [ruby/rubygems] Skip comment and blank lines inside nested YAML collections
- Gem::YAMLSerializer ended a nested sequence or mapping at the first comment or blank line, so the entries after it were dropped or moved to the root mapping. Commenting out one of the :sources: in ~/.gemrc silently removed every source a...
-
12:59 AM Revision 79de9be7 (git): [DOC] Doc for MatchData#==
-
12:53 AM Revision cf8f58a9 (git): [ruby/rubygems] Point the from: and to: of 4.1.0.beta2 overrides at in: and with:
- Otherwise `override "b", from: "a", to: "c"` from a beta2 Gemfile fails as an unsupported `from:` field, which does not say how to write it now.
https://github.com/ruby/rubygems/commit/28df3adad7
Co-Authored-By: Claude Opus 5.5 <norepl... -
12:53 AM Revision 78da6e26 (git): [ruby/rubygems] Rename the from: key of override to in:
- `from:` next to `with:` still reads as a direction, while `override "grpc", with: "grpc-lite", in: "google-cloud-pubsub"` reads as a sentence. Gemfiles written for 4.1.0.beta2 already need editing for `to:`, so renaming `from:` in the sa...
-
12:53 AM Revision a5d2309e (git): [ruby/rubygems] Pin that override rejects the to: key
- The rename leaves no alias, so a Gemfile or OVERRIDES line still written with `to:` must fail rather than be read as `with:`.
https://github.com/ruby/rubygems/commit/43c9c015c9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:53 AM Revision 474d1b0e (git): [ruby/rubygems] Rename the to: key of override to with:
- Paired with `from:`, `to:` reads as converting the `from:` gem into the `to:` gem. The key is also recorded in the OVERRIDES section of Gemfile.lock, which no release has shipped yet, so rename it now without keeping `to:` as an alias.
... -
12:02 AM Revision 1de408bb (git): ZJIT: Don't profile singleton classes of non-module objects (#19540)
-
12:01 AM Revision 997e41e8 (git): [ruby/rubygems] Hash Bundler::Source::Rubygems from its remotes without credentials
- eql? ignores credentials, so two sources that differ only in them were equal but hashed differently, and the uniq! in SourceList kept both. The lockfile then got a duplicate GEM section for the same remote.
https://github.com/ruby/rubyg...
10/27/2026
-
11:42 PM Revision 021446fa (git): Fix the timeout of getaddrinfo with a nil host or service
- Building the error message from a NULL pointer raised ArgumentError instead of IO::TimeoutError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:42 PM Revision 47d56643 (git): mswin: Resolve hostnames in a dedicated thread
- Without pthread, mswin fell back to GETADDRINFO_IMPL 1, which ignores the timeout of Addrinfo.getaddrinfo and lets neither Timeout, Thread#kill nor Thread#raise stop the caller until getaddrinfo(3) returns. Start the resolver thread with...
-
11:42 PM Revision a98386e4 (git): Drop the unused thread handle from the resolver thread creation
- No caller reads the pthread_t, so raddrinfo_thread_create() no longer takes one, and a non-pthread implementation can sit behind it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:35 PM Revision 9ba7257f (git): Add a signal fence in rb_ec_clear_vm_stack()
- Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_frames() called from a signal
handler returns early instead of walking a stack that is no longer set
on the ec. But these are plain ... -
07:06 PM Feature #22478 (Open): RbConfig::CONFIG could be Ractor-shareable by default?
- Hi
Is this intentional? The following code fails due to
`Ractor::CONFIG` not being Ractor-shareable.
```ruby
##
# Ractor::IsolationError
require "rbconfig"
Ractor.new {
Process.wait Process.spawn(RbConfig.ruby, "-e", "p 1... -
06:41 PM Bug #22477 (Closed): rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
- Applied in changeset commit:git|db563a357875d4efbadec58b0fd8695ac9a82f42.
----------
Add a signal fence in rb_ec_clear_vm_stack()
Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_... -
04:57 PM Bug #22477: rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
- PRs:
master: https://github.com/ruby/ruby/pull/19561
4.0: https://github.com/ruby/ruby/pull/19562
3.4: https://github.com/ruby/ruby/pull/19563
3.3: https://github.com/ruby/ruby/pull/19564 -
04:37 PM Bug #22477 (Closed): rb_ec_clear_vm_stack() can still clear the VM stack before ec->cfp = NULL on aarch64
- The fix for #21441 (e3ec101cc2) sets `ec->cfp = NULL` before `rb_ec_set_vm_stack(ec, NULL, 0)` in `rb_ec_clear_vm_stack()`.
That way, `thread_profile_frames()` called from a signal handler returns early instead of walking a stack that i... -
06:41 PM Revision db563a35 (git): Add a signal fence in rb_ec_clear_vm_stack()
- Since the fix for Bug #21441, ec->cfp is set to NULL before clearing
the VM stack so that thread_profile_frames() called from a signal
handler returns early instead of walking a stack that is no longer set
on the ec. But these are plain ... -
06:18 PM Revision 95f21cd8 (git): Fix fill_cbuf putting back more bytes than the current rbuf fill holds
- The converter can still hold readagain bytes from an earlier rbuf fill,
so fill_cbuf must not put all of them back into the current rbuf. Clamp
the putback to the bytes taken from the current fill; the rest stay in
the converter and are ... -
04:48 PM Revision 93c45a96 (git): Check remaining pattern length in str_lower_case_match
- A text character can case-fold to more bytes than remain in the
pattern, e.g. U+00DF folds to "ss" against /s/i. Such a character
cannot match, so stop there instead of comparing beyond the pattern.
Reported-by: Paul Ryan (https://hack... -
03:28 PM Revision 33ac6afe (git): ZJIT: Mark String#% as returning StringExact (#19479)
- rb_str_format always allocates its result with rb_str_buf_new, so the
result is a plain String even when the receiver is a subclass.
Fixes https://github.com/Shopify/ruby/issues/1085 -
03:27 PM Bug #22476: rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
- PR to fix this: https://github.com/ruby/ruby/pull/19559
I'll create backport PRs after this one is merged. -
03:15 PM Bug #22476: rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
- CC @jhawthorn
This sounds very similar to the issue from https://github.com/ruby/ruby/pull/16615 -
01:16 PM Bug #22476: rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
- I'm working on a fix, will post the PR when it's ready here, as well as create backport PRs.
-
01:08 PM Bug #22476 (Open): rb_profile_frames() called from a signal handler segfaults while vm_make_env_each() is escaping a chain of frames
- Sampling profilers (like StackProf, Vernier, Datadog) call `rb_profile_frames()` from a signal handler.
Datadog uses a slight variant of `rb_profile_frames()` but it does not matter, it reproduces either way.
`rb_profile_frames()` segf... -
03:16 PM Revision 93d31355 (git): ZJIT: Test that NoEPEscape resumes after the call
- Existing tests only read a local that eval wrote, which passes even if
the side exit resumed before the call. Pin the snapshot pc in an HIR
test and count how many times eval runs when the patch point fires. -
02:17 PM Revision caf4f279 (git): [ruby/prism] Test embedded in CI
- Make sure we do not accidentally break newlib/ARM embedded consumers.
https://github.com/ruby/prism/commit/19762c99ce - 01:49 PM Revision 25eb737f (git): eliminate cross-TU calls to rb_vm_empty_cc()
- rb_vm_empty_cc(), rb_vm_empty_cc_for_super() and rb_vm_uncached_cc()
shouldn't be real function calls. rb_iseq_mark_and_move was calling
these as real functions in a loop. - 01:49 PM Revision ae2c6841 (git): Don't create CCs for methods we assume are cold
- The assumption is that we're usually calling these methods on boot, and they don't
need CCs. CCs scale with the number of classes that use these methods in the app, so
if you have 10k classes and these classes use 3 of these methods on a... - 11:50 AM Revision 32f06ce9 (git): Don't retag the shared fstring via TYPE_UCLASS in Marshal.load
- This is not a real-world problem. Marshal.dump never emits this payload.
It can only be hand-crafted. Loading untrusted Marshal data is already
unsafe. This fix only avoids false positives from security scanners.
TYPE_UCLASS ('C') relab... -
10:10 AM Bug #22475: Prepending a second module to an already-included module duplicates it in the includer's ancestors (regression from the Bug #22257 fix)
- Pull request: https://github.com/ruby/ruby/pull/19552
It contains the same change as the attached patch (skip origin iclasses in the subclasses loop of `rb_prepend_module`) plus a regression test in `test/ruby/test_module.rb`. -
09:45 AM Bug #22475 (Open): Prepending a second module to an already-included module duplicates it in the includer's ancestors (regression from the Bug #22257 fix)
- ## Summary
Since the fix for #22257 (master c59c4d717a, backported to ruby_3_4 as c8e05b5885 and to ruby_4_0 as 06611602a9), prepending a module to a module `M` that already has includers works correctly the first time, but every *sub... -
07:37 AM Revision cda35276 (git): CI: Windows: Refactor setup/directories cleanup
- Use the input values via environment variables directory, without a
separated step. Retry to remove build directory for Windows. -
04:39 AM Revision 60ba00df (git): CI: Windows: Remove WindowsApps from PATH to prevent post-run error
-
03:23 AM Bug #22328: Should IO#wait_priority be deprecated and then removed?
- I opened https://github.com/ruby/ruby/pull/19548 for this.
It makes IO#wait_priority emit a deprecation warning (shown when Warning[:deprecated] is enabled) pointing to IO#wait(IO::PRIORITY, timeout), and adds a NEWS entry.
The war... - 02:47 AM Revision 9647794c (git): Bump ruby/setup-ruby
- Bumps the github-actions group with 1 update in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.334.0 to 1.335.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- ... -
12:58 AM Revision ee55edef (git): Walk a fixed directory in the Ruby::Box Pathname#find test
- Pathname.new('.').find walked the whole working directory twice, so the run time depended on where the tests were started. With an in-source build that is the entire checkout, which exceeded the 60 second timeout on rubyci's macOS machin...
-
12:54 AM Revision 892b5d7c (git): [DOC] Doc for class MatchData
-
12:42 AM Revision aed528a9 (git): [ruby/rubygems] Rewrite the OVERRIDES section without resolving again
- An override change made the lockfile count as needing resolution, so `bundle install` fetched the remote index and failed offline when the compact index cache was absent, and `Bundler.setup` re-resolved on boot. The section only needs to...
-
12:42 AM Revision 12ebde9b (git): [ruby/rubygems] Limit the gemfile(5) promise that override changes keep locked versions
- A locked gem that is not installed and whose metadata rejects the current Ruby is re-resolved during materialization whether or not an override changed, so the man page cannot promise that adding or removing a metadata override never mov...
- 12:23 AM Revision b77c9f32 (git): [ruby/test-unit-ruby-core] Close stdin before terminating a
- timed-out memory leak child
(https://github.com/ruby/test-unit-ruby-core/pull/37)
* Close stdin before terminating a timed-out memory leak child
With a sample range, assert_no_memory_leak keeps the child's stdin open,
and the child's e... -
12:09 AM Revision 51678088 (git): Generate revision.h by configure in the build directory (#19545)
- configure created revision.h in $srcdir when it was missing. Since
version.h includes "revision.h", the copy in $srcdir is found before
the one in the build directory.
This used to be harmless because file2lastrev.rb, run with --srcdir...
10/26/2026
-
11:33 PM Revision c6c27d03 (git): Promote the Windows binary package when publishing a release
- draft-release in ruby/actions stages an mswin binary zip next to the draft tarballs, but nothing promotes it to pub/ruby/binaries, so each release has needed a manual publish-binaries run. Dispatch it alongside the other post-release hoo...
-
11:30 PM Revision db1bde09 (git): Skip rbs DirSingletonTest#test_for_fd to stop flaky EBADF (#19542)
- test_for_fd in rbs 4.2.0 calls Dir.for_fd twice with the fd of a Dir it
then closes, and never closes the two Dirs Dir.for_fd returned. Both
still own that fd number. When GC later finalizes them, closedir()
closes whatever file has sinc... -
10:01 PM Revision e14d739e (git): Promote the ring before measuring oldmalloc major intervals
- test_major_sweep_does_not_create_oldmalloc_debt assumed the ring was
already old when the loop started. When Ruby is running with parse.y
this isn't always the case. That only held when GCs ran while
the ring was built. Under parse.y oft... -
06:39 PM Feature #22474: Kernel#using (or BasicObject#using)
- alanwu (Alan Wu) wrote in #note-2:
> Seems to be already addressed by #22097.
I see. My quick issue search did not dig it up. I would say `using R; something` is much easier than `-> { something }.refined(R).()`, and we can have both... -
06:13 PM Feature #22474 (Feedback): Kernel#using (or BasicObject#using)
- > However, since any block is a lexical scope, why not allow using in any block?
Seems to be already addressed by #22097. -
05:26 PM Feature #22474 (Feedback): Kernel#using (or BasicObject#using)
- Currently there is `Module#using`. The scope where `using` is effective is the lexical scope of the module eval block (blocks for `module` keyword, `Module::new`, `module_eval`, and `module_exec`). However, since any block is a lexical s...
- 06:29 PM Revision 29264f87 (git): Fix rb_gc_ever_multi_ractor_p to simply read the latch variable
- In single-ractor mode, we don't want foreign_object_p checks to actually
run (there can be no foreign objspaces). This foreign_object_p check return
false if there was never a (non-main) Ractor created. Previously,
rb_gc_ever_multi_racto... -
06:22 PM Bug #22472: Both yjit & zjit break ruby 4.0.9 build on x86_64
- Thanks. I'm using mold 3.0 as our linker and this has been reported on the mold issue tracker already at https://github.com/rui314/mold/issues/1741 as affecting builds of ruby 4.0.7.
So this can be closed here. -
06:11 PM Bug #22472 (Third Party's Issue): Both yjit & zjit break ruby 4.0.9 build on x86_64
- This is not an issue with ruby but with the tool chain you're using to build ruby.
> collect2: fatal error: ld terminated with signal 6 [Aborted], core dumped
The linker you're using is crashing, and it's not clear which linker y... -
04:32 PM Revision 6b15825d (git): Use digit scanner in the universal parser
- Parser configuration no longer needs base-specific scanner callbacks.
-
03:44 PM Revision f2f9b556 (git): [ruby/prism] Let an embedder set PM_CONSTANT_POOL_MIN_CAPACITY
- The constant pool starts at source size / 120 entries, 4 at the least,
and doubles at a load of 3/4; each outgrown pair of arrays stays in the
metadata arena. An embedder that interns a fixed set of names into the
pool at every parse (mr... -
03:43 PM Revision ab52c6ab (git): [ruby/prism] Include sys/types.h before inttypes.h again, for newlib
- 61ebe5123 made defines.h include <sys/types.h> ahead of <inttypes.h>:
with an arm-none-eabi toolchain whose <stdint.h> is GCC's own, newlib's
<inttypes.h> never sees the marker it tests before defining the 64-bit
PRI macros, and PRIu64 g... -
03:43 PM Revision 10c945be (git): [ruby/prism] Let an embedder set PM_ARENA_INITIAL_SIZE
- The arena's first block is 8 KB, sized for a host. An embedder on a
small heap parses short programs (a REPL line uses about 6 KB in two
arenas) and pays two 8 KB blocks for each; with the constant under
#ifndef it can build with -DPM_AR... -
03:38 PM Revision 51f2767a (git): [ruby/prism] Avoid vsnprintf when possible
- When formatting error messages, first try to format into a fixed
buffer instead of formatting once to get the length then a second
time to get the actual format.
https://github.com/ruby/prism/commit/557cffe23e -
11:21 AM Revision 3e636857 (git): Use delta zigzag encoding for iseq node_id
- Node ids are assigned sequentially by the parser and compilation emits
instructions in an order correlated with the tree, so the delta between
consecutive instructions are likely to be small. We can store the delta
between consecutive in... -
08:21 AM Revision b861e2ba (git): Skip Addrinfo specs unsupported by musl as on Android
- musl getaddrinfo does not support SOCK_SEQPACKET and getnameinfo does
not support AF_UNIX.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:21 AM Revision 21e6dea1 (git): Fix Time specs that depend on the TZ parsing of glibc
- * Time#utc_offset: use America/New_York, as musl parses "EST5EDT" as
a POSIX TZ string instead of loading the zoneinfo file.
* Time#zone: musl accepts "hello-foo" as a POSIX TZ string.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropi... -
08:21 AM Revision e7f03c8f (git): Skip the Encoding.locale_charmap spec for the C locale on musl
- musl does not return "ANSI_X3.4-1968" for the C locale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:21 AM Revision 1749dbbe (git): Read /proc/<pid>/cmdline to check the process title if available
- Process.setproctitle and $0 specs used `ps -ocommand= -p`, but busybox
ps does not support -o/-p.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:21 AM Revision 3d973f2b (git): Skip argv[0] specs of Process.spawn and Process.exec on busybox /bin/sh
- busybox is a multi-call binary which dispatches on argv[0], so it
cannot run as /bin/sh with an arbitrary argv[0] such as "argv_zero".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:29 AM Revision 5d1d0722 (git): [ruby/zlib] Fix the rdoc of Zlib::Inflate#sync
- It described the return values the other way around, and did not mention Zlib::InProgressError.
https://github.com/ruby/zlib/commit/bbff886734
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:29 AM Revision 20a9f1a5 (git): [ruby/zlib] Raise InProgressError from Zlib::Inflate#sync during inflate
- Called from the block of Zlib::Inflate#inflate, #sync pointed next_in at its argument, and the inflate loop kept reading from there after the block returned.
https://github.com/ruby/zlib/commit/f7822c93e7
Co-Authored-By: Claude Opus 5.... - 06:39 AM Revision 0b527245 (git): [ruby/rubygems] Add checksums after platform changes in `bundle lock`
- `bundle lock --add-checksums --add-platform arm64-darwin` wrote a
lockfile that listed arm64-darwin under PLATFORMS but carried none of
its platform-specific gems. `Definition#add_checksums` resolves the
bundle to fetch the checksums, an... - 06:23 AM Revision eeb0e37a (git): [ruby/rubygems] Drop the comment on the retry
- https://github.com/ruby/rubygems/commit/12dc1f7743
- 06:23 AM Revision a36b26e0 (git): [ruby/rubygems] Apply BUNDLE_RETRY to lazy gemspec downloads
- Resolving through the full-index API lazily downloads individual
gemspecs from /quick/Marshal.4.8/*.gemspec.rz. `Fetcher#fetch_spec` made
that request bare:
Bundler.safe_load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).bo... -
06:00 AM Revision 5223de67 (git): mkmf: Skip debug info in link checks on macOS
- A link check compiles and links conftest.c in one clang invocation, and with -g clang then runs dsymutil, which reads the DWARF of every object pulled in from libruby-static.a. Each check took about 2.2 s instead of 0.17 s on a static bu...
-
05:41 AM Revision 329d9a51 (git): [ruby/rubygems] Skip only a missing bin directory, before asking about executables
- The check ran after the prompt, so the user was still asked about executables that could not exist. File.directory? also returned false when a parent directory was not searchable, which skipped the executables and removed the gem anyway....
- 05:41 AM Revision 1a39db70 (git): [ruby/rubygems] Skip executable removal gracefully when the bin directory is missing
- Fixes ruby/rubygems#9959
remove_executables raised Gem::FilePermissionError when the gem's bin
directory did not exist at all, since File.writable? is false for a
missing directory and aborting uninstall entirely was never intended.
Now... - 05:29 AM Revision 3541b9e0 (git): [ruby/rubygems] Fix file locks letting multiple processes in when lock files are removed
- Gem.open_file_with_lock removed its lock file after releasing the lock.
Since flock locks the file itself rather than its path, a process that
was waiting on the old file could acquire it after it had been removed,
while a newly arriving... -
05:29 AM Revision 542d4e2a (git): [ruby/rubygems] Omit the lock handover test on JRuby on Windows
- The waiting thread's flock fails with Errno::EINVAL there when another thread of the same JVM already locks the file. Separate processes, which are what the lock guards against, are not affected.
https://github.com/ruby/rubygems/commit/... - 05:29 AM Revision 05fc71fb (git): [ruby/rubygems] Preload git sources that share a cache one after another
- Gems sourced from the same git repository share one cache directory.
Since git sources are preloaded in parallel, two workers could run git
fetch in that directory at the same time, and the fetches collided on
the shallow file and its lo... -
05:05 AM Revision fd77a0a2 (git): leakchecker.rb: Ignore lsof that does not print the expected header
- busybox lsof ignores the options and prints no header line, so the
FD/TYPE/NODE columns cannot be found and check_fd_leak crashed with
NoMethodError, which killed the test worker. Treat such lsof as
unavailable; leaked fds are still repo... -
04:33 AM Revision dd7782fa (git): [ruby/zlib] Fix Zlib::Inflate#sync with input over UINT_MAX bytes
- inflateSync was given only the first UINT_MAX bytes, but the input was consumed as if all of it had been searched, so the data after the sync point was lost and a sync point past those bytes was never found.
d = Zlib::Deflate.new(Zlib... -
04:26 AM Revision a000f351 (git): [ruby/rubygems] Assert webauthn request auth in yank and push failure tests
- The webauthn flow runs a real polling thread, and on JRuby it can record its status request and be killed before setting Authorization, so last_request had a nil header. Apply what https://github.com/ruby/rubygems/commit/98efee308ac did ...
-
04:26 AM Revision 12cf2ffe (git): [ruby/rubygems] Keep the require_relative path in the source file's encoding
- Reading the source in binary mode made the captured path ASCII-8BIT, so a non-ASCII path never matched spec.files and joining it with a non-ASCII directory raised Encoding::CompatibilityError.
https://github.com/ruby/rubygems/commit/809... -
03:43 AM Bug #20452 (Closed): Ruby 3.3 on Alpine Linux results in a relatively shallow SystemStackError exception
- Applied in changeset commit:git|3e4497dab1b345420b422eef313553376bd10048.
----------
[Bug #20452] Take main thread address/size with rlimit if musl libc
Musl libc defines `pthread_getattr_np` but it can not get the correct
value of the... -
03:42 AM Revision 3e4497da (git): [Bug #20452] Take main thread address/size with rlimit if musl libc
- Musl libc defines `pthread_getattr_np` but it can not get the correct
value of the main thread. -
03:21 AM Revision 0440959f (git): [ruby/rubygems] Reject ill-formed requirements while reading OVERRIDES
- Override.from_lock accepted a line such as `"rake", version: "garbage"`, and the bad requirement only failed later as a Gem::Requirement::BadRequirementError outside the parser. Normalizing it while parsing turns it into a LockfileError ...
- 02:44 AM Revision 86fb7913 (git): Bump the github-actions group across 1 directory with 6 updates
- Bumps the github-actions group with 6 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.331.0` | `1.334.0` |
| [zizmorcore/zizmor-action](https://github.... - 02:37 AM Revision d76d518b (git): [ruby/rubygems] Use the running Ruby for credential-store test commands
- https://github.com/ruby/rubygems/commit/148ba70203
- 02:13 AM Revision 510c0d69 (git): [ruby/rubygems] Record overrides in the OVERRIDES section of Gemfile.lock
- Bundler now writes the Gemfile overrides to an OVERRIDES section, one
line per field, sorted, with normalized requirements. The lockfile
parser reads the section without evaluating it. A change to the
overrides now changes the lockfile, ... - 02:05 AM Revision 6e38fc03 (git): [ruby/rubygems] Open sources in binary mode instead of passing an encoding to File.foreach
- JRuby raises "TypeError: no implicit conversion of Hash into Integer" when File.foreach is called with keyword arguments and no block, as it is when chained with with_index. That broke every gem build in the JRuby Bundler specs. Opening ...
- 02:05 AM Revision 789796b4 (git): [ruby/rubygems] Use letter-free bytes in the invalid UTF-8 source test
- codespell read "caf" in the fixture as a misspelling of "calf". The test only needs bytes that are not valid UTF-8, so use \xFF\xFE.
https://github.com/ruby/rubygems/commit/21f2bd2fd6
Co-authored-by: Ufuk Kayserilioglu <ufuk.kayserilio... - 02:05 AM Revision 2d2f6f16 (git): [ruby/rubygems] Read sources as binary when checking for require_relative of extensions
- Gem::SpecificationPolicy#validate_extension_require_relative read each file with File.foreach, which tags lines with Encoding.default_external. Under an unset or ASCII locale (build sandboxes, minimal containers) a valid UTF-8 non-ASCII ...
-
01:48 AM Feature #22473 (Open): Object#preextend, Module#preextend_object, and Module#preextended
- Basically `preextend` is equivalent to `singleton_class.prepend`. Since we already have `extend` (basically equivalent to `singleton_class.include`), why not have `preextend`?
Related: #6452 #8041
10/25/2026
-
11:51 PM Revision 50801521 (git): [DOC] Tweaks for Array[]
-
11:17 PM Revision c85a46b5 (git): [ruby/rubygems] Turn off echo before printing the password prompt
- `Gem::StreamUI#ask_for_password` printed the prompt before it turned off
echo, so the terminal could echo back a password written as soon as the
prompt appeared.
Print the prompt inside the `noecho` block.
https://github.com/ruby/rubyg... -
04:54 PM Bug #22286: Closing a TCPServer while another thread is blocked in accept can discard a just-accepted connection's file descriptor, leaving the peer connected to nothing
- I've opened a pull request: https://github.com/ruby/ruby/pull/19518
Could you try it with your reproduction? -
02:14 PM Bug #22472: Both yjit & zjit break ruby 4.0.9 build on x86_64
- Using --disable-yjit and --disable-zjit fixes the build.
-
04:37 AM Bug #22472 (Third Party's Issue): Both yjit & zjit break ruby 4.0.9 build on x86_64
- I see this error building ruby 4.0.9 with --enable-yjit on x86_64 with our Chromebrew builds.
Here is the error with RUST_BACKTRACE=full:
transdb.h updated linki... -
01:50 PM Revision 1efcec84 (git): merge revision(s) 3a55e5c6d34728ffcb5158dd7c36643e11c37f04:
- [PATCH] Discard unreachable exception table entries
Dead labels can leave invalid catch entries that make ensure clauses
run for code that cannot be reached. -
10:59 AM Revision 2c09f747 (git): Encode iseq node_id with LEB128
- Node ids are small non-negative integers (-1 for synthetic instructions),
so a LEB128 stores them in 1-2 bytes instead of a 4-byte int.
On Shopify's monolith, this reduces the boot heap memsize by 40MB. -
09:04 AM Bug #22421: `RubyVM::YJIT.max_compile_time_ns=` aborts the process when YJIT is not enabled
- I don't know what cause your compilation failure, but this ticket is about a feature added in 4.1.0dev, so this isn't the right place to report it.
-
04:34 AM Bug #22421: `RubyVM::YJIT.max_compile_time_ns=` aborts the process when YJIT is not enabled
- I'm seeing this error message building with --enable-yjit on our x86_64 4.0.9 builds on Chromebrew:
transdb.h updated linking miniruby
thread '<unnamed>' (41405) pa... -
08:19 AM Revision 78a7f126 (git): Check the result of compile_length_tree() at every call site (#19505)
- Two call sites added a negative error code into a jump offset instead
of returning it. It was harmless since compilation fails later anyway.
Reported-by: Owais Lone (thesecguy) <thesecguy45@gmail.com>
Co-authored-by: Claude Opus 5.5 <... - 07:33 AM Revision c2b6f7f0 (git): [ruby/ipaddr] Allow -, . and ~ in IPv6 zone IDs
- IPAddr.new and IPAddr#zone_id= only accepted \w characters after %, so zone IDs for interfaces such as eth0.100 (VLAN) or br-lan raised InvalidAddressError. RFC 6874 defines ZoneID as unreserved characters (ALPHA, DIGIT, -, ., _, ~), whi...
-
06:14 AM Feature #22463 (Closed): Improve String#index and line splitting performance on x64-mingw-ucrt
- I measured this on Windows 11, and the problem does not occur there. I would like to withdraw this proposal.
On Windows 11 (10.0.26300.9711, ucrtbase.dll 10.0.26100.9711), `memchr` in ucrtbase.dll is no longer a byte-by-byte loop. It ... -
05:27 AM Bug #22467 (Closed): IO#readpartial can raise EFAULT during GC.compact in another thread
- Applied in changeset commit:git|0b7838e23b8f9b01765dafd5e675da6113f5b566.
----------
Fix IO reading without GVL during GC compaction
[Bug #22467]
If we perform IO read without the GVL during GC compaction and the string
we are writing... -
05:27 AM Revision 0b7838e2 (git): Fix IO reading without GVL during GC compaction
- [Bug #22467]
If we perform IO read without the GVL during GC compaction and the string
we are writing to is embedded, then it can get mprotect'd by the read
barrier in the GC, which can cause the IO read operation to fail. -
05:16 AM Revision 349d9d65 (git): Initialize the fast fallback waiter fd before anything can raise
- An invalid open_timeout raised before the waiter was assigned, so the cleanup closed fd 0 left by memset and took the process's stdin with it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:39 AM Revision b6ab1924 (git): [ruby/zlib] Test Zlib.gunzip with optional gzip header fields
- https://github.com/ruby/zlib/commit/2fc5eb721f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:39 AM Revision 83800032 (git): [ruby/zlib] Fix Zlib.gunzip with a header truncated in the file name or comment
- Reading the rest of the field went to the IO, which Zlib.gunzip does not have, instead of raising Zlib::GzipFile::Error as the other truncated header fields do.
https://github.com/ruby/zlib/commit/a16601dc10
Co-Authored-By: Claude Opus... -
02:57 AM Revision c3b61b12 (git): win32: Wait for the cancelled pipe I/O before returning
- An interrupted pipe read or write returned right after `CancelIo`, which only requests the cancellation. Wait for the I/O to end and return what it transferred.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:57 AM Revision 47c12f20 (git): win32: Do not set the pipe mode when it is unchanged
- `rb_fd_set_nonblock` returns early on other platforms when the descriptor is already non-blocking, but `rb_w32_set_nonblock2` called `SetNamedPipeHandleState` every time.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:57 AM Revision 764d1d3a (git): win32: Fix a handle leak in rb_w32_read_internal
- One of its early returns after `setup_overlapped` did not close the event.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:16 AM Feature #17016: Enumerable#accumulate
- Personally I have stumbled upon use cases of this method for at least three times. I finally found this feature request. I forgot what I wanted to do the previous times, but the last time I wanted this feature is when I wanted to generat...
-
02:07 AM Revision 4cd0b82a (git): Store iseq node_id in a side array
- The node id lived in each iseq_insn_info_entry, which prevented add_insn_info
from merging adjacent entries that only differ in node_id. Since most
neighboring instructions come from different AST nodes, this significantly
increases memo... -
02:07 AM Revision 9a2ce84d (git): [DOC] Doc for Comparable#clamp
10/24/2026
-
08:40 PM Revision bde63b65 (git): Give a Ractor's main thread an ec serial from the new Ractor
- Since ec serials became Ractor-local (4263f1d718), the root fiber of a
Ractor's main thread gets its serial from the creating Ractor, because it
is allocated there. The serial can then collide with one that the new
Ractor gives to its ow... -
08:32 PM Bug #22471 (Closed): Thread#name= on a terminated thread may dump core
- Applied in changeset commit:git|6fdd4520878eebd737d2a702c62051d46f199f89.
----------
Skip setting the native thread name of a terminated thread
The native thread of a terminated thread may have already exited, so
its pthread_t is no lo... -
07:41 PM Bug #22471: Thread#name= on a terminated thread may dump core
- https://github.com/ruby/ruby/pull/19520
-
07:32 PM Bug #22471 (Closed): Thread#name= on a terminated thread may dump core
- Calling `Thread#name=` on a terminated thread calls `pthread_setname_np()` with an invalid `pthread_t`, which can cause a SEGV or rename an unrelated thread.
```ruby
ts = 100.times.map { Thread.new {} }.each(&:join)
ts.each { |t| t.... -
08:31 PM Revision 6fdd4520 (git): Skip setting the native thread name of a terminated thread
- The native thread of a terminated thread may have already exited, so
its pthread_t is no longer valid. Passing it to pthread_setname_np()
could crash or rename an unrelated thread.
[Bug #22471]
Co-Authored-By: Claude Opus 5.5 <noreply@... -
08:17 PM Revision 398c61b5 (git): [ruby/prism] Scratch arena
- There are some constructs that only last for the duration of a
parse, and should no longer be held once the parse is through. For
those we should use a scratch arena, freed at the end of parsing.
https://github.com/ruby/prism/commit/30a... -
07:57 PM Revision d85ad13d (git): [ruby/zlib] Document the restrictions on the :buffer keyword of Zlib::Inflate#inflate
- https://github.com/ruby/zlib/commit/09b43c5b84
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:45 PM Revision 3a55e5c6 (git): Discard unreachable exception table entries
- Dead labels can leave invalid catch entries that make ensure clauses
run for code that cannot be reached. -
06:08 PM Revision 7677a3c4 (git): Revert "Re-enable Array#find override"
- This reverts commit c007fb1b1f13b31fb186faaeb2b78e5b18e243b9.
-
06:08 PM Revision e7f08526 (git): Revert "Fix Array#find override"
- This reverts commit 7a6648c10446ceb8b5ca2293a1fdbcd2b99cc458.
-
05:26 PM Revision b5cc0e49 (git): [ruby/zlib] Carry over pending output when the inflate buffer is replaced
- In the block form, output not yet yielded stays in the buffer between
calls. It was silently dropped when another buffer (or none) was given
for the next call.
data = Zlib::Deflate.deflate("A" * 50000)
half = data.bytesize / 2
inf... -
05:26 PM Revision fa4615c8 (git): [ruby/zlib] Clear ZSTREAM_REUSE_BUFFER when the output buffer is detached
- The flag stayed set after a call with buffer: had returned its buffer,
so an internal buffer allocated by a later Inflate#<< was treated as
user-provided and never revealed.
data = Zlib::Deflate.deflate("A" * 50000)
half = data.byte... -
05:26 PM Revision 7d104f9d (git): [ruby/zlib] Fix stale next_out in Zlib::Inflate#inflate(buffer:)
- When a call with buffer: left the stream in progress (it raised
Zlib::NeedDict, or the block form has more input to come), the next run
reused the next_out saved by the previous call. If the buffer had been
modified in between, it pointe... -
05:13 PM Revision 8074d3f4 (git): Fix integer overflow in String#[]= with a capture index of INT_MIN
- rb_str_subpat_set validated a negative capture index by negating it,
which overflows for INT_MIN and bypasses the range check. The
out-of-bounds read of the match registers then crashed the process.
Rewrite the check without negation.
... -
04:42 PM Bug #22470 (Closed): Array#find and Array#rfind arity change between versions 3 and 4
-
02:11 PM Bug #22470: Array#find and Array#rfind arity change between versions 3 and 4
- https://github.com/ruby/ruby/pull/19516
-
01:55 PM Bug #22470 (Closed): Array#find and Array#rfind arity change between versions 3 and 4
- Ruby 4 introduced native implementations of Array#find and Array#rfind (Feature #21678). However, the new implementations changed how it behaves with multiple arguments:
ruby 3.4.8:
```
ruby -e "[].find(1, 2)"
-e:1:in 'Enumerable... -
03:03 PM Revision 28dec96d (git): Fix Array#find and Array#rfind arity check
- Ruby 4 introduced native implementations of Array#find and Array#rfind
(Feature #21678). However, the new implementations changed how they
behave with multiple arguments:
ruby 3.4.8:
```
$ ruby -e "[].find(1, 2)"
-e:1:in 'Enumerable#fi... -
03:02 PM Revision 7a6648c1 (git): Fix Array#find override
- Fixes [Bug Shopify/ruby#1011]
The override was disabled in 09a9bdeb324 due to bugs from when I first
implemented it. This commit fixes three issues:
1. The if_none_proc is now passed to the enumerator.
2. The `#size` of the enumerator ... -
03:02 PM Revision c007fb1b (git): Re-enable Array#find override
-
11:27 AM Bug #22467: IO#readpartial can raise EFAULT during GC.compact in another thread
- Thank you for the bug report, I have a fix here: https://github.com/ruby/ruby/pull/19515
-
09:34 AM Revision 47feb4e7 (git): Set dummy ID when broken numeric
- Reported-by: 外崎青波
-
09:23 AM Revision f272b3e2 (git): [ruby/openssl] ssl: fix NoMethodError on SAN dNSName with an empty label
- Handle the empty label as a literal string.
OpenSSL::SSL::SSLSocket#post_connection_check can raise NoMethodError
when the server certificate contains a malformed subjectAltName
extension with a dNSName that starts with ".", such as ".e... -
04:35 AM Feature #22466: Allow disabling the shape redblack cache via RUBY_SHAPE_REDBLACK_CACHE=disable
- alanwu (Alan Wu) wrote in #note-1:
> > If it is preferable to specify the cache size via an environment
> ...
I implemented support for specifying the cache size: https://github.com/ruby/ruby/pull/19509
However, it results in assert... - 02:24 AM Revision 83c63ffc (git): ZJIT: Perform code range scans without side-exit (#19454)
- * ZJIT: Add HIR test for `String#valid_encoding?` inlining
* ZJIT: Scan unknown string code ranges without side exiting -
12:43 AM Revision 41fc5017 (git): [ruby/prism] Use xxh3 hashing for static literals
- Instead of the half-baked murmur hash we were using. Also since
it now nicely spreads out the bits, keep all of the nodes in one
hash/allocation, and keep a 4-pointer buffer on the stack for the
majority case where there aren't that many... -
12:43 AM Revision f7789b7a (git): Preserve multibyte characters in regexp Unicode escapes
- Consume the leading byte before calling tokadd_mbchar in the regexp Unicode escape fast path. The helper reads the character length from pcur - 1; passing an unconsumed byte corrupted multibyte characters and skipped following bytes.
Ad... -
12:38 AM Bug #22469 (Open): parse.y hash key does not warn on -0.0
- When generating warnings for duplicate keys (hash keys or case-when clauses) parse.y misses warning on -0.0 and 0.0 because it doesn't normalize it like a Ruby hash does.
```
{ 0.0 => 1, -0.0 => 1 }
```
^-- should warn
-
12:30 AM Bug #22468: A read of a class variable after remove_class_variable returns a broken value, then SEGV on use
- In case it assists debugging, the example works correctly in Ruby 3.0 and 3.1 (`NameError`) and fails in Ruby 3.2 and 3.3 (SEGV). So it broke between Ruby 3.1 and 3.2.
-
12:11 AM Bug #22468 (Open): A read of a class variable after remove_class_variable returns a broken value, then SEGV on use
- ## Description
A method that read a class variable once reads it again after `remove_class_variable`. The second read does not raise NameError. It returns a broken value, and a use of that value causes a segmentation fault.
## Step...