Activity
From 08/01/2026 to 08/07/2026
Today
-
04:56 AM Ruby Revision de56b5e2 (git): Make Module#descendants follow the ancestors of the current box
- The subclasses lists are kept only in the prime classext and thus shared
by all boxes, so a module included into a builtin class in a box was
reported as a descendant from other boxes, where the include is not in
the ancestors of the cla... -
03:37 AM Ruby Bug #21870: Regexp: Warnings when using slightly overlapping \p{...} classes
- Just wanted to double-check the status here, since we seem to have stalled out for a few months. Is there anything I could do to help move this along?
-
03:21 AM Ruby Feature #21826: Deprecating RubyVM::AbstractSyntaxTree
- Not yet. The documentation change that landed is the right amount for now.
We may remove this someday, but this is not the moment. I approved `Thread::Backtrace::Location#source_range` in [#22212](https://bugs.ruby-lang.org/issues/222... -
03:14 AM Ruby Feature #22186: Increase the embeddable size limit for substrings created by `str_subseq()`
- The heuristic is acceptable. Nothing user visible changes here, so choosing where the cutoff sits is an implementation decision, and the measurements in this ticket are more than enough basis for it. Please go ahead with the 128 byte cut...
-
03:05 AM Ruby Revision 60e3de26 (git): ZJIT: Test mixed block handlers at polymorphic yield sites
- Cover yield sites that see a mix of ISEQ, proc, symbol, and ifunc
block handlers:
* HIR tests that a profile mixing ISEQ blocks with proc/symbol or
ifunc handlers still dispatches directly on the ISEQ candidates,
with the non-ISEQ h... -
03:05 AM Ruby Revision 13a60fb4 (git): ZJIT: Use offset_of for the captured block code field
- Instead of hard-coding the 2 * SIZEOF_VALUE offset of
rb_captured_block's code union, compute it with offset_of! from the
bindgen-generated struct. -
03:05 AM Ruby Revision 9c2c8caf (git): ZJIT: Compile polymorphic ISEQ invokeblock
-
03:05 AM Ruby Revision b3a2792b (git): ZJIT: Summarize the invokeblock block handler profile once
- Compute a TypeDistributionSummary for the profiled block handler
distribution up front instead of deriving only the monomorphic class
from it, so that upcoming polymorphic invokeblock specialization can
reuse the same summary. No behavio... - 02:33 AM Ruby Revision da7354d6 (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:33 AM Ruby Feature #22231: Add `IO::Buffer#index`
- I have no objection to the direction. Finding a delimiter is where a parser begins, and a zero copy buffer that cannot do it stops being zero copy at the first `&`.
Please work out the design with @ioquatix, who is in charge of `IO::B... -
02:24 AM Ruby Feature #14394 (Closed): Class.descendants
- Module#descendants was added instead of Class#descendants, so I'm closing this issue.
See #9779 for details.
-
01:53 AM Ruby Misc #22230: Should Ruby specs define byte oriented read behavior when the character buffer is not empty?
- Please leave this implementation defined. Other implementations should be free to behave differently.
[#note-1](https://bugs.ruby-lang.org/issues/22230#note-1) makes the case well. The `IOError` is a consequence of CRuby having a char... -
01:16 AM Ruby Bug #22216: Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
- I agree with the direction, and I agree these should be Fiber-local.
What I am not ready to decide is the rule for cases like the one in [#note-13](https://bugs.ruby-lang.org/issues/22216#note-13). Reading `$1` after `e.next` is code ... -
12:59 AM Ruby Feature #22215 (Closed): Introduce narrow internal interfaces for bundled extensions
- Applied in changeset commit:git|b51ae934f7c81f4ef17d74cd0788e9eefac44149.
----------
[Feature #22215] Remove vm_core dependency from gc header
Keep `internal/gc.h` usable without VM-private definitions so bundled
extensions do not inhe... -
12:59 AM Ruby Revision b68ef95a (git): [Feature #22215] Extract internal objspace API
- Provide narrow accessors so `ext/objspace` does not depend on call
cache and call info layouts. -
12:59 AM Ruby Revision 8f4a3c94 (git): [Feature #22215] Extract internal coverage API
- Provide a narrow coverage interface so `ext/coverage` does not depend
on GC or VM implementation headers. -
12:59 AM Ruby Revision b51ae934 (git): [Feature #22215] Remove vm_core dependency from gc header
- Keep `internal/gc.h` usable without VM-private definitions so bundled
extensions do not inherit `vm_core.h` dependencies. -
12:05 AM Ruby Revision 33752cdb (git): [DOC] Add NEWS entry for String bit operations
- Proposed in https://bugs.ruby-lang.org/issues/22118
Merged in #17353
08/06/2026
-
11:49 PM Ruby Revision a17d805d (git): ZJIT: Use memcpy-based append for String#<< when encodings match (#18230)
- YJIT's jit_rb_str_concat branches on the two strings' encoding flags and
calls a simple rb_str_cat-based append when they match, which skips the
coderange and encoding bookkeeping in rb_str_buf_append. Do the same in
ZJIT's StringAppend ... -
09:35 PM Ruby Feature #21826 (Open): Deprecating RubyVM::AbstractSyntaxTree
-
01:07 PM Ruby Feature #21826 (Closed): Deprecating RubyVM::AbstractSyntaxTree
- Applied in changeset commit:git|5d7bb1076ddee34146d27d83fbc52396687a489e.
----------
[DOC] Document that using RubyVM::AbstractSyntaxTree is discouraged in new code
* See [Feature #21826] -
08:11 PM Ruby Feature #22227: Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- matz (Yukihiro Matsumoto) wrote in #note-5:
> Could you explain whether that is difficult in the implementation, or whether you have another reason to prefer the uniform rule? I would like to understand that before deciding.
It is becau... -
12:11 PM Ruby Feature #22227: Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- I approve the direction. Ractors were designed for exactly the workloads where they currently lose to `fork`, and closing that gap is worth an architectural change of this size. The numbers in section 4 are convincing, and keeping single...
-
07:51 PM Ruby Feature #22233: Warn when Net::HTTP#set_debug_output enables debug output
- Linking the PR I prepared. https://github.com/ruby/net-http/pull/320
-
07:27 PM Ruby Feature #22233 (Open): Warn when Net::HTTP#set_debug_output enables debug output
- # Abstract
`Net::HTTP#set_debug_output` logs every request and response in plain text,
including `Authorization` and `Cookie` headers and message bodies. Its
documentation says never to use it in production, and nothing enforces tha... -
07:29 PM Ruby Bug #22200: ObjectSpace._id2ref can return a different object than the id's owner on Ruby 4.0 (stale id2ref_tbl entry for objects with generic fields)
- My example is just one way to crash the VM with `_id2ref`, I'm sure there are others.
Eregon (Benoit Daloze) wrote in #note-7:
> And we have in practice unique `object_id`s, so there is no collision in practice.
In practice, yes, ... -
08:28 AM Ruby Bug #22200: ObjectSpace._id2ref can return a different object than the id's owner on Ruby 4.0 (stale id2ref_tbl entry for objects with generic fields)
- jhawthorn (John Hawthorn) wrote in #note-6:
> This was the behaviour of _id2ref pre-Ruby-2.7. I don't think it's ever been a guarantee that it checks liveness (just a quirk of the 2.7+ implementation).
The way I see it is we have a `... -
07:55 AM Ruby Bug #22200: ObjectSpace._id2ref can return a different object than the id's owner on Ruby 4.0 (stale id2ref_tbl entry for objects with generic fields)
- navidemad (Navid Emad) wrote:
> On Ruby 4.0.x, `ObjectSpace._id2ref(id)` can return a **different, unrelated live object** instead of raising `RangeError`, after the object that owned the id has been garbage collected and its heap slot r... - 04:17 PM Ruby Revision 454a8aa3 (git): ZJIT: Delete a stale comment reporting a wrong default value (#18221)
-
03:14 PM Ruby Revision 3acc47d2 (git): [ruby/time] Fix exception message for Time.rfc3339 failures
- The previous message used xmlschema, which was inaccurate for an
rfc3339 parse.
While we could have _xmlschema take an extra argument for the callee,
it seems simpler to have _xmlschema return nil for an unmatched parse,
and do the rais... -
02:06 PM Ruby Feature #9779 (Closed): Add Module#descendants
- Applied in changeset commit:git|96589334512bc960fabb5908ce8cc25a245ce090.
----------
[Feature #9779] Add Module#descendants
Module#descendants returns an array of classes and modules that have
the receiver in their ancestors; it is the... -
07:54 AM Ruby Feature #9779: Add Module#descendants
- Accepted. Let's define `Module#descendants`.
This settles the question I left open in [#14394](https://bugs.ruby-lang.org/issues/14394#note-38). `Class#subclasses` already lets you write the transitive closure for classes in Ruby, but... -
02:05 PM Ruby Revision 96589334 (git): [Feature #9779] Add Module#descendants
- Module#descendants returns an array of classes and modules that have
the receiver in their ancestors; it is the inverse of Module#ancestors.
The receiver itself, singleton classes, and refinements are not included.
Co-Authored-By: Claud... -
01:29 PM Ruby Feature #22213: Allow no-argument and chained calls of Proc#refined
- I forgot to mention the change to Proc#==: it now compares not only the underlying iseq but also the sequence of modules passed to Proc#refined.
The behavior of Proc#== is unchanged for Procs that don't use Proc#refined.
In CRuby, `prc... -
07:57 AM Ruby Feature #22213 (Closed): Allow no-argument and chained calls of Proc#refined
- Applied in changeset commit:git|39e43e1c203cda09f0cbbfc1991f895a91043ddf.
----------
[Feature #22213] Allow no-argument and chained calls of Proc#refined
Since `prc.refined(*ms).refined(*ns)` is behaviorally equivalent to
`prc.refined(... -
06:38 AM Ruby Feature #22213: Allow no-argument and chained calls of Proc#refined
- Both behaviors are what I would expect, and I accept them.
Returning the receiver for a no-argument call is right. refined with no modules asks for nothing, and there is no reason to pay for a copy to represent that; Data#with and Enu... -
01:07 PM Ruby Revision 5d7bb107 (git): [DOC] Document that using RubyVM::AbstractSyntaxTree is discouraged in new code
- * See [Feature #21826]
-
12:43 PM Ruby Bug #18947: Unexpected Errno::ENAMETOOLONG on Windows
- Please go ahead with this approach. Relying on an undocumented bit is not ideal, but the failure mode decides it for me: if the bit ever stops working, we are back to today's 260 character limit, not broken. That is a cheap downside for ...
-
12:41 PM Ruby Feature #22118 (Closed): Introduce Basic Bit Operations into String
- Applied in changeset commit:git|2461caebba1d47ca79cfd4e0a825e6df40f375bd.
----------
[Feature #22118] Introduce Basic Bit Operations into String (#17353)
This patch adds the following methods to String class:
* String#bit_get(offset, ... -
06:34 AM Ruby Feature #22118: Introduce Basic Bit Operations into String
- Thank you for the update. The specification in the current Description matches my intent in #note-5, and both points raised in #note-6 are fine as proposed.
bit_count and the bit-order keyword. Accepted as written. A population count ... -
12:40 PM Ruby Revision 2461caeb (git): [Feature #22118] Introduce Basic Bit Operations into String (#17353)
- This patch adds the following methods to String class:
* String#bit_get(offset, lsb_first: true) -> 1 | 0 | nil
* String#bit_set?(offset, lsb_first: true) -> true | false | nil
* String#bit_set(offset, lsb_first: true) -> self
* String#... -
12:01 PM Ruby Feature #21795 (Open): Methods for retrieving ASTs
- I approve introducing `#syntax_tree`, and I like the name. Please land it as an experimental feature as you propose in [#note-27](https://bugs.ruby-lang.org/issues/21795#note-27).
On the prism version mismatch, I choose your approach:... -
11:20 AM Ruby Feature #21795 (Closed): Methods for retrieving ASTs
- Applied in changeset commit:git|93638d07e1a4b6c7fe02d1154fd31f201d5faeca.
----------
Compute a source hash of the program in parse.y
Introduce a streaming source hash API (rb_source_hash_init/update/
finalize) in ruby_parser.c, and use... -
11:43 AM Ruby Bug #22197 (Closed): Backtraces show methods which do not exist
- Applied in changeset commit:git|a89b3a6fd5cb5f382adfef7d28dfc73e330f614d.
----------
[Bug #22197] Show the original definition module in backtrace labels
An alias or a method installed via define_method(UnboundMethod) shares the
origin... -
08:14 AM Ruby Bug #22197: Backtraces show methods which do not exist
- This is a bug and should be fixed.
The file and line we print are those of the original definition, so the module must come from that same definition. Mixing it with the run-time owner produces a name for a method that does not exist,... -
11:43 AM Ruby Revision c0ed960d (git): [Bug #22197] Record the definition module on the method definition
- Backtrace labels need the module where a method body was originally
defined, but alias_method and define_method(UnboundMethod) overwrite the
CME owner with the install site, producing "Class#method" pairs that
never existed. The label co... -
11:43 AM Ruby Revision a89b3a6f (git): [Bug #22197] Show the original definition module in backtrace labels
- An alias or a method installed via define_method(UnboundMethod) shares the
original method definition, but the CME's owner and defined_class point at
the site where the copy was installed. Combined with the method name (taken
from the or... -
11:35 AM Ruby Feature #22226: Ractor: class/module ownership -- restrict modification to the Ractor that created it
- Accepted, including the incompatibilities in section 7. Asking "did you create this?" instead of "are you the main Ractor?" is the right question, and Ractor is experimental precisely so that we can make this kind of correction.
On cl... -
09:38 AM Ruby Feature #22226: Ractor: class/module ownership -- restrict modification to the Ractor that created it
- ko1 (Koichi Sasada) wrote in #note-3:
> > How will autoload work with this?
> ...
Right, but in the proposal you said:
> A class/module records its creator Ractor as its owner. Only the owner may:
> ...
This does mean that modules ... -
06:10 AM Ruby Feature #22226: Ractor: class/module ownership -- restrict modification to the Ractor that created it
- ko1 (Koichi Sasada) wrote:
> ```ruby
> ...
This may be surprising, because it prevents all non-main Ractor to write constants of `Object` (and all class/module from main Ractor), but they were allowed before.
So classes/modules in non... -
11:32 AM Ruby Feature #21005 (Closed): Update the source location method to include line start/stop and column start/stop details
- `{Method,UnboundMethod,Proc}#source_range` was added in #21998 which provides the same information.
It's also available for `Thread::Backtrace::Location` since #22212.
It hasn't been added for `Binding`, I don't think a `binding` has... -
11:25 AM Ruby Feature #17930: Add column information into error backtrace
- mame (Yusuke Endoh) wrote:
> I'd like to propose a feature to get column information from each `Thread::BacktraceLocation`. Maybe it is good to provide the following four methods:
> ...
This exact information is now available via `Thread... -
11:24 AM Ruby Feature #8751: Add offsets to method#source_location
- This is now available since #21998 with `{Method,UnboundMethod,Proc}#source_range`.
It's start/end line + start/end byte-column and not byte offsets, but one can convert between both if the source file is available. -
11:22 AM Ruby Feature #6012: Proc#source_location also return the column
- This is now available since #21998 with `Proc#source_range`
-
11:20 AM Ruby Feature #22212 (Closed): Add Thread::Backtrace::Location#source_range
- Applied in changeset commit:git|84a9e6bed71d009fa9ba272cfad96820127e097d.
----------
[Feature #22212] Add Thread::Backtrace::Location#source_range -
08:09 AM Ruby Feature #22212: Add Thread::Backtrace::Location#source_range
- Accepted. `Thread::Backtrace::Location#source_range` is a natural extension of [#21998](https://bugs.ruby-lang.org/issues/21998), the failure behavior is fine as proposed, and `source_range` is the right name.
Regarding [#note-7](http... -
11:20 AM Ruby Revision eb0254e1 (git): Check the source hash for Thread::Backtrace::Location#source_range
-
11:20 AM Ruby Revision a55e31b7 (git): Remove unused ISeq methods
-
11:20 AM Ruby Revision 25959fe2 (git): Store a source hash in ISeqs
- Record the source hash in each ISeq. For prism, the hash computed at
parse time is propagated through the scope nodes; for parse.y, it is
taken from the AST, and copied to child iseqs whose AST wrappers are
created separately. Expose it ... -
11:20 AM Ruby Revision 2d629524 (git): Compute a source hash for prism as well
- After each prism parse, compute a source hash of the parsed source and
keep it in the scope node. The data section after an __END__ marker is
not part of the code, so the hash covers the source only up to the end
of the __END__ line, whi... -
11:20 AM Ruby Revision 93638d07 (git): Compute a source hash of the program in parse.y
- Introduce a streaming source hash API (rb_source_hash_init/update/
finalize) in ruby_parser.c, and use it in the lexer of parse.y to
accumulate a hash of the source as each line is read. The hash is
stored in the AST, and will be used to... -
11:20 AM Ruby Revision 84a9e6be (git): [Feature #22212] Add Thread::Backtrace::Location#source_range
-
10:57 AM Ruby Revision 66c00fd5 (git): rb_hash_init: don't spill to `st_table` unless needed
- Up to `RHASH_AR_TABLE_MAX_SIZE` there's no need to initialize
an `st_table`. -
10:41 AM Ruby Revision 5b505f86 (git): Reduce RHASH_TBL_RAW usage
-
10:09 AM Ruby Feature #22232: Deprecate `RHASH_TBL` and associated APIs
- For `rb_hash_bulk_insert_into_st_table` which probably was never intended to be public API, there is only a single hit, and it's clearly
a misuse, it should use `rb_hash_bulk_insert: https://github.com/redcode/Z80-Ruby/blob/master/ext/z... -
08:34 AM Ruby Feature #22232: Deprecate `RHASH_TBL` and associated APIs
- The raw codesearch result https://gist.github.com/byroot/547f2b19e63efd0b2c974ff1f584751c, but it contains a lot of false positive, as many old gems seems to have:
```c
#ifndef RHASH_TBL
#define RHASH_TBL(x) RHASH->tbl
#endif
```
... -
08:07 AM Ruby Feature #22232 (Open): Deprecate `RHASH_TBL` and associated APIs
- I would like to deprecate `RHASH_TBL`, `RHASH_TBL_RAW` and `rb_hash_bulk_insert_into_st_table`.
### Problem
These API take a `RHash` instance and return its associated `st_table *`.
If the Hash isn't backed by an `st_table` it wil... -
08:35 AM Ruby Feature #22222 (Closed): Expose a C API equivalent of `RubyVM::InstructionSequence.load_from_binary`
- Applied in changeset commit:git|1ba809e748e04f03450a7f2148e5e860c64c57f0.
----------
C API: Expose `rb_iseq_load_from_binary`
[Feature #22222]
This allows to efficiently load iseq from mmaped files and other
buffers without having to ... -
08:22 AM Ruby Feature #22222: Expose a C API equivalent of `RubyVM::InstructionSequence.load_from_binary`
- Accepted. This exposes no new capability, only a way to avoid a copy for something already possible from Ruby.
Matz. -
08:35 AM Ruby Revision 1ba809e7 (git): C API: Expose `rb_iseq_load_from_binary`
- [Feature #22222]
This allows to efficiently load iseq from mmaped files and other
buffers without having to copy the bytes into a Ruby string an
then invoke `RubyVM::InstructionSequence.load_from_binary`. -
07:57 AM Ruby Revision 39e43e1c (git): [Feature #22213] Allow no-argument and chained calls of Proc#refined
- Since `prc.refined(*ms).refined(*ns)` is behaviorally equivalent to
`prc.refined(*ms, *ns)`, the copy of the block is deferred until
the first call and the memo is shared by these behaviorally
equivalent Procs. A Proc that is never call... -
07:40 AM
Ruby
Bug #19378 (Closed): Windows: Use less syscalls for faster require of big gems
- Applied in changeset commit:git|a7512f063c7ec35b617803dd2f17515416f2c493.
----------
[Bug #19378] win32: Rework stat fast path
Query FileStatBasicByNameInfo instead of FileStatByNameInfo for the
128-bit file ID; the 64-bit ID does not ... - 07:39 AM Ruby Revision a7512f06 (git): [Bug #19378] win32: Rework stat fast path
- Query FileStatBasicByNameInfo instead of FileStatByNameInfo for the
128-bit file ID; the 64-bit ID does not match the handle-based result
on ReFS. Fall back to the handle-based path unless the volume serial
matches the drive of the path... - 07:39 AM Ruby Revision a3c7ff63 (git): win32: single-syscall fast path for winnt_stat (Win10-safe)
- winnt_stat opened a real file handle (open_special +
GetFileInformationByHandle + GetFileType + get_handle_pathname +
CloseHandle, ~5 syscalls) for every existing file just to stat it.
require does this thousands of times per startup.
A... -
07:37 AM Ruby Feature #22205 (Assigned): Deprecate ruby2_keywords
- matz (Yukihiro Matsumoto) wrote in #note-16:
> I agree with deprecating `ruby2_keywords`. It was a compromise for the transition to 3.0, and that transition is over.
> ...
Thank you for your confirmation.
I've merged the pull reques... -
06:47 AM Ruby Feature #22205: Deprecate ruby2_keywords
- I agree with deprecating `ruby2_keywords`. It was a compromise for the transition to 3.0, and that transition is over.
The schedule in the description is fine as proposed, including the one-phase offset for `Hash.ruby2_keywords_hash?`... -
07:32 AM Ruby Bug #22123: Ruby::Box + `BUNDLER_SETUP` can evaluate gemspecs before main-box RubyGems initialization
- https://github.com/ruby/ruby/pull/18219
-
07:30 AM Ruby Bug #22123 (Closed): Ruby::Box + `BUNDLER_SETUP` can evaluate gemspecs before main-box RubyGems initialization
- Applied in changeset commit:git|c3c0e280d03561e21fc0894ea693ce3c9ebada0e.
----------
Do not consume BUNDLER_SETUP outside the main box
[Bug #22123]
Bundler evaluates gemspecs through TOPLEVEL_BINDING, which always belongs
to the main b... -
06:09 AM Ruby Bug #22123: Ruby::Box + `BUNDLER_SETUP` can evaluate gemspecs before main-box RubyGems initialization
- Some background on why this `require` exists.
`error_highlight`, `did_you_mean` and `syntax_suggest` used to be required at startup right after RubyGems, before `RUBYOPT=-rbundler/setup` ran, so a Gemfile could not control their version... -
07:31 AM Ruby Revision 1d9b1291 (git): [DOC] Deprecate ruby2_keywords
- Add documentation-only deprecation notices to Module#ruby2_keywords,
main.ruby2_keywords, Proc#ruby2_keywords, Hash.ruby2_keywords_hash?,
and Hash.ruby2_keywords_hash, as the first phase of the schedule
proposed at https://bugs.ruby-lang... -
07:29 AM Ruby Revision 4c5ba84b (git): Make the autoload test portable to Ruby 4.0
- error_highlight, did_you_mean and syntax_suggest are still loaded eagerly
on Ruby 3.2 through 4.0, where BUNDLER_SETUP is loaded in the main box
rather than skipped everywhere, so derive the expectation from the actual
autoload state.
C... -
07:29 AM Ruby Revision eec8cf0b (git): Test BUNDLER_SETUP loading in boxes
- Based on the test in https://github.com/ruby/ruby/pull/17323, extended to
cover user boxes and the configuration where the decorator gems are not
autoloaded, which is how Ruby 3.2 through 4.0 behave.
Co-Authored-By: Claude Opus 5 <norep... -
07:29 AM Ruby Revision 82684117 (git): Note when the BUNDLER_SETUP require can be dropped
- Ruby 4.1 autoloads error_highlight, did_you_mean and syntax_suggest and
deletes BUNDLER_SETUP while loading RubyGems, so the early bundler/setup
is only there for Ruby 3.2 through 4.0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
07:29 AM Ruby Revision c3c0e280 (git): Do not consume BUNDLER_SETUP outside the main box
- [Bug #22123]
Bundler evaluates gemspecs through TOPLEVEL_BINDING, which always belongs
to the main box, so consuming BUNDLER_SETUP while the root box loads
RubyGems runs Bundler code in the main box before RubyGems has finished
loading ... - 07:26 AM Ruby Revision ef6b630c (git): Finish fix for cross-compilation build race condition
- Commit bb235bddd4ce ("Avoid build-time race condition when
cross-compiling from a source tarball") turned out to be only a partial
fix, we also need to cover the case where git is present but we're not
building from a git checkout.
We c... -
06:23 AM Ruby Bug #22223 (Closed): Socket.tcp with connect_timeout returns a phantom "connected" socket for a refused connection on macOS 27 (kernel answers EISCONN on connect retry; SO_ERROR never consulted)
- Applied in changeset commit:git|82294a714fe3d4cacf54fae631291df908ecb1ab.
----------
[Bug #22223] Check SO_ERROR after waiting for nonblocking connect
Darwin 27 answers the retry connect(2) on a refused nonblocking socket
with EISCONN,... -
06:23 AM Ruby Revision 82294a71 (git): [Bug #22223] Check SO_ERROR after waiting for nonblocking connect
- Darwin 27 answers the retry connect(2) on a refused nonblocking socket
with EISCONN, so the retry idiom in Addrinfo#connect_internal returned
an unconnected socket. SO_ERROR still holds the real error, so consult
it after wait_writable, ... -
06:09 AM Ruby Feature #22186: Increase the embeddable size limit for substrings created by `str_subseq()`
- byroot (Jean Boussier) wrote in #note-13:
> We could also have a different limit depending on the status of the source string. If the source string is already frozen or shared, creating an extra shared string is much cheaper, so we could... -
03:54 AM Ruby Misc #22230: Should Ruby specs define byte oriented read behavior when the character buffer is not empty?
- This may overlap with the discussion in ruby/spec, but I'll share my understanding of the current situation with CRuby.
The following illustrates the read model for IO in CRuby's implementation.
```
device -> [rbuf] -> encoding conv... - 02:32 AM Ruby Revision 10fa3a51 (git): Bump the github-actions group across 1 directory with 3 updates
- Bumps the github-actions group with 3 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upl...
-
02:29 AM Ruby Revision a57cc37d (git): [ruby/time] Require colon in timezone offset for Time.rfc3339
- Fixes https://github.com/ruby/time/pull/77
https://github.com/ruby/time/commit/b126827a31 -
02:00 AM Ruby Revision 40e2c0fb (git): [ruby/strscan] Fix `charpos` when the stored string is shrunk
- https://github.com/ruby/strscan/commit/7b77f30531
-
01:52 AM Ruby Revision 918fed9d (git): [ruby/prism] Revert "Split up newline token"
- This reverts commit https://github.com/ruby/prism/commit/3dbe592a76cb.
https://github.com/ruby/prism/commit/115d58f71b -
01:38 AM Ruby Revision 6251e06a (git): [ruby/strscan] Handle shrunk captures on TruffleRuby
- `integer_at` must read captures from the scanner current string.
https://github.com/ruby/strscan/commit/435095d898 -
01:38 AM Ruby Revision 6b93405b (git): [ruby/strscan] Return nil for empty integer captures
- JRuby must match the native implementation when captures become empty.
https://github.com/ruby/strscan/commit/535f9b43ba -
01:17 AM Ruby Revision 1db6f0fe (git): [ruby/prism] Split up newline token
- There are actually 3 tokens in the Ruby grammar: the newline in a
whitespace insensitive position that is ignored, a newline that is
in a whitespace sensitive position that acts as a statement
terminator, and a newline in a whitespace se... -
12:50 AM Ruby Revision 411cfc43 (git): Do not resolve dependency names against the build directory (#18212)
- tool/mkdepend.rb resolved dependency names against the current working
directory before falling back to the source root. When configure
re-runs in an already-built build directory nested inside the source
tree (e.g. .ruby under the chec...
08/05/2026
-
10:43 PM Ruby Revision bfd181d0 (git): Fix SEGV in ObjectSpace._id2ref error path (#18206)
- * Fix SEGV in ObjectSpace._id2ref error path
%+"PRIsVALUE" calls rb_inspect which re-enters the VM via
rb_funcallv, causing a crash when formatting the error message
for an invalid object ID. Use %"PRIsVALUE" instead, which
calls rb_obj... - 10:42 PM Ruby Revision 8052f249 (git): ZJIT: Specialize keyword-to-positional-hash sends (#18061)
- Allow SendDirect to handle explicit caller keywords passed to callees
with no keyword parameter table by materializing the keywords as one
positional Hash.
Keep VM dispatch for keyword splat, **nil, and ruby2_keywords cases
because they... -
09:56 PM Ruby Revision 19f5b124 (git): Reintroduce recent PRISM changes
- This reverts commit 895084e65bee280bddc36dc31f19ec3a0e80587e.
IRB failures are fixed by 6612731a4ffd41c01e836ed2ffd473d46b685ab1. -
09:44 PM Ruby Revision 69b13f2a (git): ZJIT: Rename `PadPatchPoint` to `PatchPointPad`
- Two reasons for this: 1. It's less weird for a pad to be zero width than
for an imperative to pad to not actually pad. 2. PatchPoint is a noun so
its related padding reads better when can only be interpreted as a noun. -
09:44 PM Ruby Revision ac0e68da (git): ZJIT: Pull end-of-function pad out of RPO loop
- I think there was a bug there because it checked for block id while
iterating with reverse-post order. No need to check when we can do it
unconditionally outside the loop. (Do we ever try to compile an empty
assembler?) -
09:44 PM Ruby Revision a540312b (git): ZJIT: Remove nops for PatchPoint too close to start of LIR BB
- Previously we put a `nop` at the beginning of a block because any two
`PadPatchPoint` checked for minimum distance. The `PadPatchPoint` inserted
at block boundary isn't itself a patch point position, so when we had:
PadPatchPoint
... -
09:44 PM Ruby Revision 8593c2be (git): ZJIT: Add LIR `test_fallthrough_to_a_patchpoint` snapshot tests
-
09:18 PM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Feature #22186] Increase the embeddable size limit for substrings created by `str_subseq()` (himura467)
* `str_subseq()` copies a sharable substring only while it fits in the tiny slot. The proposal copies up to a 128 byte slot, ke... -
07:23 PM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Feature #22231] Add `IO::Buffer#index` (himura467)
* `IO::Buffer` has no search primitive, so finding a delimiter means copying the region out with `#get_string` or looping over `#get_value(:U8)` in Ruby. Proposes `buffer.index(o... -
03:44 PM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Misc #22230] Should Ruby specs define byte oriented read behavior when the character buffer is not empty? (eregon)
* Is the `byte oriented read for character buffered IO (IOError)` behavior intentional, or an implementation detail ... -
02:59 PM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Feature #21826] Deprecating RubyVM::AbstractSyntaxTree (eregon)
* How about https://github.com/ruby/ruby/pull/18042 ? (documentation-only change) -
01:24 PM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Bug #22200] ObjectSpace._id2ref can return a different object than the id's owner on Ruby 4.0 (stale id2ref_tbl entry for objects with generic fields) (eregon)
* `_id2ref` is broken on Ruby 4.0, it returns internal objects, corrupt ... -
05:43 AM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Feature #22215] Introduce narrow internal interfaces for bundled extensions
* Add narrow internal interfaces for the bundled extensions
* internal/coverage.h
* internal/objspace.h
* Remove the transitive inclusion of `vm_c... -
12:45 AM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Bug #22216] Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
* Are we okay making this either thread-local or fiber-local? It's already Fiber-local at the top-level (o... - 08:59 PM Ruby Revision f01bbd41 (git): [ruby/rubygems] Centralize testing key/cert constants in test/rubygems/pem_utilities.rb
- This commit refactors testing key/cert constants in a more consistent way.
The key/cert constants were duplicated across the files, and there was a
different constant naming `*_PATH` vs `*_FILE`.
Create test/rubygems/pem_utilities.rb m... - 08:36 PM Ruby Revision 54d9f627 (git): [ruby/mmtk] Adding unit tests to ruby_heap_trigger.rs
- https://github.com/ruby/mmtk/commit/4089d04c49
-
08:26 PM Ruby Revision 6612731a (git): Pin IRB to latest master (#18214)
-
07:13 PM Ruby Feature #22227: Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- Simple web server result:
https://claude.ai/code/artifact/eaf033a3-b64b-4a7e-af29-8c45a36109b5 -
06:15 PM Ruby Feature #22227: Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- Eregon (Benoit Daloze) wrote in #note-2:
> Is this safe? It's writing concurrently to a shareable object IIUC, and might leave leftover mark bits which might matter for the global GC.
It only marks shareable objects that are in the crea... -
04:08 PM Ruby Feature #22227: Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- ko1 (Koichi Sasada) wrote:
> **Never free a shareable object.** At the end of marking
> ...
Is this safe? It's writing concurrently to a shareable object IIUC, and might leave leftover mark bits which might matter for the global GC. - 05:30 PM Ruby Revision 87b5ecef (git): [ruby/openssl] rand: fix error check of RAND_load_file()
- This function returns -1 on error, or the number of bytes read on
success. Preserve current behaviour and also error out on error.
Discovered by an experimental static analyzer I work on.
https://github.com/ruby/openssl/commit/b36a61597e -
05:06 PM Ruby Revision 895084e6 (git): Revert recent PRISM changes to fix irb bundled_gems CI
- This reverts commit 0017dea39538b75f54a64364e3878f8421378812,
5e36630fc012a305ea23aacd1c14cc8f9ad194f1, and
f3ec056c9f14e8e65a1e4617252f96c72b71d149.
We are trying to bump to latest IRB, which has "Accomodate new prism
tokens", but that... - 04:52 PM Ruby Revision f688f1cb (git): [JIT] Only call JIT single ractor mode invalidation once per process
- Previously, JIT single-ractor mode invalidation happened on every `Ractor.new` call.
This invalidation takes the VM lock + VM barrier so slows down these calls. We only
need to invalidate compiled code that makes these single-ractor assu... - 04:49 PM Ruby Revision 70874cc5 (git): ZJIT: fix gen_new_hash to use proper shape_id in flags
- If the shape capacity isn't set on an object, one thing that fails is
moving it across Ractors. The new object created in the dst Ractor needs
to be big enough to embed the contents if the src was embedded. -
04:28 PM Ruby Feature #22231 (Open): Add `IO::Buffer#index`
- ## Use case
I am writing nack-ruby (https://github.com/nsgi-org/nack-ruby), a Ruby implementation of NSGI, a host/guest interface for web applications. The host hands each HTTP request field to Ruby as an `IO::Buffer` view over its ow... -
03:21 PM Ruby Feature #22229: Allow GCI.escapeHTML to take a custom escape table
- byroot (Jean Boussier) wrote in #note-5:
> I made the point that by being limited to single characters, `escapeHTML` can be much easier to optimize much further.
That's something Regexp can optimize for and maybe already does to some ex... -
02:55 PM Ruby Feature #22229: Allow GCI.escapeHTML to take a custom escape table
- > but what about a fixed Regexp with the characters to escape?
@Eregon please see the benchmark at https://github.com/ruby/cgi/pull/55, it doesn't compile a regexp every time and there's still a 5x difference.
I only did it in this... -
02:46 PM Ruby Feature #22229: Allow GCI.escapeHTML to take a custom escape table
- If there is any doubt that `gsub` can be faster, here is my blog post about it: https://eregon.me/blog/2025/03/14/matching-regexps-200-times-faster.html
Notably matching could be about 200 times faster. -
02:41 PM Ruby Feature #22229: Allow GCI.escapeHTML to take a custom escape table
- Using a Hash for this with `escapeHTML`* seems rather inefficient.
The ideal implementation should use a vectorized search, and that needs a more complex representation of the characters to search, which a Regexp is great at.
`Regexp.un... -
01:40 PM Ruby Feature #22229: Allow GCI.escapeHTML to take a custom escape table
- I would also like to have this feature. Loofah (used by Rails's sanitization stack) currently has this code to re-implement `escapeHTML` with a custom table: https://github.com/flavorjones/loofah/blob/main/lib/loofah/html5/scrub.rb#L275-...
-
06:05 AM Ruby Feature #22229 (Open): Allow GCI.escapeHTML to take a custom escape table
- ### Use case
`CGI.escapeHTML` has a fixed escape table:
```c
HTML_ESCAPE('\'', "'"),
HTML_ESCAPE('&', "&"),
HTML_ESCAPE('"', """),
HTML_ESCAPE('<', "<"),
HTML_ESCAPE('>', ">"),
```
Bu... -
03:09 PM
Ruby
Bug #22228 (Closed): Do a major GC in YJIT test helper `assert_compiles` before running the test code
- Applied in changeset commit:git|56acaf32b28227e46be75372ad74ac7ebd8b3a9c.
----------
YJIT: Ensure GC ran before executing the test proc in YJIT tests. (GH-18197)
[Bug #22228] - 03:08 PM Ruby Revision 56acaf32 (git): YJIT: Ensure GC ran before executing the test proc in YJIT tests. (GH-18197)
- [Bug #22228]
-
01:23 PM Ruby Bug #22200: ObjectSpace._id2ref can return a different object than the id's owner on Ruby 4.0 (stale id2ref_tbl entry for objects with generic fields)
- One thought to avoid returning the wrong object would be to check the object we found actually has an `object_id` matching the argument (and if not `RangeError`). Because `object_id` are in practice unique this is a useful check.
That... -
12:35 PM Ruby Revision 1211355e (git): [DOC] Revise "Access Time" section of timestamps doc- #18196
-
12:05 PM Ruby Misc #22230 (Open): Should Ruby specs define byte oriented read behavior when the character buffer is not empty?
- In https://github.com/ruby/spec/pull/1384, there was a discussion regarding whether or not raising an IOError when performing a byte oriented read operation while the character buffer is nonempty should be part of the Ruby spec. @eregon...
-
11:06 AM Ruby Revision 1e7d46bc (git): Add Ractor tests for the monitor list.
- This commit adds tests to ensure that the monitor list is handled
correctly in advance or rlgc merging.
Because the monitor list can be mutated by multiple Ractors it's
possible to engineer a situation where the list contains dangling
p... -
11:02 AM Ruby Revision 0017dea3 (git): [ruby/prism] Split up backtick token
- Now we fully match parse.y, and it is clearer to distinguish
betewen backticks that are used for method names and backticks
that begin xstring literals.
https://github.com/ruby/prism/commit/a33c3ff7fe -
11:02 AM Ruby Revision 5e36630f (git): [ruby/prism] Split up lbrace token
- This also more closely matches parse.y, and makes it easier to
delineate which brace belongs to which type.
https://github.com/ruby/prism/commit/43ed8c1f80 -
11:02 AM Ruby Revision f3ec056c (git): [ruby/prism] Split up lparen token
- This more closely matches parse.y, and simplifies a bit of the lex
state as seen from the outside.
https://github.com/ruby/prism/commit/06dff548e8 -
10:41 AM Ruby Revision d2b75b5c (git): [ruby/rubygems] Document SPDX license handling for license= and licenses=
- RubyGems validates each entry as a single SPDX identifier; compound
expressions such as `MIT OR Apache-2.0` are rejected with a warning at
`gem build`. Document that, the `+`/`WITH` syntax, and the array form
as the only supported way to... -
10:38 AM Ruby Revision d1a30a10 (git): [DOC] Fix SyntaxError in the shareable_proc define_method example
- The do block attaches to define_method while &Ractor.shareable_proc
also passes a block argument, so the example fails to parse. Pass the
shareable proc as a positional argument instead. -
10:38 AM Ruby Revision 2e554257 (git): [DOC] Add require 'date' to the SimpleDelegator example
- The example calls Date.new, which raises NameError without the
require. -
10:38 AM Ruby Revision 2d7947d0 (git): [DOC] Use trace_object_allocations_start in the dump_all example
- ObjectSpace.trace_object_allocations raises LocalJumpError when called
without a block. -
10:38 AM Ruby Revision d4ce2366 (git): [DOC] Use IO::Buffer.for in the IO::Buffer#transfer example
- IO::Buffer.new takes a size as its first argument, so passing a string
raises TypeError. Adjust the sample output to the flags the buffer
created by IO::Buffer.for actually shows. -
10:38 AM Ruby Revision 23e969c7 (git): [DOC] Use __LINE__ in the second Module#module_eval lineno example
- The example passing lineno 10 evaluated __FILE__, which prints the
filename instead of 10. -
09:11 AM Ruby Feature #22226: Ractor: class/module ownership -- restrict modification to the Ractor that created it
- > How will autoload work with this?
autoload and require work on the main Ractor.
https://bugs.ruby-lang.org/issues/20627 -
08:06 AM Ruby Feature #22226: Ractor: class/module ownership -- restrict modification to the Ractor that created it
- How will autoload work with this?
My understanding would be that autoload will simply not work from ractors, even on classes they own, except via `Ruby::Box`. Is that correct?
Autoloads currently run on the main ractor, so ownershi... -
08:56 AM Ruby Bug #22201 (Closed): ruby.exe reads `"AA\ " BB` as a single argument
- Applied in changeset commit:git|ecc6edae550059c6414af728f0ada809d7547b97.
----------
win32: a backslash before whitespace escaped the closing quote
Inside double quotes, the escape was cancelled by almost any character
but not by white... -
08:56 AM Ruby Revision ecc6edae (git): win32: a backslash before whitespace escaped the closing quote
- Inside double quotes, the escape was cancelled by almost any character
but not by whitespace, so `"AA\ " BB` came out as a single argument.
[Bug #22201] -
08:19 AM Ruby Bug #22223: Socket.tcp with connect_timeout returns a phantom "connected" socket for a refused connection on macOS 27 (kernel answers EISCONN on connect retry; SO_ERROR never consulted)
- https://github.com/ruby/ruby/pull/18203
-
08:01 AM Ruby Bug #22223: Socket.tcp with connect_timeout returns a phantom "connected" socket for a refused connection on macOS 27 (kernel answers EISCONN on connect retry; SO_ERROR never consulted)
- I reproduced this on my own machine (macOS 27.0 beta, build 26A5388g, arm64) with ruby master (4.1.0dev). Darwin 27 answers the retry `connect(2)` on a refused nonblocking socket with `EISCONN`; `SO_ERROR` still holds `ECONNREFUSED`.
... -
07:54 AM Ruby Revision e20b1ca6 (git): [ruby/rubygems] Fix weak modifier flagged by quality_spec
- https://github.com/ruby/rubygems/commit/528ee98f2c
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
07:54 AM Ruby Revision 58e40b58 (git): [ruby/rubygems] Summarize cooldown-skipped versions at the end of install, update, and lock
- When cooldown silently resolves an older version, users comparing
environments with different cooldown settings can't tell why they got
different versions. Collect the versions the resolver excluded, and after a
successful resolution pri... -
07:53 AM Ruby Revision 653716c1 (git): [ruby/rubygems] Drop the redundant range-not-satisfiable e2e example
- Both halves of what it exercised are unit-covered now: the downloader
spec covers dropping the Range header on 416, and the RubyGems updater
tests cover replacing the cache from a full response. Remove the
example and its dedicated artif... -
07:53 AM Ruby Revision 5ede6e31 (git): [ruby/rubygems] Retry without Range when compact index returns 416
- Bundler's downloader already recovers from a stale over-long cache by
dropping the Range header and refetching the whole file, but
Gem::CompactIndexClient::HTTPFetcher raised FetchError instead, so the
gem CLI could not self-heal. Align ... -
07:53 AM Ruby Revision 0946835f (git): [ruby/rubygems] Move world-writable cache coverage to the RubyGems test suite
- The e2e example from https://github.com/ruby/rubygems/commit/3b9c572b43 guarded compact index cache writes
under a permissive umask. The client now lives in RubyGems, so assert
the CacheFile invariant directly: a fresh cache file keeps t... -
07:53 AM Ruby Revision 28dc734a (git): [ruby/rubygems] Remove spec/quality_es_spec.rb
- It guarded the language quality of the Spanish man page translations,
but no .es.ronn files are left in the repo, so it scanned English files
for Spanish words and could never fail. Also remove the be_well_formed
and be_sorted matchers, ... -
07:53 AM Ruby Revision 9ac3ccea (git): [ruby/rubygems] Move quality checks from RSpec suite to a lint rake task
- spec/quality_spec.rb only ran in the two full-suite Ubuntu jobs, so
failures surfaced late and nowhere else. Port it to tool/quality_check.rb
as plain Ruby, run it via `rake quality:check` in the ubuntu-lint
check_misc job, and drop it f... - 07:39 AM Ruby Revision 9901ecff (git): [DOC] Update bundled gems list at 91cfd2c1efe9b8ae35f4e03cf15124
-
07:26 AM Ruby Bug #18947: Unexpected Errno::ENAMETOOLONG on Windows
- One more limitation besides the ones above: spawning a child process from a 260+ character working directory still fails, since `CreateProcessW` keeps the `MAX_PATH` limit on `lpCurrentDirectory`.
I also audited every fixed-size buffer ... - 04:36 AM Ruby Revision 91cfd2c1 (git): compile.c: reject negative object index in the IBF loader
- pinned_list_store and pinned_list_fetch validated only the upper bound
(offset >= ptr->size) on a signed long index, so a malformed or truncated
IBF blob with a negative object index caused an out-of-bounds write/read
through ptr->buffer... -
04:26 AM Ruby Revision 8cb76c13 (git): Shrink `st_table` from 48B down to 40B
- This allows `st_table + RHash` to fit in a `64B` slot.
It is achieved by turning `entries_start` from pointer size
down to a single byte.
This means it can now overflow, if you delete the first element
255 times, but in such case we ca... -
04:21 AM Ruby Revision 4cd8f755 (git): Ractor: keep the elements a moved array still shares
- The array counterpart of f4e50b9993. A frozen array is handed out as a shared
root as it is, without the shared root flag (ary_make_shared), so a subseq or a
dup of an embedded one reads the elements straight out of its slot:
ary =... - 02:35 AM Ruby Revision 1ec37f2d (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.85.6 to 2.85.7
- [Release notes](https://github.com/taiki-e/i... -
02:29 AM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- alanwu (Alan Wu) wrote in #note-5:
> > That can leave generated code jumping back into code YJIT just invalidated.
> ...
This feels very suspiciously like https://bugs.ruby-lang.org/issues/21257 to me. I'll rule it in or out and update... -
01:24 AM Ruby Revision e2667f69 (git): [ruby/uri] Reduce base-path ".." removal in merge_path to a linear pass
- The RFC2396 5.2 6a step used Array#index/slice! in a loop, making
URI.join / URI#merge O(n^2) in the number of base-path segments, so a
640KB base of repeated "a/../" took several seconds. Rewrite it as a
single left-to-right pass while ... -
12:43 AM Ruby Bug #22216: Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
- Here's an example I think folks would expect to be thread safe, but fails on current CRuby after just a few iterations (thanks to the Thread.pass)
``` ruby
def test_it
proc { |str|
str =~ /(.)(.)(.)/
Thread.pass # Commen... -
12:37 AM Ruby Bug #22216: Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
- Just a note on the Ractor-incompatibility, I think that's actually a much smaller problem. We should only hit that via `Ractor.shareable_proc`, which is a point we can set svar as we want (or is a flag we could check for). We could fix t...
-
12:30 AM Ruby Bug #22216: Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
- I've started prototyping this in https://github.com/ruby/ruby/pull/18200 (needs testing and benchmarking still)
-
12:16 AM Ruby Bug #22216: Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
- I think I'm _somewhat_ sold on it being Fiber-local. There may be some incompatibilities, but the existing behaviour is already strange.
Here's the first case I was worried about. If you get an Enumerator with lazy or an iterating metho... -
12:33 AM Ruby Revision 022c795a (git): ZJIT: Preserve argument profiles in polymorphic dispatch arms (#18057)
- Each arm of a polymorphic dispatch takes a fresh Snapshot so that the
receiver resolves from its refined type instead of the polymorphic
profile. However, the fresh Snapshot had no ProfileOracle entries at
all, so argument-profile-depend...
08/04/2026
- 11:48 PM Ruby Revision e4694c21 (git): Fix "oneshot" tracepoints that disable themselves during the hook
- The debug gem uses a TP that disables itself (tp.disable) during the hook. If there are other
tracepoint events afterwards on the same iseq that share the same local hooks list, this results
in a UAF of the hook list.
This was fixed in ... - 11:33 PM Ruby Revision 7c35af0e (git): Update default gems list at a958cb539a4bdc0395cb98a8173817 [ci skip]
-
11:32 PM Ruby Revision a958cb53 (git): [ruby/erb] Version 6.0.7
- https://github.com/ruby/erb/commit/9907393a1f
- 11:31 PM Ruby Revision a689f93b (git): [ruby/erb] Simplify Scanner's Ractor safety code
- Ractor.make_shareable isn't needed if everything is plain `freeze`d
https://github.com/ruby/erb/commit/50f434e7e5 - 11:31 PM Ruby Revision b938d066 (git): [ruby/erb] Fix Ractor compatibility regression, add tests
- The recent change to use `BasicObject.instance_method(:equal?)` broke
the ability to share frozen ERB templates across Ractors because
`UnboundMethod` isn't shareable.
Freezing the `UnboundMethod` _may_ fix the issue (dependong on Ruby
... -
11:13 PM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- alanwu (Alan Wu) wrote in #note-5:
> > That can leave generated code jumping back into code YJIT just invalidated.
> ...
Not the latest release in CI. I'm willing to backport this bug fix to the release we are using (privately) in our ... -
11:12 PM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- luke-gru (Luke Gruber) wrote in #note-3:
> I think this is one of those instances I *should* have used an LLM, sorry! It has me thinking that this is not a bug after all. The JIT team will still take a look at it, but this may not be th... -
10:42 PM Ruby Bug #22225 (Feedback): YJIT regenerates a branch while a duplicate target still points to the invalidated block
- > That can leave generated code jumping back into code YJIT just invalidated.
This alone isn't problematic since `invalidate_block_version` patches in an exit at the invalidated block.
> ...
This symptom sounds familiar to a bug we... -
10:21 PM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- luke-gru (Luke Gruber) wrote in #note-3:
> I think this is one of those instances I *should* have used an LLM, sorry! It has me thinking that this is not a bug after all. The JIT team will still take a look at it, but this may not be th... -
09:01 PM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- I think this is one of those instances I *should* have used an LLM, sorry! It has me thinking that this is not a bug after all. The JIT team will still take a look at it, but this may not be the repro to your bug that you were hoping for.
-
10:26 PM Ruby Revision ee622200 (git): ZJIT: Fix cfp->block_code comment
-
10:26 PM Ruby Revision 3a3f32c6 (git): ZJIT: clear cfp->block_code in the materialize_exit trampoline
- gen_materialize_exit_trampoline clears cfp->jit_return and then calls
rb_zjit_materialize_frames. CFP_ZJIT_FRAME_P() is exactly
cfp->jit_return != NULL, so by then the exiting frame no longer looks like
a JIT frame and zjit_materialize_... - 10:22 PM Ruby Revision ce429a7d (git): ZJIT: Add IMemo subtype of RubyValue
- Use this for extended fields.
- 10:22 PM Ruby Revision 88cc7a28 (git): ZJIT: Type fields_obj as RubyValue
- It's an imemo, so not a BasicObject. This way, also, the return types in
setivar and getivar align and therefore we can optimize this better in
load-store elimination. - 10:22 PM Ruby Revision 7fb28619 (git): ZJIT: Add test for optimizing extended objects in load-store
- We should be able to see through the fields_obj but right now
setivar/getivar disagree on what the return type is
(RubyValue/BasicObject) so it doesn't get optimized. We will fix this in
the next commit. -
10:19 PM Ruby Revision f4e50b99 (git): Ractor: keep the bytes a moved string still shares
- Wiping the body of a hollowed-out object (556296cbe0) is wrong for a string
whose bytes another string reads in place:
r = Ractor.new { Ractor.receive }
str = "x" * 100
str.instance_variable_set(:@iv, []) # unshareable, so... - 09:34 PM Ruby Revision ae2411c8 (git): ZJIT: Identify a recompiling side exit's instruction at compile time (GH-18108)
- `exit_recompile()` decides whether to invalidate a compiled unit by asking whether the interpreter has finished re-profiling the instruction that exited. It used to identify that instruction by reading `ec->cfp->iseq` and `ec->cfp->pc`. ...
-
08:06 PM Ruby Feature #22212: Add Thread::Backtrace::Location#source_range
- Yes, if `#syntax_tree` reliably returns the correct node, the returned node can provide the start/end line/column.
The main gain of `#source_range` is providing those stable coordinates without relying on the version-specific `node_id` ... -
02:33 PM Ruby Feature #22212: Add Thread::Backtrace::Location#source_range
- If `#syntax_tree` gets merged, I am no longer certain of the use case here, because to my knowledge that entirely encapsulates this work. I can't imagine needing the exact source range (more than you already have) but _not_ needing the s...
-
07:46 PM Ruby Feature #21795: Methods for retrieving ASTs
- @kddnewton Thanks for taking a look.
The warning and the behavior with parse.y are also concerns, but the more fundamental blocker is correctness: the implementation can return the wrong node.
This is not merely an unstable or experi... -
02:31 PM Ruby Feature #21795: Methods for retrieving ASTs
- @mame thanks for the great prototype. I think `#syntax_tree` makes a lot of sense, and I think the name and implementation are both fine.
As a small note, I noticed that you manually implement the DFS to find the child node because yo... -
06:21 PM Ruby Bug #22216: Special variables (ex. Regexp backref and IO lastline) are thread-unsafe in some cases, incompatible with Ractor
- jhawthorn (John Hawthorn) wrote in #note-11:
> One question Jean posed that I don't see discussion about is whether this should be Thread-local or Fiber-local. My gut instinct was to prefer Fiber-local, but I think it will cause incompa... -
05:32 PM Ruby Bug #22228: Do a major GC in YJIT test helper `assert_compiles` before running the test code
- Created https://github.com/ruby/ruby/pull/18197 on master.
-
05:27 PM Ruby Bug #22228 (Closed): Do a major GC in YJIT test helper `assert_compiles` before running the test code
- I was debugging why a YJIT test added from backport to 3.3.11 with GC.stress fails downstream. This revealed an assumption in the assert_compiles, that the environment is "clean", or as default as possible.
`assert_compiles` already san... -
04:48 PM Ruby Revision 556296cb (git): Ractor: wipe the body of an object hollowed out by move
- Ractor#send(move: true) turns the source object into a frozen
Ractor::MovedObject in place: it rewrites the header and gives the slot a
field-less shape, but leaves the old body untouched. Ruby-level access is
blocked by method_missing,... -
03:30 PM Ruby Revision 03615950 (git): [ruby/prism] Abort on allocation failure in static literals
- https://github.com/ruby/prism/commit/b25cba96bd
-
03:19 PM Ruby Revision 73bfbd23 (git): [ruby/io-console] Implement FFI console mode support
- Add the missing console mode API so JRuby and TruffleRuby match
the native extension.
https://github.com/ruby/io-console/commit/beaf98288b -
12:49 PM Ruby Revision 3e646aee (git): [DOC] Update docs for GC.stat
-
12:48 PM Ruby Revision 74c9f4a4 (git): [DOC] Doc for File::absolute_path
-
12:46 PM Ruby Feature #20448: Make coverage event hooking C API public
- mame (Yusuke Endoh) wrote in #note-7:
> Thanks for the research. So, `TracePoint.new(:branch)` seems good enough for the use case of fuzzer, right?
> ...
Hi @mame, might I please request a review of the above PR? Or, what steps should ... -
09:16 AM Ruby Revision 29d630c1 (git): [ruby/rubygems] Load vendored persistent before activating Artifice in-process
- Artifice replaces Gem::Net::HTTP, so when bundler/vendored_persistent
gets lazily required while Artifice is active, the vendored Persistent
classes are defined under the Artifice replacement. After deactivation
Gem::Net::HTTP::Persisten... -
09:16 AM Ruby Revision b5ea1b67 (git): [ruby/rubygems] Require spec path helpers lazily in the git config guard
- support/subprocess.rb is preloaded into every spawned ruby before
RubygemsVersionManager switches RubyGems, and requiring support/path at
load time dragged the pathname default gem into that context, breaking
Bundler unit specs under a r... -
09:16 AM Ruby Revision f2a4941a (git): [ruby/rubygems] Prevent test git commands from mutating the checkout's own git config
- When a fixture directory has no .git, git repository discovery walks up
into the checkout itself, and a fixture `git config user.email` lands
in the checkout's shared .git/config, polluting the author identity of
subsequent commits in ev... -
08:28 AM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Bug #18947] Unexpected Errno::ENAMETOOLONG on Windows
* This fix resolved the real-world issue. But my fix used undocumented feature. Is it okay?
* [Bug #19378] Windows: Use less syscalls for faster require of big gems
* Is i... -
05:23 AM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Feature #22226] Ractor: class/module ownership -- restrict modification to the Ractor that created it (ko1)
* This proposal reduce the exceptions. In most case, there are no problem.
* [Feature #22227] Per-Ractor GC: collect each ... -
07:30 AM Ruby Revision aeb7a057 (git): [ruby/rubygems] Check the resolved parent directory before extracting old format gems
- Gem::Package::Old#extract_files only validated entry paths by string
expansion, so a preexisting symlink in the extraction directory redirected
writes outside of it. Gem::Package#extract_tar_gz already re-resolves the
parent directory wi... -
07:29 AM Ruby Revision fe011509 (git): [ruby/rubygems] Don't mask install errors when no Gemfile can be located
- require_tree_for_spec calls SharedHelpers.default_gemfile to build the
"In Gemfile:" header of the error report. When BUNDLE_GEMFILE is unset
and no Gemfile is findable from the current directory, that raises
GemfileNotFound from inside ... -
06:48 AM Ruby Feature #22227: Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- > GC.start in a multi-Ractor process runs a stop-the-world global GC; automatic GC in a Ractor collects only its own heap.
Should `GC.start` gain some sort of `local_only: true` argument?
I could see this as useful for applications... -
05:20 AM Ruby Feature #22227 (Open): Per-Ractor GC: collect each Ractor's heap locally, stop the world only when needed
- Companion PR: https://github.com/ruby/ruby/pull/18194
---
## Abstract
This proposal makes the default GC operate per Ractor. Each Ractor owns an
objspace (a private heap) and collects it on its own thread without stopping
any... -
05:45 AM Ruby Bug #22217: Segmentation fault when resuming execution with `Coverage.start` and ruby/debug
- Thank you so much for the quick fix and for preparing the backport!
-
03:42 AM Ruby Bug #19378: Windows: Use less syscalls for faster require of big gems
- I applied the attached MINIMAL-stat-fastpath.patch and reworked it for st_ino/st_dev compatibility in https://github.com/ruby/ruby/pull/18193. Benchmark results and fast/fallback parity testing are in the pull request description.
-
03:26 AM Ruby Bug #18947: Unexpected Errno::ENAMETOOLONG on Windows
- Two questions before this goes further.
* The bit is set in `rb_w32_sysinit`, so only hosts that call `ruby_sysinit` get it, which effectively means `ruby.exe`. Embedders that do their own initialization keep the 260 character limit. ... -
02:34 AM Ruby Revision ab022182 (git): [ruby/rubygems] Remove Bundler::CompactIndexClient
- Bundler now uses Gem::CompactIndexClient, so delete the duplicate
client and its unit specs. Coverage the specs had over the RubyGems
test suite moves to test-unit: available? boundaries, yanked-line
checksums, versions lines without a c... -
02:34 AM Ruby Revision 79906cdf (git): [ruby/rubygems] Use Gem::CompactIndexClient in Bundler
- Switch Bundler's compact index fetcher and the outdated-version check
from Bundler::CompactIndexClient to the RubyGems client, wiring
Bundler's filesystem access helper into the new hook. Bundler keeps its
orchestration layer (parallel w... -
02:34 AM Ruby Revision 9f4fb3ef (git): [ruby/rubygems] Add a filesystem access hook to Gem::CompactIndexClient
- Bundler's client wraps every cache read and write in
SharedHelpers.filesystem_access so permission problems surface as
friendly Bundler errors instead of bare Errno exceptions. Funnel the
same operations through an injectable hook, defau... -
02:34 AM Ruby Revision f9199295 (git): [ruby/rubygems] Ship Gem::CompactIndexClient in the Bundler gem
- Add lib/rubygems/compact_index_client to the gem's files so Bundler
carries the client itself. This keeps Bundler self-contained on RubyGems
versions older than 4.1, which do not include Gem::CompactIndexClient,
independently of any rele... -
02:34 AM Ruby Revision 5a5e9922 (git): [ruby/rubygems] Make Gem::CompactIndexClient loadable from a Bundler-shipped copy
- The client's subfiles reached sibling RubyGems files with cross-tree
require_relative, which breaks when the copy shipped inside the Bundler
gem is loaded on an older RubyGems: the relative targets are not part of
that copy. Require them... - 02:33 AM Ruby Revision b1c2115d (git): Bump the github-actions group across 1 directory with 5 updates
- Bumps the github-actions group with 5 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.6.1` | `0.6.2` |
| [github/codeql-action/init](... - 02:31 AM Ruby Revision 0d045690 (git): CI: Build just ruby.exe in make-old-toolset jobs
- rubyw.exe is not exercised by the smoke test in these jobs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> - 02:31 AM Ruby Revision 519f24d4 (git): CI: Run a single `nmake prog` in make-old-toolset jobs
- The separate `nmake incs` and `nmake mini` steps were workarounds for
missing dependencies in win32/Makefile.sub.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> - 02:31 AM Ruby Revision 9d92f30a (git): mswin: Fix dependencies to build ruby.exe in a single nmake run
- In a clean build directory, `{$(VPATH)}config.h` prerequisites in
common.mk fall back to the bare name, which nothing knows how to build
(U1073). Also rbconfig.rb is always generated by miniruby here
regardless of BASERUBY, but did not ... -
02:11 AM Ruby Revision 3754b809 (git): [DOC] Fix typos in documentation guide
- 01:01 AM Ruby Revision 54d7ea64 (git): ZJIT: Don't clone args in inline_methods
- 01:01 AM Ruby Revision 78fb1aed (git): ZJIT: Don't always use find() in type_specialize
- Use it in only two branches: Send and InvokeSuper. We can probably
remove those later but it needs further refactoring.
Cuts ~20ms aggregate compile time off of lobsters.
Before:
plum% for i in $(seq 0 5); do WARMUP_ITRS=2 MIN_BEN... -
12:45 AM Ruby Revision f16405da (git): [DOC] Improve docs for GC.stress=
- 12:12 AM Ruby Revision 6d163ef3 (git): prism: Work around VS2017 miscompilation of conditional expressions
- cl 19.16 materializes both arms of a conditional expression whose arms
are struct compound literals before testing the condition, so NTOK2LOC
and similar macros dereference NULL tokens and crash, even with -Od.
Build pm_location_t via an... - 12:12 AM Ruby Revision 0c8d1b1e (git): win32/vssetup.cmd: Fix -vcvars_ver argument passing
- cmd.exe splits batch file arguments on "=", so "-vcvars_ver=14.29"
reaches the argument loop as two tokens and VsDevCmd.bat ignores the
version with an invalid argument error. Reassemble the pair before
chaining to VsDevCmd.bat.
Co-Auth... - 12:12 AM Ruby Revision 083efe64 (git): CI: Build with VS 2017/2019 toolsets on Windows
- The hosted runner images no longer preinstall VS 2017/2019, so install
the v141/v142 toolsets into the preinstalled VS 2022 and select them
with -vcvars_ver. These jobs only build up to ruby.exe; extensions and
tests are not covered.
Co...
08/03/2026
-
11:50 PM Ruby Revision 2f4e7464 (git): [ruby/rubygems] Remove Bundler's duplicate vendored PubGrub
- Bundler now loads Gem::PubGrub from RubyGems' copy, so drop the
Bundler::PubGrub tree and its vendoring entry, and regenerate the
Manifest. The pub_grub entry in tool/bundler/vendor_gems.rb stays
because the RubyGems-side vendoring still... -
11:50 PM Ruby Revision 980ab776 (git): [ruby/rubygems] Use RubyGems' vendored PubGrub in Bundler
- Load Gem::PubGrub from RubyGems' copy, which the gem now ships under
lib/rubygems, and point all resolver references at the Gem::PubGrub
namespace. Also collapse the DSL's individual subfile requires into a
single require of the guarded ... -
11:50 PM Ruby Revision b48ee62c (git): [ruby/rubygems] Ship RubyGems' vendored PubGrub in the Bundler gem
- Add lib/rubygems/vendor/pub_grub to the gem's files, and to
tracked_files_glob so the "ships the correct set of files" spec stays in
sync with the gemspec. This keeps Bundler self-contained on RubyGems
versions older than 4.1, which do n... -
11:50 PM Ruby Revision c0330647 (git): [ruby/rubygems] Guard the vendored pub_grub against double loading
- When the same Gem::PubGrub copy is shipped in two gems (RubyGems and
Bundler) and required from different paths, the unguarded entrypoint
reloads it and emits "already initialized constant" warnings. Add an
idempotent guard at the top of... -
11:23 PM Ruby Revision 56335423 (git): Revert doc/NEWS/NEWS-3.4.0.md to v3_4_0:NEWS.md
-
10:06 PM Ruby Revision 388109f6 (git): [DOC] Minor fixes for Regexp
-
10:06 PM Ruby Revision cc7e6ee4 (git): [DOC] Fix letters in Regexp doc
-
09:14 PM Ruby Bug #22217: Segmentation fault when resuming execution with `Coverage.start` and ruby/debug
- [Backport PR](https://github.com/ruby/ruby/pull/18184).
-
08:20 PM
Ruby
Bug #22217 (Closed): Segmentation fault when resuming execution with `Coverage.start` and ruby/debug
- Applied in changeset commit:git|6d14ea1306c8bbdea9b7eccbf0b91fa84bacec68.
----------
Fix "oneshot" tracepoints that disable themselves during the hook
The debug gem uses a TP that disables itself (tp.disable) during the hook. If there ... -
06:57 PM Ruby Bug #22217: Segmentation fault when resuming execution with `Coverage.start` and ruby/debug
- Thanks for the report and minimal repro, it was very helpful. I have a [PR](https://github.com/ruby/ruby/pull/18182). This will be fixed in 4.0.7 (released some time in September). The affected version are 4.0.0 - 4.0.6.
-
08:54 PM Ruby Feature #22226 (Open): Ractor: class/module ownership -- restrict modification to the Ractor that created it
- ## Abstract
Every class/module records the Ractor that created it as its *owner*. Only the owner Ractor
can modify it. Reading is unchanged and allowed from any Ractor.
This replaces several ad-hoc "main Ractor only" rules with a ... -
08:27 PM Ruby Bug #22224: YJIT: rb_yjit_invalidate_ep_is_bp takes the VM lock stopping Ractors on every Proc materialization; multi-Ractor throughput collapses (up to ~150x)
- The PR is [here](https://github.com/ruby/ruby/pull/18176). I've also marked this as needing a backport because this really is a bug, it can slow down Ractors a lot.
-
11:18 AM Ruby Bug #22224 (Open): YJIT: rb_yjit_invalidate_ep_is_bp takes the VM lock stopping Ractors on every Proc materialization; multi-Ractor throughput collapses (up to ~150x)
- Hi! Fair warning: a significant portion of this bugreport and experimentation/benchmarking was done by an agent.
Sorry for the slop, but it was so much faster to benchmark and find a root issue.
**Proposed PR: https://github.com/ru... - 08:20 PM Ruby Revision 6d14ea13 (git): Fix "oneshot" tracepoints that disable themselves during the hook
- The debug gem uses a TP that disables itself (tp.disable) during the hook. If there are other
tracepoint events afterwards on the same iseq that share the same local hooks list, this results
in a UAF of the hook list.
This was fixed in ... -
06:46 PM Ruby Revision 80e57a11 (git): Make IO objects unshareable
- A frozen IO used to pass Ractor.make_shareable, but the result is not
useful and not sound:
* Almost nothing works on it. read, gets, seek, eof? and sync= all
raise FrozenError because they update the buffered state in rb_io;
only ... -
06:46 PM Ruby Revision 54c7fd12 (git): Raise instead of crashing when a non-T_DATA object is not shareable
- make_shareable_check_shareable() assumes allow_frozen_shareable_p() can
only fail for T_DATA and dereferences RTYPEDDATA_TYPE() right after the
check. The VM_ASSERT documenting that assumption is compiled out in a
release build, so maki... -
04:56 PM Ruby Bug #22220: Performance regression when requiring `aws-sdk-ec2` in Ruby 4.0.6
- Possibly fixed by https://github.com/ruby/ruby/pull/18181
-
03:23 PM Ruby Bug #22220: Performance regression when requiring `aws-sdk-ec2` in Ruby 4.0.6
- cc @viralpraxis
-
03:27 PM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- Thank you for the report and the great repro. This does look like a bug to me. The YJIT folks will take a look at it soon.
-
02:13 PM Ruby Bug #22225: YJIT regenerates a branch while a duplicate target still points to the invalidated block
- Apologies for the rather in the weeds report here but:
1. Is this expected behavior?
2. This does result in an infinite loop/self-jump in a much more elaborate repro and in my CI environment (a large test suite > 100k examples often r... -
12:18 PM Ruby Bug #22225 (Feedback): YJIT regenerates a branch while a duplicate target still points to the invalidated block
- YJIT adds one incoming-list entry for each branch target that points to a block. When both targets point to the same block, that block's incoming list contains the same `BranchRef` twice.
`invalidate_block_version` processes those ent... -
02:18 PM Ruby Misc #22221: DevMeeting-2026-08-06
- * [Feature #22222] Expose a C API equivalent of `RubyVM::InstructionSequence.load_from_binary` (byroot)
* It would allow Bootsnap to directly load iseq from C without copying bytes into a string.
* `rb_str_new_static` exists but is... -
06:12 AM Ruby Misc #22221: DevMeeting-2026-08-06
- - [Feature #22118] Introduce Basic Bit Operations into String (hasumikin)
- https://bugs.ruby-lang.org/issues/22118#note-6
- Is it OK to have a *temporary* asymmetry where `String#bit_count` doesn't take a bit-order keyword?
... -
01:03 PM Ruby Revision e0314f00 (git): [DOC] Improve docs for GC.verify_internal_consistency
-
01:01 PM Ruby Revision f91aad6c (git): [DOC] Fix output of example in String encoding
-
12:14 PM Ruby Revision 6579cc46 (git): Require Ruby 3.3 to run ruby/spec
- Match the runtime version check to the supported versions documented
in the README. -
12:14 PM Ruby Revision b81caa8c (git): Remove redundant rb_int_positive_pow declaration
- `rb_int_positive_pow` has been declared by public headers since
Ruby 3.1. -
12:14 PM Ruby Revision 9d6f6a49 (git): Add C API wrapper for rb_process_status_for
- Expose `rb_process_status_for` so C API specs can verify its
availability. -
12:14 PM Ruby Revision 2843641d (git): Add C API wrapper for rb_int_parse_cstr
- Expose `rb_int_parse_cstr` so its parsing behavior can be
covered by C API specs. -
11:26 AM Ruby Feature #22202 (Feedback): Add Coverage.branch_stub and Coverage.method_stub as companions to Coverage.line_stub
-
11:25 AM Ruby Bug #22179 (Closed): Coverage: redefined methods silently disappear from method Coverage.result after GC
- Applied in changeset commit:git|b26b0227f83849db0d450ce09f39ed9a72aad24b.
----------
Fix method coverage dropping redefined/removed methods after GC [Bug #22179]
Method coverage rebuilt its result by walking the heap for method
entries... -
11:25 AM Ruby Revision 6ca7cd2d (git): coverage: Do not record aliases in me_set
- An alias resolves to a different method entry, so it is filtered out when
the result is aggregated anyway. Avoid retaining it in me_set.
Co-Authored-By: Erik Berlin <sferik@gmail.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <norepl... -
11:25 AM Ruby Revision b26b0227 (git): Fix method coverage dropping redefined/removed methods after GC [Bug #22179]
- Method coverage rebuilt its result by walking the heap for method
entries, so a shadowed or removed method that was never called could be
reclaimed by GC and vanish from the result depending on GC timing.
Record each defined method entr... -
11:25 AM Ruby Revision 20cb1759 (git): coverage.c: Extract method_coverage_add helper
- Behavior-preserving refactoring extracted from method_coverage_i.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> -
11:25 AM Ruby Revision 7039708d (git): Rename me2counter to cme2counter
- The counter is keyed by the callable method entry (cme) at the call site.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> -
07:48 AM Ruby Bug #19921: TestYJIT#test_bug_19316 test failure
- > but I see that you carry ruby-2.7.0-Initialize-ABRT-hook.patch, which makes the VM use Kernel#require on boot. That might be the source of the interrupt.
I have investigated in depth due to another newer test that uses GC.stress in ... -
07:04 AM Ruby Revision 95b02c82 (git): gc/default: make stress GC honor gc_allowed in TRY_WITH_GC
- TRY_WITH_GC guards its retry-GC branch with gc_allowed (which reflects
the current ractor's malloc_gc_disabled, set while a ractor lock is
held), but called objspace_malloc_gc_stress() unconditionally. Under
GC.stress, a malloc inside a... - 05:00 AM Ruby Revision 1f48cf8a (git): [ruby/rubygems] Adapt the plugin index to Gem::YAMLSerializer semantics
- The stub serializer dumped an empty hash as a bare "key:" line and loaded
such a line back as an empty hash. Gem::YAMLSerializer dumps it as
"key: {}" and correctly loads a bare key as nil, so index files written
by older Bundler version... -
05:00 AM Ruby Revision 3ad19fac (git): [ruby/rubygems] Drop Bundler's stub YAML serializer
- Bundler::YAMLSerializer is no longer referenced anywhere now that Bundler
uses Gem::YAMLSerializer everywhere.
https://github.com/ruby/rubygems/commit/b74a1987db
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
05:00 AM Ruby Revision f71a863c (git): [ruby/rubygems] Port Bundler's YAML serializer specs to the RubyGems test suite
- The RubyGems test suite already covers almost all of the Bundler
yaml_serializer spec through test_gem_safe_yaml.rb. Port the two missing
cases (URL mapping keys as used by mirror settings, and Psych
interoperability in both directions) ... -
05:00 AM Ruby Revision 9f7e05ce (git): [ruby/rubygems] Use RubyGems' YAML serializer in Bundler
- Bundler now uses Gem::YAMLSerializer unconditionally for settings and the
plugin index instead of falling back to its own stub serializer. The
fallback is no longer reachable because the Bundler gem ships a copy of
Gem::YAMLSerializer fo... -
05:00 AM Ruby Revision 5f07e13d (git): [ruby/rubygems] Ship RubyGems' YAML serializer in the Bundler gem
- Add lib/rubygems/yaml_serializer.rb to the gem's file list so the Bundler
gem carries its own copy of Gem::YAMLSerializer. This keeps Bundler
self-contained on RubyGems versions that predate it, the same way the
vendored URI and SecureRa... -
05:00 AM Ruby Revision 8d75afff (git): [ruby/rubygems] Guard RubyGems' YAML serializer against double loading
- When the same Gem::YAMLSerializer copy is shipped in two gems (RubyGems and
Bundler) and required from different paths, the second load redefines its
constants and emits "already initialized constant" warnings. Add an
idempotent guard at... - 04:47 AM Ruby Revision 53b70874 (git): [ruby/rubygems] Remove #private? check from open_private_key and check in Gem::Security.sign
- Remove the OpenSSL::PKey::{RSA,DSA,EC}#private? check in open_private_key. This
makes the code ML-DSA compatible since OpenSSL::PKey::PKey used for ML-DSA
doesn't have #private?.
According to the discussion on <https://github.com/ruby/o... - 04:47 AM Ruby Revision 01a05971 (git): [ruby/rubygems] Remove hardcoded key-dependent values from tests
- Because these hardcoded values make the tests fail when recreating the keys.
This is not convenient.
* Remove hardcoded subjectKeyIdentifier value assertions.
* In test_sign, replace assertion with hardcoded value with
PRIVATE_KEY.ver... - 04:47 AM Ruby Revision f2740146 (git): [ruby/rubygems] Recreated testing .pem files.
- As I modified logic related to output format in tool/create_certs.rb and
tool/create_encrypted_key.rb at the last commit, I ran these scripts to
recreate the testing .pem files as follows. Now the private .pem files are
PKCS #8 format.
... - 04:47 AM Ruby Revision f241c03d (git): [ruby/rubygems] Replace OpenSSL::PKey::{RSA,DSA,EC}#to_pem
- Replace OpenSSL::PKey::{RSA,DSA,EC}#to_pem with
OpenSSL::PKey::{RSA,DSA,EC}#private_to_pem or #public_to_pem.
Continue to use OpenSSL::X509::Certificate#to_pem.
This makes the code ML-DSA compatible since OpenSSL::PKey::PKey used for ML... - 04:47 AM Ruby Revision 863175bc (git): [ruby/rubygems] Split Gem::Security.write into write_private_key and write_certificate
- Gem::Security.write managed the following 2 cases.
* pemmable is RSA/DSA/EC private key, an instance of OpenSSL::PKey::{RSA,DSA,EC}
* pemmable is certificate, an instance of OpenSSL::X509::Certificate
There was no case that pemmable wa... -
04:32 AM Ruby Revision 568dde7f (git): Add NEWS entry for net-ftp and net-pop removal [Feature #21835]
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
04:32 AM Ruby Revision f364e197 (git): Link the psych libfyaml NEWS entry to ruby/psych#805
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
04:32 AM Ruby Revision bc5ce159 (git): Add NEWS entry for experimental libfyaml backend of psych
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
04:32 AM Ruby Revision b5ae03c5 (git): Add NEWS entry for removed EOL platform support
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
04:32 AM Ruby Revision bcddad76 (git): Add NEWS entry for lazy loading of error decoration gems [Feature #21951]
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
03:32 AM Ruby Revision dca45c25 (git): compile.c: pass the new operand ci to the write barrier, not the INSN
- The splat rebuild in compile_massign_lhs passes the arena-allocated INSN
(iobj) to RB_OBJ_WRITTEN (since f2286925f0). iobj is not a heap object,
so the barrier touches the page it happens to land on, which is
undefined. It is harmless ... -
03:26 AM Ruby Revision e59558c4 (git): Fix operand in the update_global_event_hooks assertion
- The assertion for change_c_events < 0 compares ruby_vm_c_events_enabled
against -change_iseq_events instead of -change_c_events, so it fires on
a normal case where the iseq-event decrement happens to exceed the
number of enabled C events... - 03:11 AM Ruby Revision f622e125 (git): Bump github.com/microsoft/vcpkg from 2026.06.24 to 2026.07.29
- Bumps [github.com/microsoft/vcpkg](https://github.com/microsoft/vcpkg) from 2026.06.24 to 2026.07.29.
- [Release notes](https://github.com/microsoft/vcpkg/releases)
- [Commits](https://github.com/microsoft/vcpkg/compare/master...9e593bb1... -
03:08 AM Ruby Revision 6a9a387b (git): [ruby/io-console] [DOC] Prevent RDoc from referencing internal modules
- https://github.com/ruby/io-console/commit/04e3f33df6
-
03:08 AM Ruby Revision dcf88474 (git): [ruby/io-console] `IO#tty?` extension is unsupported on Cygwin
- `rb_w32_open_osfhandle` is defined only on mingw/mswin.
https://github.com/ruby/io-console/commit/3043df5241 -
01:12 AM Ruby Revision 60c82965 (git): [DOC] Improve docs for GC.start
-
01:00 AM Ruby Revision 18225b55 (git): [DOC] Doc for File::absolute_path?
- 12:16 AM Ruby Revision 74c2a61a (git): [ruby/rubygems] Update SSL/TLS RSA test/rubygems/*.pem files generated by new create_certs.sh
- Note that previous "openssl ca" commands did output human-readable text + PEM
format for the following files. With new openssl commands, the human readable
texts are removed. This is not a problem.
```
test/rubygems/ca_cert.pem
test/rub...
08/02/2026
-
07:18 PM Ruby Revision 7eeb5b63 (git): Remove dead DURING_GC_COULD_MALLOC_REGION_START/END in default.c
-
02:58 PM Ruby Revision af233106 (git): [ruby/time] Handle case insensitive match for Time.{iso8601,xmlschema,rfc3339}
- The T and Z in the regular expressions are case insensitive, but
Time.new on Ruby 3.2+ does not support the lowercase versions.
Arguably, lower case t and z shouldn't be allowed, but they were
historically supported. Time.rfc3339 is a ne... -
02:57 PM Ruby Revision 67522f63 (git): [ruby/time] Make Time.rfc3339 require minutes in offset
- This is required by RFC 3339 section 5.6, which does not allow for an
offset without a minute.
Fixes https://github.com/ruby/time/pull/73
https://github.com/ruby/time/commit/d9a0d789c5 -
01:16 PM Ruby Revision a0c1b4fb (git): Make rb_get_message static
-
12:42 PM Ruby Bug #15598: Deadlock on mutual reference of autoloaded constants
- This issue appears to have been corrected at https://github.com/ruby/ruby/commit/6fbc32b5d0da31535cccc0eca1853273313a0b52.
```
$ (git checkout 6fbc32b5d0da31535cccc0eca1853273313a0b52~; make -j miniruby) >/dev/null && ./miniruby -v b... -
09:00 AM Ruby Revision 63c7beb2 (git): [ruby/io-console] Enable tty type checks on TruffleRuby
- Use Ruby-level `Module#prepend` because TruffleRuby declares but does
not export `rb_prepend_module`.
https://github.com/ruby/io-console/commit/3708c0ce8a -
09:00 AM Ruby Revision 12ce4464 (git): [ruby/io-console] Treat nil as the default tty type
- Allow the default tty check to be combined with platform-specific tty types.
https://github.com/ruby/io-console/commit/e307d61226 -
09:00 AM Ruby Revision d1bfedce (git): [ruby/io-console] Accept multiple mode arguments
- https://github.com/ruby/io-console/commit/d140425f9f
-
09:00 AM Ruby Revision f4075968 (git): [ruby/io-console] [DOC] IO.tty? optional argument
- https://github.com/ruby/io-console/commit/f06f2d9784
-
09:00 AM Ruby Revision 93c3a6bc (git): [ruby/io-console] Support `tty?(:any)` on any platform
- https://github.com/ruby/io-console/commit/47dcadc644
-
09:00 AM Ruby Revision 6c86149a (git): [ruby/io-console] Do nothing on old TruffleRuby
- https://github.com/ruby/io-console/commit/27754105c7
-
09:00 AM Ruby Revision b53d7e55 (git): [ruby/io-console] Win32: ttyname will not be used
- https://github.com/ruby/io-console/commit/28cdf86e81
-
09:00 AM Ruby Revision 105878ec (git): [ruby/io-console] Rename the internal term "wintty" as "platform"
- https://github.com/ruby/io-console/commit/4cfaca6ad6
-
09:00 AM Ruby Revision 1aa7f893 (git): [ruby/io-console] Extend `IO#tty?` for cygwin/msys terminals
- https://github.com/ruby/io-console/commit/989ee71140
- 05:15 AM Ruby Revision 3ac5ce97 (git): [ruby/time] Require offset when parsing RFC3339
- RFC3339 requires a Z designator or explicit numeric offset. Reject offset-less timestamps instead of passing them to Time.new, which interprets them in local time.
https://github.com/ruby/time/commit/98bd588fd4 -
03:41 AM Ruby Revision 79fa2bcf (git): Add `rb_prepend_module` C API spec
- Cover the public C API so missing implementations are detected.
-
01:59 AM Ruby Revision 62eaaae3 (git): [ruby/spec] Use ENVSpecs.encoding for ENV key encoding specs
- ENV strings are always UTF-8 on Windows, while Encoding.find('locale')
follows the console code page, so these two specs failed under cp932.
The other ENV specs already go through ENVSpecs.encoding.
Co-Authored-By: Claude Opus 5 <norepl... -
12:23 AM Ruby Revision 7a18459c (git): Fix RUBY_TYPED_FROZEN_SHAREABLE_NO_REC
- An UnboundMethod does not refer to any mutable children, so it should be
shareable when frozen. The documentation for RUBY_TYPED_FROZEN_SHAREABLE_NO_REC
states:
Similar to RUBY_TYPED_FROZEN_SHAREABLE, but doesn't make shareable
... -
12:22 AM Ruby Revision d4394964 (git): [DOC] Class doc for Pathname
08/01/2026
-
09:56 PM Ruby Revision e281a01b (git): Tell GitHub that `*.inc` files are autogenerated [ci skip]
-
06:20 PM Ruby Revision f8d62cdb (git): [ruby/prism] Encoding leaking
- Fixed encoding was leaking around elements because it wasn't being
cleared around elements that had only a single token.
https://github.com/ruby/prism/commit/03bde59c40 -
05:49 PM Ruby Revision bfb3b4ea (git): Fix flaky test_clock_gettime_unit for slow Rubies
- If the test takes over 1 second, it will fail because the difference
between t0 and t1 will be over 1 second. If we update t0 on every iteration,
it should make it less flaky because each iteration will need to run in
less than 1 second.... -
05:49 PM Ruby Revision e714ff85 (git): [DOC] Correct doc for File#truncate
-
05:48 PM Ruby Revision 027e3931 (git): Pathname harmonize doc (#18155)
-
05:47 PM Ruby Revision 96f8cfd3 (git): [DOC] Fix formatting in two places (#18154)
-
05:46 PM Ruby Revision 5d610c62 (git): [DOC] Doc for Pathname#open
-
05:45 PM Ruby Revision 387a69e8 (git): [DOC] Doc for Pathname#fnmatch?
-
05:45 PM Ruby Revision b4a41d40 (git): [DOC] Doc for Pathname#dirname
-
05:43 PM Ruby Revision 8d32043a (git): [DOC] Doc for Pathname#file?
-
05:42 PM Ruby Revision 7d6828a3 (git): [DOC] What's Here for Pathname
-
11:40 AM Ruby Revision 395f8b92 (git): [ruby/prism] Bound the leading-zero skip in pm_integer_parse
- The PM_INTEGER_BASE_DEFAULT branch skips leading zeros without checking
`end`, so it reads one byte past the range for an all-zero input.
pm_float_node_rational_create() reaches it: it allocates `length` bytes
for the mantissa, writes o... - 08:07 AM Ruby Revision 34f041ca (git): Silence debugger availability probes in EnvUtil
- `EnvUtil::Debugger.search` runs each debugger to test whether it is
usable, and the probe output goes straight to the test output. On
Windows, the lldb bundled with Visual Studio BuildTools fails to
delay-load python311.dll and dumps an ... -
07:32 AM Ruby Revision 12c1ddef (git): [ruby/stringio] Fix thread safety of strio_free
- (https://github.com/ruby/stringio/pull/223)
Follow up to #222
This refcount previously wasn't thread safe (and shouldn't have been
declared `RUBY_TYPED_THREAD_SAFE_FREE`), but it's easy enough to fix
using ruby/atomic.h (Ruby 3.0+)
ht... -
07:25 AM Ruby Revision 48bf7981 (git): [ruby/ipaddr] Follow up on #114: update tests for `multicast?` and `link_local_multicast?`
- https://github.com/ruby/ipaddr/commit/4c5bf4f79a
- 02:27 AM Ruby Revision aab76676 (git): Bump the jit group across 1 directory with 2 updates
- Bumps the jit group with 2 updates in the /zjit directory: [libc](https://github.com/rust-lang/libc) and [rand](https://github.com/rust-random/rand).
Updates `libc` from 0.2.180 to 0.2.189
- [Release notes](https://github.com/rust-lang... -
12:12 AM Ruby Revision 384c0fd8 (git): ZJIT: Import hir in codegen.rs (#18134)