Activity
From 10/12/2026 to 10/18/2026
Today
-
08:43 AM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- sferik (Erik Berlin) wrote in #note-9:
> `Rails.cache` stores them with Marshal
Are you able to use `config.cache_store = :memory_store, { serializer: :message_pack }`? Alternatively you could make a wrapper class where `dump`/`load`... -
02:07 AM Ruby Revision af502c75 (git): [DOC] Fix indentation in packed_data.md
-
01:34 AM Ruby Bug #22445: On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
- Merged the backport into `ruby_3_4` at https://github.com/ruby/ruby/commit/50f6624862de6ad173713f10b4dc028c2f3ad014.
-
01:19 AM Ruby Revision d7cd0d48 (git): [DOC] Tweaks for MatchData#integer_at
-
01:11 AM Ruby Revision 1f6b0e78 (git): [DOC] Tweaks for '***' globbing
10/17/2026
-
06:56 PM Ruby Revision 5b1c3735 (git): [ruby/prism] Attach block to correct argument inside jump value
- https://github.com/ruby/prism/commit/7e8c702c33
-
04:48 PM Ruby Bug #22450 (Closed): Jump value attaches block in incorrect place under parse.y
- Applied in changeset commit:git|31a3aa4e46dd33b5a08708d687ed9f9d3253b55a.
----------
[Bug #22450] Preserve do-block binding in control-flow arguments
Inherited `CMDARG` state made `do` blocks in control-flow arguments
bind to the wrong... -
03:33 PM Ruby Revision 31a3aa4e (git): [Bug #22450] Preserve do-block binding in control-flow arguments
- Inherited `CMDARG` state made `do` blocks in control-flow arguments
bind to the wrong call. -
02:19 PM Ruby Revision a430ab4e (git): Refactor small `Array#sample` handling
-
01:54 PM Ruby Feature #22400: Use rb_long_t for lengths so that String and Array can exceed 2GiB on mswin
- Both MSWIN and MINGW intentionally use the same ABI. They only have a different toolset. So I don't think we should introduce a ABI difference on the ruby C interface for them.
Likewise there's no good reason to handle MINGW and MSWIN... - 01:02 PM Ruby Revision 57095a33 (git): [DOC] Update bundled gems list at 1a6f1b3e918850c16fdc30806cc1c6
-
12:21 PM Ruby Bug #22452: `rb_equal` returns true for `NaN == NaN`
- Possibly a duplicate of [Bug #1720] where it was established that `Float::NaN == Float::NaN` is "undefined" therefore OK.
It seems that the motivation was to not prevent optimization of `rb_equal`. -
12:00 PM Ruby Bug #22452 (Open): `rb_equal` returns true for `NaN == NaN`
- I noticed this while trying to cleanup and simplify `rb_equal`.
```ruby
>> Float::NAN == Float::NAN
=> false
> ...
=> 0
```
I would expect it to return `nil`.
`Array#index` is just an example, any core method, and even C ext... -
11:37 AM Ruby Revision 50f66248 (git): Reset the fork lock in the child without unlocking it
- A thread that is waiting for the fork lock when another thread forks
exists only in the parent, but on macOS the child's copy of the lock
still counts it. After the child unlocks its copy,
pthread_rwlock_destroy() and pthread_rwlock_init... -
11:16 AM Ruby Revision 1a6f1b3e (git): Update irb and suppress warnings about aliases in module
- ruby/irb#1256
-
08:37 AM Ruby Bug #22451: Coderange may be set incorrectly when concatenating a string into itself
- Seems to have been present all the way since 1.9.
-
08:10 AM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- Merged into `ruby_3_4` at https://github.com/ruby/ruby/commit/56c3e7ea7b8530d6ee28904c8148026cc236ba9a.
- 07:56 AM Ruby Revision 965a0880 (git): Fix termlen in String#initialize
- Without capacity:, rb_enc_raw_set doesn't resize the buffer for a wider
terminator, so the terminator could overflow an embedded string.
rb_enc_associate resizes it.
With capacity: and no encoding:, the buffer was sized for a 1-byte
ter... -
07:10 AM Ruby Revision bf2eb21a (git): Update maintainers for ipaddr.rb (#19406)
-
05:24 AM Ruby Revision 56c3e7ea (git): Join getaddrinfo and getnameinfo threads before fork
- A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread exit takes the resolver configuration lock again
after the thread has released the fork lock. A fork that lands then
leaves the child with t... -
05:16 AM Ruby Bug #22415: Thread.handle_interrupt needs to preserve errinfo
- Thank you for creating PRs.
Merged into `ruby_3_4` at https://github.com/ruby/ruby/commit/79214e7c6e55aea027312e839b59942ef6163f5a. - 05:16 AM Ruby Revision 79214e7c (git): [Backport #22415] Restore ec->errinfo after handling interrupts
- Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/raise/throw) is being propagated, and the payload
of that jump lives in ec->errinfo.
Handling an interrupt can run Ruby code: rb_signal_exec() ru... -
04:22 AM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
- Thank you for creating PRs.
Merged into `ruby_3_4`at https://github.com/ruby/ruby/commit/26a4d835f7512f0615f6e0d7ed483c3438373b7e. -
04:21 AM Ruby Revision 26a4d835 (git): Fix Range#include? of an empty range of single characters
- A range of single character Strings told that it includes its end
even when it is empty, since the end was not compared with the begin.
("z".."a").to_a #=> []
("z".."a").include?("a") #=> true
(cherry picked from commi... -
04:16 AM Ruby Revision d14d56f1 (git): merge revision(s) b3598cf2a355497693bb66097edc156af3152e9b:
- Win: Strip CRs from `cpp` and `nm` output
The combination of mingw tools and cygin/msys2 ruby leaves CRs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:16 AM Ruby Revision 98ec3589 (git): merge revision(s) b0a4e2399b34701d4fc05f9543142b0c73d1fb9b:
- CI: mingw: Use the official actions for msys2
Because ruby/setup-ruby is affected to test result.
Also includes the prerequisite changes from e4b386e090, 90f8199412,
a443cd012a and 4adb6f6969 (Remove Strawberry Perl pkg-config,... -
02:58 AM Ruby Revision 2ac46ed8 (git): Fix out-of-bound access of empty rest arguments array
-
02:58 AM Ruby Revision 61261bf5 (git): Add more assertions to `RARRAY_AREF`
-
02:35 AM Ruby Revision ca96afe2 (git): [ruby/ipaddr] Warn on bracketed IPv6 address with a prefix length
- IPAddr.new("[2001:db8::]/32") is currently accepted and treated the
same as IPAddr.new("2001:db8::/32"). However, square brackets are a
delimiter for embedding an address in a larger syntax such as
host:port (RFC 5952 section 6), and no ... - 02:35 AM Ruby Revision 3617d3ea (git): [ruby/ipaddr] Add IPAddr#to_hex
- Returns the hexadecimal representation of the address value, right
adjusted to the address size (8 characters for IPv4, 32 for IPv6).
https://github.com/ruby/ipaddr/commit/e19c9b153b -
12:51 AM Ruby Revision 58c56248 (git): [ruby/prism] Keywords revisit
- Introduce a perfect hash for keyword checking so we do not have to
do as many comparisons. This results in about a 1% speed up.
Also, introduce a function called by the C extension and the FFI
backend that can check if something is a ke...
10/16/2026
-
10:14 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > I'll second Jean, we should absolutely not do this. Im also eager to replace dtoa.c, but if we're changing the algorithm (and especially if that changes the output in any cases) we should do it at most once over the next ~5 years.
T... -
09:12 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- sferik (Erik Berlin) wrote in #note-2:
> Yeah, I hope we don't let perfect win out over good here. Let's ship a better algorithm in 4.1, and an even better one in 4.2, and an even better one if 4.3…
I'll second Jean, we should absolu... -
06:05 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > This one is interesting because a large part of the complexity of the implementation is caused by the semantic of these methods is that the comparison is done as element == searched_item.
> ...
This comment inspired another optimizati... -
05:24 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > We don't backport performance patches, only bugfixes.
That's what I thought, but you said:
> ...
Anyway, I am happy to help cover the maintenance cost in whatever way I can.
> That's why I've added the question to the next dev meeti... -
05:05 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > you like me to do that for PR #19360?
We don't backport performance patches, only bugfixes.
> ...
I already saw it, but's that's not how Ruby works, that's not for me to decide such a big change with user visible (albeit minor) i... -
02:22 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- Thank you for merging [PR #19360](https://github.com/ruby/ruby/pull/19360)!
> It's not that simple though, there's a maintenance cost to all this (e.g. backports), and these algorithm can have subtly different behavior on fringe cases, ... -
08:06 AM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > Let's ship a better algorithm in 4.1, and an even better one in 4.2, and an even better one if 4.3…
It's not that simple though, there's a maintenance cost to all this (e.g. backports), and these algorithm can have subtly different ... -
09:55 PM Ruby Bug #22451 (Open): Coderange may be set incorrectly when concatenating a string into itself
- ```ruby
s = "\x81\x30".force_encoding("GB18030")
#=> "\x810"
s.valid_encoding? # This is invalid
#=> false
(s + s).valid_encoding? # However it becomes valid when repeated
#=> true
(s << s).valid_encoding? # But concat assumed the... -
09:04 PM Ruby Revision 25fb329e (git): Add missing write barriers to hash_copy's ST to AR path
- ar_add_direct_i, added in 60a4894bdb (Dynamic ar_table size), inserts the
entries with ar_insert_direct and no write barrier. Unlike the other
hash_copy paths it can run Ruby code (ar_insert_direct may call #eql?) and
so trigger a GC par... -
07:12 PM Ruby Misc #22417: DevMeeting-2026-11-12
- derp. 4.1... need more coffee
-
07:10 PM Ruby Misc #22417: DevMeeting-2026-11-12
- I'd like #22244 to be considered for 4.2. I won't be able to attend but maybe @tenderlovemaking could represent this for me?
(status: already worked down feedback from @nobu, currently green. Just needs review & merge) -
06:02 PM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
- ### Backport PRs
3.3: https://github.com/ruby/ruby/pull/19395
3.4: https://github.com/ruby/ruby/pull/19396
4.0: https://github.com/ruby/ruby/pull/19397 - 05:31 PM Ruby Revision f2bc42f6 (git): [ruby/openssl] ssl: raise ArgumentError for a negative length in SSLSocket
- Check the length so that #sysread, #read_nonblock and the buffer
variants raise ArgumentError.
https://github.com/ruby/openssl/commit/9443e67e99
Co-authored-by: Kazuki Yamaguchi <k@rhe.jp> -
05:15 PM Ruby Feature #21308: Replacing the Float#to_s (dtoa.c) implementation with a modern algorithm
- I've proposed a patch at https://github.com/ruby/ruby/pull/19309. I have added some benchmarks to demonstrate the gains.
-
05:06 PM Ruby Bug #21559: Unicode normalization nfd -> nfc -> nfd is not reversible
- Hi there @duerst 👋
I found this ticket after running into a normalization problem while working on an implementation of the Unicode Collation Algorithm. It seems there is at least one other case where the identity `toNFD(x) == toNFD(t... -
04:59 PM Ruby Revision 7a5165e4 (git): [ruby/prism] Use free lists for scopes and contexts
- https://github.com/ruby/prism/commit/32fe8100c1
- 04:33 PM Ruby Revision 4c296834 (git): Use mark context when marking execution_context
- 04:23 PM Ruby Revision ac121993 (git): [Backport #22415] Restore ec->errinfo after handling interrupts
- Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/raise/throw) is being propagated, and the payload
of that jump lives in ec->errinfo.
Handling an interrupt can run Ruby code: rb_signal_exec() ru... -
03:39 PM Ruby Revision 2d4992fc (git): Fix pm_memchr constness.
- cast memchr result (or make return const void *) to resolve -Werror incompatible-pointer-types"
-
03:35 PM Ruby Revision 89856b96 (git): Bump ruby/setup-ruby to v1.329.0
- setup-ruby v1.236.0 raises "Cannot find Git's cert file" on Windows
runners because Git for Windows moved from mingw64 to ucrt64.
This was fixed in ruby/setup-ruby#947 (v1.328.0). -
01:44 PM Ruby Bug #22450 (Closed): Jump value attaches block in incorrect place under parse.y
- Sorry about this one. The following code: `check 1, if true then return foo + bar do end end` under Prism:
```
-e: warning: argument of top-level return is ignored
== disasm: #<ISeq:<main>@-e:1 (1,0)-(1,49)>
0000 putself ... -
12:38 PM Ruby Revision e0688566 (git): Remove discard qualifiers warning with C23 strchr
- C23 has qualifier-preserving standard library functions, so calling
strchr with a `const char *` will return a `const char *`. We can change
the type of the local variables because we don't mutate the strings. -
08:56 AM Ruby Revision 67cd6aa5 (git): Dispatch `Array#sample` in array.rb
-
08:38 AM Ruby Revision f83864c7 (git): CI: Update gem sources using `git` always
-
08:09 AM Ruby Revision 224726a9 (git): Skip rb_eql() for identical elements in Array#eql?
- Array#== walks both element buffers and only calls rb_equal() for a
pair whose VALUEs differ. Array#eql? called rb_ary_elt() twice and
rb_eql() once for every element, even though rb_eql() answers true
for identical VALUEs before doing a... -
07:24 AM Ruby Bug #22449 (Closed): Out-of-bounds in `Array#sample` when array modified
- Applied in changeset commit:git|88ffa9a3003c36e5c6001cca33e0bba2fcb37125.
----------
[Bug #22449] Fix out-of-bounds in `Array#sample` when array modified
Get the length after the conversion using `to_int` is complete. -
05:36 AM Ruby Bug #22449 (Closed): Out-of-bounds in `Array#sample` when array modified
- Backports required: [GH-18879], [GH-19047], and [GH-19384]
[GH-18879]: https://github.com/ruby/ruby/pull/18879
[GH-19047]: https://github.com/ruby/ruby/pull/19047
[GH-19384]: https://github.com/ruby/ruby/pull/19384 -
07:24 AM Ruby Revision 88ffa9a3 (git): [Bug #22449] Fix out-of-bounds in `Array#sample` when array modified
- Get the length after the conversion using `to_int` is complete.
- 07:03 AM Ruby Revision 524cc256 (git): [DOC] Update bundled gems list at 0a1c71148a53007bd6db4658e5f074
-
06:30 AM
Ruby
Feature #22244: `ruby -UU` should set both internal and external, `ruby -E` should print encoding list
- Hello Ryan,
I suggest you add your issue to [Ruby Misc#22417] DevMeeting-2026-11-12.
This is the best way to get attention and a decision from @matz.
Regards, Martin.
On 2026-10-16 04:00, zenspider (Ryan Davis) via ruby-cor... - 02:35 AM Ruby Revision 0a1c7114 (git): Bump the github-actions group across 1 directory with 2 updates
- Bumps the github-actions group with 2 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `ruby/setup-ruby` from 1.328.0 to ... - 02:17 AM Ruby Revision 7276c727 (git): Update default gems list at e242384ceda7ae4f922da234c9af25 [ci skip]
-
02:17 AM Ruby Revision e242384c (git): [ruby/ipaddr] Bump the version to 1.3.0
- https://github.com/ruby/ipaddr/commit/a3f7dbe1b7
-
01:15 AM Ruby Bug #22448 (Open): Jump value with a command call with a method call chained
- This is a little bit odd, found this while fuzzing Prism.
Right now, parse.y raises a void value expression error for a method call on a parenthesized jump, as in:
```ruby
def m; (return foo 1 do end).bar; end
```
but if you g... - 12:29 AM Ruby Revision b660facc (git): [ruby/ipaddr] Respect explicit address families for decorated IPv6 literals
- Signed-off-by: AC <ac@fabtek.cn>
https://github.com/ruby/ipaddr/commit/8696d8fdec
10/15/2026
-
11:48 PM Ruby Revision 8c82ca2c (git): [DOC] Harmonize world_readable? methods
-
11:24 PM Ruby Bug #22240: Protect against SEGV caused by native extensions using rb_funcall between rb_protect and rb_jump_tag
- I also found where magnus is explicitly setting errinfo to nil:
https://github.com/matsadler/magnus/pull/188
If a magnus-backed function was called from an exception handler
(prior to #22415) it could also lead to this SEGV. -
10:02 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > For this specifically [Feature #21308] has been open for a while. I'd like to see it addressed, but this is a field that's been strangely moving fast with new implementation coming out regularly. But they're all miles ahead of dtoa.c s...
-
08:34 PM Ruby Feature #22446: Speed up several core methods in Array, Range, String, Integer, Float and Time
- > Conversions between Float and String:
For this specifically [Feature #21308] has been open for a while. I'd like to see it addressed, but this is a field that's been strangely moving fast with new implementation coming out regularly... -
02:54 PM Ruby Feature #22446 (Open): Speed up several core methods in Array, Range, String, Integer, Float and Time
- I've opened a set of pull requests that speed up commonly used core methods. This issue collects them in one place for discussion. Each PR stands on its own, adds its benchmark in the first commit, and has its own tests.
All of the nu... - 09:19 PM Ruby Revision f3376672 (git): Socket.tcp_with_fast_fallback: Fix typo in getaddrinfo family
- ADDRESS_FAMILIES[:family_name] used the Symbol :family_name as the key
instead of the local variable family_name, so the address family was
always nil. This is a follow-up to b896f80598 [Bug #21512].
Co-Authored-By: Claude Opus 5.5 <nor... - 09:13 PM Ruby Revision b1d31512 (git): Use mark ctx when marking internal ractor objects
- When doing marking work with > 16 Ractors, we can see a difference by
not having to rederive the mark context when marking the Ractor object.
Benchmark: gc_balloon, 20 runs per number of ractors:
| bench | ractors | ctl (ms) ... -
09:11 PM Ruby Revision ec4b2917 (git): [ruby/prism] token_begins_argument_p cleanup
- https://github.com/ruby/prism/commit/990ebbf60b
-
08:47 PM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Feature 21308] Replacing dtoa.c implementation with a modern algorithm (byroot)
* Not my ticket, but this has been open for a while.
* While it's not a major hotspot for most applications, it's true that `Float#to_s` and `String... -
08:43 PM Ruby Revision 19c0ec23 (git): [ruby/prism] Fix up handling Foo::Bar {} with a comma
- https://github.com/ruby/prism/commit/4893d3b94e
-
08:43 PM Ruby Revision 12c4506f (git): [ruby/prism] Fix up not command inside endless def
- https://github.com/ruby/prism/commit/c3bdf7c769
-
08:24 PM Ruby Revision 8c7656f5 (git): [ruby/prism] Split up command write checks
- Previously checking for a command write was the same concept as
checking for a command call, but in reality (and since 4.0) they
are different things.
https://github.com/ruby/prism/commit/e9cdac6b98 -
08:14 PM Ruby Bug #22447 (Open): parse.y `-> do ... end` COND state
- With parse.y, `do`-blocks inside a `-> do ... end` lambda body are rejected when the lambda appears in a `while`/`until`/`for` condition:
```ruby
while -> do foo do end end; end
# => syntax error, unexpected 'do' for condition, expe... -
07:37 PM Ruby Revision 6776cc5a (git): Remove discard qualifiers warning with C23 strchr
- C23 has qualifier-preserving standard library functions, so calling
strchr with a `const char *` will return a `const char *`. We can change
the type of the local variables because we don't mutate the strings.
(cherry picked from commit... -
07:37 PM Ruby Revision 16e5778e (git): [ruby/prism] Handle command assignment with endless def
- A very subtle issue, but one that came up with fuzzers.
https://github.com/ruby/prism/commit/b57cd1f440 -
07:37 PM Ruby Revision 27204205 (git): Reset the fork lock in the child without unlocking it
- A thread that is waiting for the fork lock when another thread forks
exists only in the parent, but on macOS the child's copy of the lock
still counts it. After the child unlocks its copy,
pthread_rwlock_destroy() and pthread_rwlock_init... - 07:34 PM Ruby Revision 5538d4df (git): wbcheck: update for current GC API and fix startup
- - Implement the gc_impl.h functions added since wbcheck was last updated
(single-objspace stubs, as in mmtk)
- Create the object table in objspace_init, since st_init_numtable needs
an objspace to allocate from
- Report during_global... -
07:16 PM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- Thanks, that makes sense, and sorry for batching the two fixes. byroot dropped the commit for extensions that call `fork(2)` from https://github.com/ruby/ruby/pull/19364 before merging it, so the PR fixed only #22445. 🙇♂️
-
03:51 PM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- Like @byroot, I don't think Ruby explicitly supports extensions calling fork(2) directly. In practice, since 3.4 an extension cannot fork safely anyway: it cannot take the fork lock before fork(2) or reset it in the child (`rb_thread_acq...
-
06:57 AM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- > a child that an extension forks with fork(2) and then passes to rb_thread_atfork(), as the C API asks
I remember this being discussed a while ago and I believe that the conclusion was that forking from C wasn't supported. I'm a bit ... -
04:53 AM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- While preparing the backports I found one kind of child that still inherits the slot of exiting lookup threads: a child that an extension forks with `fork(2)` and then passes to `rb_thread_atfork()`, as the C API asks. `rb_thread_acquire...
-
07:00 PM Ruby Feature #22244: `ruby -UU` should set both internal and external, `ruby -E` should print encoding list
- @matz any chance I can get this enhancement into 4.1? I think it helps usability a fair amount:
```
10001 $ ./build/miniruby tool/runruby.rb --extout=build --archdir=build -- -E
Available Encodings:
ASCII-8BIT, Big5, Big5-HK... -
06:29 PM Ruby Revision 2d234f3c (git): [ruby/prism] Handle some insane syntax
- Unparenthesized lambdas with do...end inside a while loop need to
change ever so slightly. No one is using this syntax, but a fuzzer
found it.
https://github.com/ruby/prism/commit/fe09f5ac08 -
06:23 PM Ruby Bug #22445 (Closed): On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
- Applied in changeset commit:git|e06b9da3f20455ba4cff99a7821f013b7bdde5de.
----------
Reset the fork lock in the child without unlocking it
A thread that is waiting for the fork lock when another thread forks
exists only in the parent, ... -
04:45 AM Ruby Bug #22445: On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
- Pull request: https://github.com/ruby/ruby/pull/19364 🙇♂️
-
04:25 AM Ruby Bug #22445 (Closed): On macOS, a child of Kernel#fork can abort with "[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)"
- On macOS, `Kernel#fork` can abort the child with `[BUG] pthread_rwlock_destroy: Resource busy (EBUSY)` when another thread is waiting for the fork lock at the moment of the fork. getaddrinfo helper threads take that lock for reading (Fea...
-
06:23 PM Ruby Revision e06b9da3 (git): Reset the fork lock in the child without unlocking it
- A thread that is waiting for the fork lock when another thread forks
exists only in the parent, but on macOS the child's copy of the lock
still counts it. After the child unlocks its copy,
pthread_rwlock_destroy() and pthread_rwlock_init... -
05:57 PM Ruby Revision 7569e3af (git): CI: Create `revision.h`
-
05:57 PM Ruby Revision 50608f22 (git): Fix `lastrev` invoking in non-git directory
- 05:40 PM Ruby Revision 3e77f97d (git): YJIT: Unlink failed batch blocks from the graph
- When gen_block_series() fails on a block after the first one, for
example because code memory is full, it frees the blocks it already
compiled with free_block(blockref, false). That skips
remove_from_graph(). A batch block can have a bra... -
04:53 PM Ruby Feature #22437: Speed up creation and basic operations of Struct / Data
- It would be easier to discuss the implementation if you opened a pull request (even as draft).
For instance I have several concerns about `hidden_ivar_get`:
- Not using atomics (technically tearing isn't a concern for pointer siz... -
02:47 AM Ruby Feature #22437: Speed up creation and basic operations of Struct / Data
- Thank you for working on this.
As I understand it, experiment/struct-data-core speeds up Struct/Data without breaking compatibility. It will need careful review, but I have no objection to the direction.
Personally, I'm much more i... -
03:46 PM
Ruby
Bug #22415 (Closed): Thread.handle_interrupt needs to preserve errinfo
- Applied in changeset commit:git|21c6e8a54b7a2127a262b195e26b543ece591c67.
----------
[Bug #22415] Restore ec->errinfo after handling interrupts
Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/... - 03:45 PM Ruby Revision 21c6e8a5 (git): [Bug #22415] Restore ec->errinfo after handling interrupts
- Interrupts are checked at arbitrary points, including while a jump
(break/next/redo/return/raise/throw) is being propagated, and the payload
of that jump lives in ec->errinfo.
Handling an interrupt can run Ruby code: rb_signal_exec() ru... -
02:31 PM Ruby Revision da2efcbf (git): [ruby/prism] Bump to v2.0.0.rc1
- https://github.com/ruby/prism/commit/e06e08af29
-
12:26 PM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
- ## Summary
Exporting the three symbols had no measurable cost on ruby-bench's `lobsters`, with or without ZJIT, on x86-64 or arm64. With default visibility, though, GCC compiles `vm.c` differently, which can move interpreter microbenc... -
08:36 AM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
- For clarity, it's also fine if these symbols get renamed/changed/etc, exporting them doesn't imply any future compatibility, it's just best-effort.
Without the export it's very difficult and hacky to get to them, which translates to cas... -
08:33 AM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
- +1, this would make external profilers more reliable (there are several important advantages of external profilers, e.g. reduce a lot the observer effect, no need to change anything in the already-running program).
Datadog is shipping t... -
09:16 AM Ruby Revision c498dc69 (git): Document building with GNU make on mswin
- A ruby built this way also builds extension libraries with `make` from PATH, so installing gems with C extensions needs GNU make there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:05 AM Ruby Revision 77cb678e (git): win32: Define LASTREV for GNU make
- Since 4361d8e48f, `REVISION_H_CMD` in common.mk pipes `$(LASTREV)`, which only win32/Makefile.sub defined. With GNU make, `make update-src` ran the bare pipe, and cmd failed with `| was unexpected at this time.`
Co-Authored-By: Claude O... -
09:05 AM Ruby Revision b2407649 (git): win32: Download bundled gems after pulling with GNU make
- `update-gems` and `extract-gems` in common.mk read `gems/bundled_gems` when they run. With `-j`, `make up` downloaded the gems listed before the pull, and `extract-gems` then unpacked the old version of a gem that the pull had bumped.
C... -
09:05 AM Ruby Revision f67cca08 (git): win32: Run after-update in make up with GNU make
- With `.WAIT`, `up$(DOT_WAIT)::` in common.mk names another target, so `make up` did not run `after-update`. Run it in the same make, as defs/gmake.mk does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:05 AM Ruby Revision f1d8de44 (git): win32: Run VCSUP in update-src with GNU make too
- GNUmakefile.sub defined `VCSUP` but no rule ran it, so `make up` did not pull the source tree. Pull before the rules in common.mk, as template/Makefile.in does, so that revision.h is made from the pulled tree.
Co-Authored-By: Claude Opu... -
08:08 AM Ruby Revision 4361d8e4 (git): Reduce the requirements of `lastrev`
- Remove baseruby from the prerequisites so that `lastrev` will work as
long as Git is installed. -
07:32 AM Ruby Revision 57fd1485 (git): [ruby/rubygems] Omit an empty DESTDIR on mswin with GNU make too
- mkmf on mswin moves the drive letter of prefix into DESTDIR in the Makefile, so passing an empty DESTDIR made C extension installs fail on a GNU make built mswin Ruby whenever the current drive was not the one holding prefix. The check n...
-
07:30 AM Ruby Revision 84b47a2d (git): [DOC] Register each new worktree with firewall.cmd from a post-checkout hook
- Coding agents build in a new worktree for each task, so every worktree meets the dialog. The hook runs without stopping only when User Account Control never notifies, and otherwise it starts a task registered once with the highest privil...
-
07:30 AM Ruby Revision 30160ec2 (git): win32: Add firewall.cmd to stop the firewall alert in tests
- Windows Defender Firewall asks about every new executable path that listens on all interfaces. A block rule for the build directory stops the dialog without exposing the tests to other machines, and connections from the same machine stil...
-
07:01 AM Ruby Revision 76f0a791 (git): [ruby/json] Drop the leftovers of runtime SSE2 detection
- Neither the `__builtin_cpu_supports` probe in conf.rb nor `cpuid.h` has a use now that SSE2 is assumed on x86-64. The probe kept SIMD off on GCC older than 4.8, and the `HAVE_CPUID_H` guard broke builds that have `x86intrin.h` but not `c...
-
07:01 AM Ruby Revision 1c7e4ce2 (git): Check for INT_MIN before negating sprintf width
- Negating INT_MIN overflows, so the compiler may drop the `width < 0` check that follows it. clang-cl does so, and `sprintf("%*s", INT_MIN, "")` does not raise ArgumentError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:01 AM Ruby Revision e63fe71e (git): Check for RB_LEN_MIN before negating beg in rb_str_subpos
- Negating RB_LEN_MIN overflows, so the compiler may assume `-beg < 0` never holds and drop the check. clang-cl does so, and `str[LONG_MIN, 1]` returns a substring instead of nil.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
05:03 AM Ruby Bug #22439 (Closed): Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
- Thank you for confirming the patches! I think this is resolved, so I'm closing this ticket.
-
05:02 AM Ruby Bug #22440 (Closed): Referencing an autoload constant from multiple Ractors dumps core
- Applied in changeset commit:git|8a060f90ba36441cfeb509eacb10f609314f5bfe.
----------
Fix SEGV when referencing an autoload constant from multiple Ractors
vm_ic_update used GET_RACTOR() after the constant lookup. The lookup may
block wa... -
05:01 AM Ruby Revision 8a060f90 (git): Fix SEGV when referencing an autoload constant from multiple Ractors
- vm_ic_update used GET_RACTOR() after the constant lookup. The lookup may
block waiting for an autoload, and under the M:N thread scheduler the
thread may then be resumed on a different native thread. Since
vm_ic_update is inlined into rb... -
04:50 AM Ruby Bug #22442 (Closed): Lazy loading of error_highlight etc. is skipped in threads and Ractors
- Applied in changeset commit:git|d193fd3217a87b1015b73a4d31c0f6e116bc3cdd.
----------
Load the error decoration gems by firing their autoloads
The lazy loading of error_highlight, did_you_mean, and syntax_suggest
claimed the load by an ... -
04:50 AM Ruby Revision d193fd32 (git): Load the error decoration gems by firing their autoloads
- The lazy loading of error_highlight, did_you_mean, and syntax_suggest
claimed the load by an atomic exchange before the load started. So a
caller in another Ractor or thread during the load returned the
undecorated message without waitin... -
04:39 AM Ruby Revision ce3a3062 (git): Document building with clang-cl on mswin
- clang-cl 15 is the oldest version the build accepts. The component is not in Visual Studio 2017, which mswin still supports.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision 92216410 (git): mswin: Reject clang-cl older than 15
- clang-cl ignores `#pragma optimize` before 15, so rb_gc_guarded_ptr, which RB_GC_GUARD uses with _MSC_VER, can be optimized away. Check it at configure time and when make reads the makefile, as for MSVC.
Co-Authored-By: Claude Opus 5.5 ... -
04:39 AM Ruby Revision 58551947 (git): mswin: Keep CC from the environment on reconfiguration
- nmake reruns configure.bat with configure_args when build files change. CC set only in the environment was not recorded there, so nmake from a shell without it switched to cl in the middle of a build, and a shell still having it got the ...
-
04:39 AM Ruby Revision 96fd3a3e (git): Cast unsigned 64-bit pointers for the Interlocked functions
- They take pointers to the signed LONG64. clang-cl warns about the difference in every file that includes ruby/atomic.h, as MSVC does at -W4 (C4057).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision be4e6d08 (git): Update the bundled prism to the revision ruby/ruby is synced with
- The previous revision still used SSSE3 instructions on MSVC x64 without checking the CPU, which clang-cl rejects, so the clang-cl build stopped in the prism extension. ruby/prism@1bab98e441 switched to SSE2.
Co-Authored-By: Claude Opus ... -
04:39 AM Ruby Revision 720fe71a (git): mswin: Pass libruby after -link to build the C-API spec extensions
- clang-cl counts a library before -link as another input and then rejects -Fo, so test-spec stopped at building array_spec.so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision 73722ea8 (git): mswin: Optimize for speed by default with clang-cl
- clang-cl takes the default -O2sy- as -Os.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision dc6b65f0 (git): Use direct threaded code with clang-cl
- clang-cl supports labels as values and `__extension__`, but does not define __GNUC__, so the VM fell back to the switch dispatch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision 7df6851c (git): Define DEPRECATED_TYPE for clang-cl as for clang
- clang-cl does not know `#pragma deprecated` and warns about it in every file that includes ruby.h. The warning is an error in mkmf checks with -WX.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision 7c5aaac0 (git): mswin: Do not pass -Zc:preprocessor to clang-cl
- clang-cl warns that the option is unused. Through CPPFLAGS in RbConfig, the warning becomes an error in mkmf checks with -WX, and convertible_int could not tell the type in TestMkmfConvertible.
clang-cl defines the same _MSC_VER as MSVC... -
04:39 AM Ruby Revision 2f88a23a (git): json: Use SSE2 on x86-64 without checking at runtime
- __builtin_cpu_supports refers to __cpu_model in compiler-rt, which clang-cl does not link, so generator.so and parser.so failed with an undefined symbol. SSE2 is part of the x86-64 baseline, as NEON is for AArch64, where no check is made...
-
04:39 AM Ruby Revision d8358a1e (git): mswin: Do not export clang's weak definitions
- clang-cl defines the weak Init_extra_exts as `.weak.Init_extra_exts.default.ruby_prefix_path`, and lib.exe rejects that name in the .def file with LNK1242.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision f0727b31 (git): Win32: Match the thread routine type of _beginthreadex
- _beginthreadex takes a routine returning unsigned, not unsigned long. clang rejects the mismatch as an error.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision 152394e6 (git): Use the Interlocked atomics whenever _MSC_VER is defined
- clang-cl defines _MSC_VER but is not MSVC for RBIMPL_COMPILER_IS, so rbimpl_atomic_or and rbimpl_atomic_cas fell through to "Unsupported platform".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:39 AM Ruby Revision c08678b7 (git): mswin: Preprocess verconf.mk as C source
- clang-cl takes the here-document without an extension as linker input, so verconf.mk came out empty and nmake stopped at "MSC_VER not defined".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:53 AM Ruby Revision c4eadc74 (git): [ruby/rubygems] Rescue the LoadError in the spec for nested bundle exec with monkeypatches
- The spec checks that the Kernel.require monkeypatch is still used, by
comparing the whole stdout. However, the script ended with an uncaught
LoadError for the non-existent "foo", and Ruby lazily loads
error_highlight, did_you_mean, and s... -
03:45 AM Ruby Bug #22436 (Closed): Array#zip with a method_missing-based argument leaks a stale block handler (segfault when the next C-called method yields)
- Applied in changeset commit:git|054385feb134d19b2130238a76004c204f96293b.
----------
Fix ifunc block handler leak from method_missing
[Bug #22436]
The check_funcall_exec function incorrectly restored the pending block
handler which ca... -
03:44 AM Ruby Revision 054385fe (git): Fix ifunc block handler leak from method_missing
- [Bug #22436]
The check_funcall_exec function incorrectly restored the pending block
handler which causes it to leak.
For example, the following code crashes:
o = Object.new
def o.method_missing(*) = nil # Array#zip calls o.e... -
02:37 AM Ruby Revision 2681c8d3 (git): Add NEWS.md entry for Ractor receive timeout [Feature #22255]
- Ractor::Port#receive, Ractor.receive and Ractor.select gained a
`timeout:` keyword argument in d32793fe8e (#18418), and the rdoc of
each method describes it, but NEWS.md has no entry for it.
Co-Authored-By: Claude Fable 5.1 <noreply@ant... -
01:59 AM Ruby Revision 767905ce (git): win32: Port update-vcpkg and install-vcpkg to GNU make
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
01:59 AM Ruby Revision b6197cdc (git): win32: Build YJIT with GNU make too
- Port the YJIT part of Makefile.sub, so that `--with-gnu-make` no longer rejects `--enable-yjit`. The rustc version stamp is a rule here, since GNU make reads its mtime again after the recipe, unlike nmake.
Co-Authored-By: Claude Opus 5.... -
12:20 AM Ruby Revision 2c80a962 (git): [DOC] Harmonize world_readable? methods
-
12:15 AM Ruby Revision b1d30da2 (git): [DOC] Doc for File::Stat#uid
-
12:15 AM Ruby Revision 59db3a3a (git): Join getaddrinfo and getnameinfo threads before fork
- A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread exit takes the resolver configuration lock again
after the thread has released the fork lock. A fork that lands then
leaves the child with t... -
12:14 AM Ruby Revision 96812e0a (git): [DOC] Harmonize file size methods
-
12:12 AM Ruby Revision 08968a9d (git): [DOC] Harmonize file size? methods
-
12:10 AM Ruby Revision d0c8be14 (git): [DOC] Harmonize file size methods
-
12:09 AM Ruby Feature #22441: Add Ractor#alive?
- Matz approved it.
-
12:08 AM Ruby Revision 24e0fe09 (git): [DOC] Doc for File::Stat#rdev* methods
10/14/2026
-
11:41 PM Ruby Feature #22444 (Open): Ractor.new should use Ractor.shareable_proc semantics for the block
- #21557 introduced very well considered rules for `Ractor.shareable_proc`, where locals can be referenced so long as they are shareable and never reassigned. However `Ractor.new { ... }` continues to use a more restrictive rule that no lo...
-
11:23 PM Ruby Bug #22439: Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
- mame (Yusuke Endoh) wrote in #note-3:
> Thank you for the report!
> ...
Thank you for the quick analysis and for splitting the ticket!
Yes, I'm using GCC 16. Both 4.1 builds I reported were compiled locally on Arch Linux:
```
ru... -
07:34 PM Ruby Bug #22439: Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
- Thank you for the report!
I could reproduce the SEGV only with GCC 16 (GCC 13 and 15 did not reproduce it). Are you also using GCC 16 to build Ruby?
This ticket contained two different problems, so I have split it into:
* #22440... -
04:38 PM Ruby Bug #22439 (Closed): Segfault in `Thread::Backtrace::Location#syntax_tree` (via `Exception#detailed_message` / error_highlight) when called from multiple Ractors
- Calling `Exception#detailed_message` concurrently from two or more Ractors crashes the VM with
`[BUG] Segmentation fault` on 4.1.0-preview1 and current master. The same script works on 4.0.6
and 4.0.7.
### Reproduction
No gems ar... -
11:04 PM Ruby Feature #22408 (Closed): Use GNU make instead of nmake for mswin builds
-
11:02 PM Ruby Feature #22408: Use GNU make instead of nmake for mswin builds
- I merged https://github.com/ruby/ruby/pull/19214. Ruby 4.1 keeps nmake, and GNU make is available as an experimental option with `win32\configure.bat --with-gnu-make`. I will consider making GNU make the only option sometime next year.
-
11:00 PM Ruby Revision 3d168b1f (git): win32: Replace the DLL links in prepare-vcpkg with GNU make too
- Follow win32/Makefile.sub, which removes the existing links first. Each link is now a separate command, so a failure stops make.
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:00 PM Ruby Revision d5739e29 (git): Add a Windows CI job built with GNU make
- It builds GNU make with win32/install-gnumake.cmd, configures with `--with-gnu-make` and runs `make check`. The job does not fail the workflow while the GNU make build is experimental.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic... -
11:00 PM Ruby Revision 2bd5b04e (git): Read GNUmakefile when the build directory has no Makefile
- `configure.bat --with-gnu-make` writes only `GNUmakefile`. The tests under `test/mkmf` failed to load with `Errno::ENOENT`, and `spec/default.mspec` lost `srcdir` and ran specs without `tool/runruby.rb`.
Co-Authored-By: Claude Opus 5.5 ... -
11:00 PM Ruby Revision bae2f783 (git): win32: Add an experimental GNU make build
- `configure.bat --with-gnu-make` writes a GNUmakefile that includes win32/GNUmakefile.sub, the GNU make counterpart of Makefile.sub, so that mswin can be built in parallel with `make -j`. configure.bat itself still runs nmake, and YJIT i...
-
11:00 PM Ruby Revision 52a22ca9 (git): win32: Add install-gnumake.cmd
- It builds GNU make from the GNU release with cl.exe, so that mswin developers do not need a third party binary. Only curl, tar and certutil bundled with Windows are used to fetch the source and check its SHA256.
Co-Authored-By: Claude ... -
11:00 PM Ruby Revision 29ffa7a4 (git): mkmf, extmk: Support GNU make on mswin
- Run recipes with cmd.exe instead of /bin/sh, rewrite the nmake-style `$(VAR:/=\)` substitutions, which GNU make applies only to suffixes, and write the note on failed extensions in the form cmd.exe runs.
Co-Authored-By: Claude Opus 5.5 ... -
11:00 PM Ruby Revision 10c4c711 (git): Ignore failures to create timestamp files
- On Windows, parallel jobs creating the same timestamp file, such as the extension builds or `make enc` and `make trans`, fail with a sharing violation while the file exists anyway.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:00 PM Ruby Revision 2b40a197 (git): win32: Let makedirs.bat tolerate concurrent creation
- With parallel make, another job can create the same directory between the existence check and mkdir.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:52 PM Ruby Feature #22443 (Open): Remove multi-line regular expression comments from object inspection
- ## Why
Hello. 👋 Would it be possible to remove multi-line regular expression comments from object inspection? For example, this is nice for readability via the source code:
``` ruby
class Demo
PATTERN = /
(?: ... -
09:51 PM Ruby Revision 3602a8b8 (git): Implement RubyVM::ZJIT.max_compile_time_ns
- [Feature #22236]
Allows to give a time budget to ZJIT. When ZJIT goes over the budget
it pauses compilation until the budget is raised.
It is best effort, ZJIT may go over, or have no choice but to compile
in some cases, but the goal i... -
08:33 PM Ruby Revision e055c053 (git): ZJIT: Fix snapshot merge race
-
07:31 PM Ruby Bug #22442 (Closed): Lazy loading of error_highlight etc. is skipped in threads and Ractors
- #21951 made error_highlight / did_you_mean / syntax_suggest lazily loaded.
When the lazy loading is triggered concurrently from threads or Ractors, the decoration may be skipped.
```ruby
# repro.rb
rs = 2.times.map do
Ractor.new... -
07:08 PM Ruby Feature #22441 (Open): Add Ractor#alive?
- I propose adding `Ractor#alive?` as a non-blocking way to ask whether a Ractor has finished. This matches `Thread#alive?`/`Fiber#alive?`.
```
r = Ractor.new { Ractor.receive }
r.alive? #=> true
r << :done
r.join
r.alive? #=> fals... -
07:05 PM Ruby Bug #22440 (Closed): Referencing an autoload constant from multiple Ractors dumps core
- Referencing an autoload constant from multiple Ractors in parallel may cause a SEGV:
```ruby
# foo.rb
module Foo; end
```
```ruby
# repro.rb
autoload :Foo, "./foo"
p 8.times.map { Ractor.new { Foo } }.map(&:value)
```
```... -
06:36 PM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
- Here is a new proposal based on the feedback.
For reading variable length data, conceptually it's very similar to the existing `IO#readline(sep, limit, chomp: false) → string`, except that the `sep` is not a String, but typically a byte... -
04:40 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
- I understand the need. Reading length-prefixed messages from a stream is common, and doing it efficiently in Ruby is hard today.
But I don't want to bring the whole `unpack` template to IO. As @mame pointed out, `X`, `@` and `*` assum... - 06:01 PM Ruby Revision 90a3551c (git): ZJIT: Forward -L search paths for the test binary (GH-19138)
- So macOS `configure --with-gmp` builds with Homebrew finds libgmp.
[xrxr]: rewrote message; switched to use `option_env!` - 06:00 PM Ruby Revision 81c5830a (git): ZJIT: Inline BasicObject#!= through a JIT hook (#19162)
- Closes: https://github.com/Shopify/ruby/issues/884
Inline `BasicObject#!=` by using a ZJIT hook. This expands specialization coverage to additional cases beyond the existing String and Integer specializations.
Although this might add s... -
05:55 PM Ruby Misc #22417: DevMeeting-2026-11-12
- * [Feature #21539] Export symbols for external profiling of stripped shared Ruby builds (dalehamel)
* Reduced scope from earlier ask: export `ruby_current_ec`, `rb_vm_exec`, and `ruby_global_symbols` from shared libruby so external pr... -
05:50 PM Ruby Feature #21539: Export symbols for external profiling of stripped shared Ruby builds
- Updated the description and subject to reduce the scope of this substantially to just exporting a few symbols
-
02:33 PM Ruby Revision b709bdb3 (git): Update bundled gems for tests
-
02:20 PM Ruby Revision 091399f6 (git): Move prism_compile.h include out of iseq.h
- iseq.h does not reference any of the pm_* types or functions declared in
prism_compile.h, so include the latter from the files that actually use
it instead. Only 6 of the 19 files including iseq.h need the prism
declarations, so this kee... - 01:43 PM Ruby Revision e43b7fe4 (git): Bump ossf/scorecard-action
- Bumps the github-actions group with 1 update in the / directory: [ossf/scorecard-action](https://github.com/ossf/scorecard-action).
Updates `ossf/scorecard-action` from 2.4.4 to 2.5.0
- [Release notes](https://github.com/ossf/scorecard... -
01:12 PM Ruby Bug #22438 (Open): mkmf.rb do not work with /home mounted with noexec
- When trying to install a *vagrant* plugin (here *vagrant-libvirt*), it uses the file **mkmf.rb** (here `/opt/vagrant/embedded/lib/ruby/3.3.0/mkmf.rb`) and this fail with the following error message:
> Vagrant failed to install the reque... -
01:05 PM Ruby Feature #22437 (Open): Speed up creation and basic operations of Struct / Data
- ## Summary
Struct and Data are slower to create and to operate on than a hand-written class that does the same job.
Struct / Data are usually chosen because people expect them to be lightweight value objects, yet once they sit on a h... -
11:01 AM Ruby Bug #22436: Array#zip with a method_missing-based argument leaks a stale block handler (segfault when the next C-called method yields)
- Thank you for the bug report, I have a fix here: https://github.com/ruby/ruby/pull/19337
-
08:18 AM Ruby Bug #22436 (Closed): Array#zip with a method_missing-based argument leaks a stale block handler (segfault when the next C-called method yields)
- The following code:
```rb
o = Object.new
def o.method_missing(*) = nil # Array#zip calls o.each via method_missing
out = Object.new
def out.write(*) = nil
def out.puts(*) = yield # receives a block it was never given
... -
09:25 AM Ruby Bug #22427 (Closed): `--enable=zjit` does not enable ZJIT
- Applied in changeset commit:git|d71692d49f30e60296bd57c932eb8877e83c3b4d.
----------
ZJIT: prepare options whenever the zjit feature is enabled
--enable=zjit sets the zjit feature bit without parsing a --zjit option,
so OPTIONS is neve... -
09:25 AM Ruby Revision d71692d4 (git): ZJIT: prepare options whenever the zjit feature is enabled
- --enable=zjit sets the zjit feature bit without parsing a --zjit option,
so OPTIONS is never initialized and rb_zjit_option_enable() returns
false.
ZJIT then stays disabled at boot. The same happens with --enable-zjit
and RUBYOPT=--enab... -
08:46 AM Ruby Bug #22406 (Closed): Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- Applied in changeset commit:git|44f7c6b00d3263c9c81af58e77eeb79eaec7bd0e.
----------
Join getaddrinfo and getnameinfo threads before fork
A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread ... -
08:46 AM Ruby Revision 44f7c6b0 (git): Join getaddrinfo and getnameinfo threads before fork
- A getaddrinfo thread calls getaddrinfo(3) inside rb_thread_prevent_fork,
but on glibc its thread exit takes the resolver configuration lock again
after the thread has released the fork lock. A fork that lands then
leaves the child with t... -
07:21 AM Ruby Revision d037ba85 (git): [ruby/mmtk] Update mmtk-core and add non_moving_root feature
- A recent update in mmtk-core put non-moving roots behind a cargo feature
"non_moving_root". CRuby has been using non-moving roots for
conservative stack scanning. We explicitly enable this feature in
Cargo.toml.
https://github.com/ruby... - 07:03 AM Ruby Revision 86776714 (git): [DOC] Update bundled gems list at daa307aa875fd969dd9a20c82c6fbc
-
06:24 AM Ruby Bug #18782: Race conditions in autoload when loading the same feature with multiple threads.
- The global autoload mutex introduced for this issue causes "deadlock; recursive locking" and [BUG] under a Fiber scheduler. See [Bug #22435].
I think this issue can be fixed without the global mutex by swapping the order of the checks... -
05:56 AM Ruby Bug #22435 (Assigned): Autoload under a Fiber scheduler causes a deadlock or [BUG]
- The following code causes a deadlock. test/fiber/scheduler.rb is the one in the ruby/ruby repository (https://github.com/ruby/ruby/blob/master/test/fiber/scheduler.rb).
```ruby
# fs-autoload-deadlock.rb
require_relative "test/fiber/... -
05:46 AM Ruby Revision daa307aa (git): [ruby/resolv] Bind the random UDP source port exclusively on Windows
- TestResolvDNS#test_query_ipv4_address occasionally fails on Windows CI:
1) Failure:
TestResolvDNS#test_query_ipv4_address [C:/a/ruby/ruby/src/test/resolv/test_dns.rb:236]:
<1> expected but was
<0>.
On Windows, Resolv picks a ra... -
03:58 AM Ruby Revision 6095c59c (git): [ruby/net-http] Stop loading resolv from net/http
- Net::HTTP required the whole DNS resolver, which also reads the system DNS configuration at load time, only to match Resolv::IPv4::Regex and Resolv::IPv6::Regex when deciding whether to send SNI. Use the same inlined regexps as the copy ...
-
03:53 AM Ruby Revision dc420ed4 (git): fetch-bundled_gems.rb: Retry git clone and fetch
- A single failed connection to github.com aborted the whole build. The candidate tags are retried as a group, so a missing `v` prefixed tag still falls back without waiting.
https://github.com/ruby/ruby/actions/runs/37669701848/job/11296... -
03:53 AM Ruby Revision 332fcb9e (git): Increase the timeout of test_ractor_lazy_load_encoding_concurrently
- Loading every autoload encoding from 7 Ractors exceeded the default 10 seconds on a loaded Windows runner. The same test in test_transcode.rb already uses 60 seconds.
https://github.com/ruby/ruby/actions/runs/37358791174/job/11192929510... -
02:54 AM Ruby Revision 1bf91309 (git): Fix Range#include? of an empty range of single characters
- A range of single character Strings told that it includes its end
even when it is empty, since the end was not compared with the begin.
("z".."a").to_a #=> []
("z".."a").include?("a") #=> true -
02:20 AM Ruby Revision 186aa9af (git): [DOC] Harmonize setuid? methods
-
02:19 AM Ruby Revision ba051302 (git): [DOC] Harmonize setgit? methods
-
02:18 AM Ruby Revision f49adab2 (git): [DOC] Harmonize readable_real? methods
-
02:15 AM Ruby Revision a827b6af (git): [DOC] Harmonize pipe? methods
-
02:14 AM Ruby Revision 8bc1b731 (git): [DOC] Harmonize owned? methods
-
02:10 AM Ruby Revision 5f1806fc (git): [DOC] Doc for File::Stat#nlink
-
02:09 AM Ruby Revision 6e55b106 (git): [DOC] Harmonize mtime methods
-
01:02 AM Ruby Bug #22420 (Closed): `require "strscan"` no longer activates the default gem, so a newer installed strscan is ignored and later loaded twice
- Applied in changeset commit:git|2cdfc0d20e5f56b5b45178c172d78d95700666e1.
----------
[Bug #22420] Prefix `lib/` only to collected files of default gems
The files collected for a default gem are relative to its lib
directory, while the ... -
01:02 AM Ruby Revision 6b32bb45 (git): Evaluate gemspecs in a binding without local variables
- Gemspecs can assign local variables such as `files`, `file` and
`base`, which overwrote the ones of `load_gemspec`. For instance,
ipaddr.gemspec and net-http.gemspec assign `file`, and `loaded_from`
of their specs pointed to their Ruby ... -
01:02 AM Ruby Revision 2cdfc0d2 (git): [Bug #22420] Prefix `lib/` only to collected files of default gems
- The files collected for a default gem are relative to its lib
directory, while the files listed by the gemspec itself are relative
to the gem root. `load_gemspec` prefixed `lib/` to any `.rb` entry
missing from the current directory, so ... -
12:30 AM Ruby Revision 01ac07e5 (git): [ruby/un] Fix mkmf -v being shadowed by the common -v option
- The common -v (verbose) was defined after each command's own options and replaced mkmf's `-v ARGS`, so have_var never ran and the argument was passed to create_makefile as the target name. wait_writable's own `v` was dead for the same re...
-
12:29 AM Ruby Revision 8c823c61 (git): Comment the record of writable JIT ranges on Windows
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
12:29 AM Ruby Revision 198b42b7 (git): Re-protect only the JIT code made writable on Windows
- The JITs pass the whole mapped region to rb_jit_mark_executable() after every write session, and VirtualProtect(), unlike mprotect(), takes time for every page in it even when the protection does not change. Record the ranges rb_jit_mark...
-
12:28 AM Ruby Revision 0511c698 (git): [ruby/un] Fix --help of each command on Ruby 3.4 and later
- Since Ruby 3.4, Thread::Backtrace::Location#label includes the class name such as "Object#mkdir", so UN.help found no matching command and printed nothing. base_label is the bare method name on every version.
https://bugs.ruby-lang.org/... -
12:26 AM Ruby Revision 2de8f78d (git): [ruby/find] Require Ruby 2.5 or later
- Find.find calls Dir.children, which was added in Ruby 2.5, so on 2.4 it raises NoMethodError as soon as it descends into a directory.
https://github.com/ruby/find/commit/3371fd707c
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:02 AM Ruby Revision f6963df7 (git): Remove code checking for uninitialized class
-
12:02 AM Ruby Revision 0adee861 (git): Prevent uninitialized classes from being allocated
10/13/2026
- 11:13 PM Ruby Revision f4f2dfb3 (git): Defer unloading box-local extension DLLs on Windows
- box_entry_free could run before other T_DATA objects are finalized in
rb_objspace_call_finalizer, and FreeLibrary there unmapped the
rb_data_type_t and dfree functions that later finalization still
dereferences, crashing any boxed proces... -
10:39 PM Ruby Revision 540eaae3 (git): Emit NoEPEscape patch point after every non-leaf instruction
- `local_inval` was inherited only from the first-visited predecessor, so a
merge point after `eval` in one branch could read a stale local. Patch
right after each non-leaf instruction and drop `local_inval` and its
dataflow. -
10:39 PM Ruby Revision f568167f (git): ZJIT: Fix stale local read at merge point after eval in one branch
- `local_inval` was inherited only from the first-visited predecessor, so a
merge point after `eval` or `binding.local_variable_set` on one branch
could read a stale local. Pre-compute jump targets reachable from an
invalidating instructio... -
10:24 PM Ruby Revision 523d4fa5 (git): [ruby/prism] Just abort on OOM for lex mode
- https://github.com/ruby/prism/commit/7f276e542c
-
10:23 PM Ruby Revision 6d167eb4 (git): [ruby/prism] Guard heredoc terminator checking by length
- https://github.com/ruby/prism/commit/9c9474fdcd
-
10:23 PM Ruby Revision 2f4c707a (git): [ruby/prism] Remove underscores from floats in one pass
- https://github.com/ruby/prism/commit/6a44a3698d
-
10:17 PM Ruby Revision 56e8d2dd (git): [ruby/prism] Invalid range check in EUC-JP
- https://github.com/ruby/prism/commit/b81d200453
-
09:54 PM Ruby Revision 12217a2f (git): [ruby/un] Refactor mkmf with safe navigation operator and split with block
- With safe navigation operator (Ruby 2.3) and split with block (Ruby 2.6) it is possible to avoid the intermediate variable ``opt``and array created by split, resulting in a more compact and clear code for the mkmf method.
https://github... -
09:54 PM Ruby Revision 70061f0e (git): [ruby/un] Bump required Ruby version to 2.6.0
- https://github.com/ruby/un/commit/c2b6ffd2dc
-
09:13 PM Ruby Bug #22434 (Open): "No live threads left. Deadlock?" when running system() or spawn in Ractors
- Non-main Ractors don't support `fork()`, but do support `system()` and `spawn()`. They can end up deadlocked inside the prefork method when trying to flush stdio.
```
$stdout = File.open(File::NULL, "w")
writer = Thread.new { loop {... -
08:59 PM Ruby Bug #22426 (Closed): ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
- Applied in changeset commit:git|df0d7a87b664c01e303f9a8ded612399ee317299.
----------
[Backport #22426] ZJIT: Snapshot FrameState with reordered args before direct send
You can see the reordered args in the new Snapshot right before the... -
05:47 PM Ruby Bug #22426: ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
- Backport PR https://github.com/ruby/ruby/pull/19322
-
11:02 AM Ruby Bug #22426: ZJIT: keyword arguments swapped when passed out of declared order to a method with a block (please backport d81a11d4e6 to 4.0)
- For reference: the fix (d81a11d4e6) is included in 4.1.0-preview1. Related discussion: https://github.com/ruby/ruby/pull/15827
-
08:59 PM Ruby Revision df0d7a87 (git): [Backport #22426] ZJIT: Snapshot FrameState with reordered args before direct send
- You can see the reordered args in the new Snapshot right before the
DirectSend insn:
v14:Any = Snapshot FrameState { pc: 0x00, stack: [v6, v11, v13], locals: [] }
PatchPoint MethodRedefined(Object@0x00, a@0x00, cme:0x00)
... -
08:14 PM Ruby Revision 67abedae (git): [ruby/prism] Use File::path for FFI
- https://github.com/ruby/prism/commit/bdf15c7566
-
07:36 PM Ruby Bug #22406: Process.fork can leave the child unable to resolve hostnames: getaddrinfo helper threads take glibc's resolver lock after releasing the fork lock
- Hi @mame, could I trouble you for a review of [PR#19242](https://github.com/ruby/ruby/pull/19242) ? @byroot has requested your input. 🙇♂️
-
07:21 PM Ruby Revision fa8df43b (git): test/ruby/test_process.rb: simplify testing spawn with long strings
- test_aspawn_too_long_path just wants to verify that passing a very long
string to spawn does not cause a crash. Use an input string that is long
enough for this purpose and does not ends up with spawning too many
processes.
This change ... -
07:17 PM Ruby Revision a4ccceac (git): [ruby/prism] Make code examples explicitly ruby for rdoc
- Because of the `^^^` hints, it's not valid ruby and so rdoc
gives it no syntax highlighting.
We can convince it otherwise and syntax-highlight syntax-invalid code.
Although it is syntax-invalid, the results look very good.
https://gith... - 07:01 PM Ruby Revision 817e940d (git): Change ISEQ_BODY(iseq)->location.pathobj to be a String instead of Array
- Any iseq created inside an eval, class_eval or module_eval had its
`location.pathobj` set to an Array of 2 elements where the 2nd element was
`nil`. This is wasteful in terms of memory and also causes longer major GC
times. This was true... -
06:13 PM Ruby Revision 1b19b75b (git): [ruby/prism] Default to nearest instead of latest
- https://github.com/ruby/prism/commit/b2cb61deb0
-
06:08 PM Ruby Bug #22424: IO#readpartial and IO#sysread should respect IO#timeout= value
- I've opened a GitHub PR: https://github.com/ruby/ruby/pull/19292
-
06:07 PM Ruby Bug #22433: IO#sysread and IO#pread are inconsistent for length 0 and negative numbers
- I've opened a GitHub PR: https://github.com/ruby/ruby/pull/19323
-
06:01 PM Ruby Bug #22433 (Open): IO#sysread and IO#pread are inconsistent for length 0 and negative numbers
- When the length is 0 and an output buffer is given, the buffer is not cleared correctly. [Bug #18421] fixed the same bug for `IO#readpartial` and `IO#read_nonblock`, but it omitted `IO#sysread` and `IO#pread`:
```ruby
File.open("/d... -
05:48 PM Ruby Revision 7dab2293 (git): [ruby/prism] Put a depth check in parse_pattern
- https://github.com/ruby/prism/commit/fb2fea4cb2
-
05:48 PM Ruby Revision 68e7541c (git): [ruby/prism] Extract out parse_aref
- https://github.com/ruby/prism/commit/aa0ebe032a
-
05:48 PM Ruby Revision 6227730b (git): [ruby/prism] Extract parse_call
- https://github.com/ruby/prism/commit/de9a651018
-
05:48 PM Ruby Revision 1c7dba3d (git): [ruby/prism] Extract parse_equal
- https://github.com/ruby/prism/commit/cad38e9ce5
-
05:48 PM Ruby Revision d3d04c19 (git): [ruby/prism] Extract parse_*_equal
- https://github.com/ruby/prism/commit/3ea17ccfec
-
05:48 PM Ruby Revision 0ed4ee66 (git): [ruby/prism] Extract out parse_match
- https://github.com/ruby/prism/commit/c1964c8a20
-
05:48 PM Ruby Revision e7f6ab0e (git): [ruby/prism] Extract out parse_constant_path_infix
- https://github.com/ruby/prism/commit/a10b3dde7a
-
05:48 PM Ruby Revision 75d34646 (git): [ruby/prism] Extract out parse_ternary
- https://github.com/ruby/prism/commit/534b370fff
-
05:48 PM Ruby Revision 559dd240 (git): [ruby/prism] Extract out parse_array_keyword_hash
- https://github.com/ruby/prism/commit/28ea3c6505
-
05:48 PM Ruby Revision f4a1b92a (git): [ruby/prism] Rename for ensure_valid_* functions
- https://github.com/ruby/prism/commit/165189f969
-
05:48 PM Ruby Revision 72bca587 (git): [ruby/prism] Extract out parse_multi_target
- https://github.com/ruby/prism/commit/18f579ed31
-
05:48 PM Ruby Revision bb42b9a7 (git): [ruby/prism] Extract out parse_constant_path
- https://github.com/ruby/prism/commit/b3b27e8000
-
05:48 PM Ruby Revision 1a198d3c (git): [ruby/prism] Extract out parse_unary_star
- https://github.com/ruby/prism/commit/3ca14b6f3b
-
05:48 PM Ruby Revision 6a6d7ace (git): [ruby/prism] Extract parse_bang and parse_tilde
- https://github.com/ruby/prism/commit/046f9a1df8
-
05:47 PM Ruby Revision 9a17b30f (git): [ruby/prism] Extract out parse_range
- https://github.com/ruby/prism/commit/b24fc8dca3
-
05:47 PM Ruby Revision d923df2b (git): [ruby/prism] Make parse_symbol own its lex mode extraction
- https://github.com/ruby/prism/commit/e86036d1e4
-
05:47 PM Ruby Revision a8d4b0db (git): [ruby/prism] Extract out parse_unary_minus_number
- https://github.com/ruby/prism/commit/212e446966
-
05:47 PM Ruby Revision 1be355b9 (git): [ruby/prism] Extract out parse_super
- https://github.com/ruby/prism/commit/72298a210e
-
05:47 PM Ruby Revision 8eb7292e (git): [ruby/prism] Extract out parse_unary_minus
- https://github.com/ruby/prism/commit/3eddf3a81c
-
05:47 PM Ruby Revision 345c6f21 (git): [ruby/prism] Extract out parse_unary_plus
- https://github.com/ruby/prism/commit/7b781b1fa3
-
05:47 PM Ruby Revision 021b6231 (git): [ruby/prism] Extract out parse_constant
- https://github.com/ruby/prism/commit/8ca3a19720
-
05:47 PM Ruby Revision e1414377 (git): [ruby/prism] Extract out parse_char
- https://github.com/ruby/prism/commit/03a8d1c601
-
05:47 PM Ruby Revision 0c61f223 (git): [ruby/prism] Extract out parse_yield
- https://github.com/ruby/prism/commit/091a6f54af
-
05:47 PM Ruby Revision 5d52c6f8 (git): [ruby/prism] Extract out parse_undef
- https://github.com/ruby/prism/commit/98d7c2200b
-
05:47 PM Ruby Revision 0cae2de0 (git): [ruby/prism] Extract parse_preexe and parse_postexe
- https://github.com/ruby/prism/commit/b0441606bc
-
05:47 PM Ruby Revision 1603c441 (git): [ruby/prism] Extract out parse_not
- https://github.com/ruby/prism/commit/d64604bfde
-
05:47 PM Ruby Revision f283106e (git): [ruby/prism] Extract out parse_jump
- https://github.com/ruby/prism/commit/99429ad268
-
05:47 PM Ruby Revision 3de3f7e6 (git): [ruby/prism] Extract out parse_uninterpolated_symbol_array
- https://github.com/ruby/prism/commit/9d329d8ab3
-
05:47 PM Ruby Revision 404cefa4 (git): [ruby/prism] Extract out parse_uninterpolated_string_array
- https://github.com/ruby/prism/commit/6b0efe46a2
-
05:47 PM Ruby Revision 41f81420 (git): [ruby/prism] Extract out parse_identifier
- https://github.com/ruby/prism/commit/8c22837931
-
05:47 PM Ruby Revision 6cc44439 (git): [ruby/prism] Extract out parse_xstring
- https://github.com/ruby/prism/commit/325c68c925
-
05:47 PM Ruby Revision d03b0d92 (git): [ruby/prism] Extract parse_while and parse_until
- https://github.com/ruby/prism/commit/a511aa0d02
-
05:47 PM Ruby Revision a7f2aa5e (git): [ruby/prism] Extract out parse_alias
- https://github.com/ruby/prism/commit/6e414dbafc
-
05:47 PM Ruby Revision 55fb2890 (git): [ruby/prism] Extract out parse_regexp
- https://github.com/ruby/prism/commit/b080d2c0fe
-
05:47 PM Ruby Revision 13a5abf3 (git): [ruby/prism] Extract out parse_lambda
- https://github.com/ruby/prism/commit/99f1757da0
-
05:47 PM Ruby Revision 9bb259e0 (git): [ruby/prism] Extract out parse_for
- https://github.com/ruby/prism/commit/e539d7c47c
-
05:47 PM Ruby Revision faa781f7 (git): [ruby/prism] Extract out parse_defined
- https://github.com/ruby/prism/commit/9e2058cfc1
-
05:47 PM Ruby Revision 8e4d6018 (git): [ruby/prism] Extract out parse_begin
- https://github.com/ruby/prism/commit/3c0c3700a5
-
05:47 PM Ruby Revision e8baec45 (git): [ruby/prism] Extract out parse_heredoc
- https://github.com/ruby/prism/commit/0654f2180d
-
05:47 PM Ruby Revision 0a2f024c (git): [ruby/prism] Extract out parse_hash
- https://github.com/ruby/prism/commit/933e806333
-
05:47 PM Ruby Revision 104e0ca8 (git): [ruby/prism] Extract out parse_array
- https://github.com/ruby/prism/commit/b478f9edd4
-
05:12 PM Ruby Revision 976b89be (git): [ruby/prism] Do not report regexp errors twice with captures
- When named captures were present we would reprocess the regexp and
accidentally report errors twice.
https://github.com/ruby/prism/commit/e2e11ad07f -
04:53 PM Ruby Bug #22305 (Closed): Ruby::Box: statically linked prism loads in only one box
- Applied in changeset commit:git|dfbcdda93952f7ed18131a14e1010d403e7f5c02.
----------
Set autoloaded constants in the box that registered the autoload
The constants of an autoload were set in the box that triggered it. For
an autoload ... -
04:53 PM Ruby Revision 1907cd84 (git): Explain why not to require "ruby/prism" explicitly
- With Ruby::Box, requiring "ruby/prism" explicitly in a user box loads it
in that box. As its C extension is statically linked and can be
initialized only once in the process, the other boxes then fail to load
it. Fixing this is not eas... -
04:53 PM Ruby Revision 0cb32950 (git): Assert that a constant entry of Qundef holds an autoload
- A constant entry whose value is Qundef always holds the autoload
registration, so check its type only by VM_ASSERT instead of handling
other cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:53 PM Ruby Revision cb08906b (git): Explain how other boxes get the autoloaded constant
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
04:53 PM Ruby Revision 8b630aad (git): Update variable.c
- Co-authored-by: Jeremy Evans <code@jeremyevans.net>
-
04:53 PM Ruby Revision bac98d14 (git): Document not to require "ruby/prism" explicitly
- Ruby::Prism is autoloaded when it is first referenced.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:53 PM Ruby Revision dbd0e017 (git): Rename autoload_data() to autoload_entry()
- It returns an autoload_const, not an autoload_data.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:53 PM Ruby Revision 6d68304c (git): Keep autoload registrations in the constant entries
- An autoload registration has been kept in a per-module table under the
hidden instance variable __autoload__, in addition to the Qundef entry
in the constant table. With Ruby::Box, the constant table of a class is
copied entry by entry ... -
04:53 PM Ruby Revision dfbcdda9 (git): Set autoloaded constants in the box that registered the autoload
- The constants of an autoload were set in the box that triggered it. For
an autoload registered in the master box (e.g., Ruby::Prism), this
defined the constant only in the first box that accessed it, and the
other boxes got NameError.
... -
04:29 PM Ruby Revision 09d278a9 (git): [ruby/openssl] ssl: run test_pair.rb tests against IO objects
- Run assertions in test_pair.rb against a pair of real socket objects
to catch unintended differences between SSLSocket and core IO behavior.
This is skipped for TruffleRuby until I figure out what's wrong.
https://github.com/ruby/opens... -
04:29 PM Ruby Revision 1ec5306d (git): [ruby/openssl] ssl: align #putc with IO
- Add the method. OpenSSL::Buffering already supports other
character-oriented methods such as #getc, #ungetc, or #readchar, and
this is the only missing method.
https://github.com/ruby/openssl/commit/df0fde6b4c -
04:29 PM Ruby Revision 15467f68 (git): [ruby/openssl] ssl: align #puts with IO
- Handle nested arrays in the arguments, similar to how IO#puts behaves.
https://github.com/ruby/openssl/commit/d87ebfe0a1 -
04:29 PM Ruby Revision 497f987c (git): [ruby/openssl] ssl: align #syswrite and #syswrite_nonblock with IO
- IO#syswrite converts the argument with #to_s rather than #to_str.
https://github.com/ruby/openssl/commit/25a57af17f -
04:29 PM Ruby Revision ce8da0cf (git): [ruby/openssl] ssl: align #write and #<< with IO
- IO#write and IO#<< convert the arguments to String with #to_s. RDoc
comments for OpenSSL::Buffering#write also stated this, but they do not
actually convert. Fix this.
OpenSSL::Buffering#puts and #print already correctly call #to_s.
ht... -
04:29 PM Ruby Revision f4a0d53e (git): [ruby/openssl] ssl: align line-oriented methods with IO
- Rewrite OpenSSL::Buffering#gets to handle parameters as closely to core
IO as possible. This includes changes:
- Add support for gets(limit), where the rs parameter is omitted.
- Add support for gets(nil, limit) (slurp mode).
- Ad... -
04:29 PM Ruby Revision 6c87bfb2 (git): [ruby/openssl] ssl: align #each_byte and #each_char with IO
- Let OpenSSL::Buffering#each_byte return an Enumerator if called without
a block.
Also add the #each_char variant.
https://github.com/ruby/openssl/commit/0c6e84e8a1 -
04:29 PM Ruby Revision 6750e8f0 (git): [ruby/openssl] ssl: align #ungetc and #ungetbyte with IO
- Passing a String to #ungetc should use the entire content, not just the
first character.
Also add OpenSSL::Buffering#ungetbyte for symmetry with IO#ungetbyte
which was added in Ruby 1.9.
https://github.com/ruby/openssl/commit/9a6d40138d -
04:29 PM Ruby Revision ee5f5921 (git): [ruby/openssl] ssl: return mutable empty String
- OpenSSL::SSLSocket#read, #read_nonblock, and #readpartial should return
a mutable String instead of literal "". This fixes a regression
introduced in v2.2.0 that added the frozen_string_literal magic comment
to this file.
https://github... -
04:29 PM Ruby Revision fc929c89 (git): [ruby/openssl] ssl: avoid subclassing String
- Remove the internal Buffer class and instead use refinements to define
String#append_as_bytes when necessary.
This also fixes a few OpenSSL::Buffering methods leaking the internal
Buffer class through String#slice! on Ruby < 3.0.
https... -
03:41 PM Ruby Revision 34cc07df (git): [ruby/openssl] ssl: do not rescue Errno::EAGAIN
- SSLSocket#sysread and #syswrite never raise Errno::EAGAIN.
It appears to me that commit https://github.com/ruby/ruby/commit/a9fb0817a154 (should wait for
that the underlying IO become readable or writable if the error was
SSL_ERROR_WANT... -
02:34 PM Ruby Bug #22419: [BUG] "rb_objspace_reachable_objects_from_local: set is owned by another Ractor" when a non-main Ractor reads a class instance variable since f0439cdfa7
- Thanks for the report. We're working on fixing this and I've created a [PR](https://github.com/ruby/ruby/pull/19283) for it. We've realized that the way Ractor shareability is checked when the object is not shareable but frozen is curren...
-
02:09 PM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
- @eightbitraptor: Thanks. I previously submitted a nearly identical fix for this in https://github.com/ruby/ruby/pull/19313. CI is already green there.
-
02:01 PM Ruby Bug #22432: Range#include? returns true for the end of an empty range of single-character Strings
- Thanks for the report. Addressed in https://github.com/ruby/ruby/pull/19317
-
02:09 AM Ruby Bug #22432 (Open): Range#include? returns true for the end of an empty range of single-character Strings
- A Range whose ends are both single ASCII characters reports that it includes its end even when the range is empty.
```ruby
r = "z".."a"
r.to_a #=> []
r.include?("a") #=> true
r.member?("a") #=> true
r.cover?("a") #=> ... -
01:44 PM Ruby Revision c31e1506 (git): tool/run-lcov.rb: Exclude bundled gems from coverage aggregation
- Since a1efb9ae6b (Promote prism to a bundled gem), the prism extension
is also built with gcov under .bundle/gems/prism-1.9.0/ext/prism. Its
generated node.c carries `#line` directives pointing at
"prism/templates/src/node.c.erb", a path... -
11:27 AM Ruby Revision 47dddf78 (git): [ruby/mmtk] Directly call functions in C binding
- This commit removes RubyUpcalls and instead directly calls functions in
the C binding from Rust. This also allows LTO to inline C calls from Rust.
https://github.com/ruby/mmtk/commit/0f5a049a2d -
09:42 AM Ruby Revision 76268ed6 (git): io.c: refactor io_getpartial()
- io_getpartial() and io_read_nonblock() are now almost identical.
-
09:42 AM Ruby Revision 62d2c391 (git): io.c: ignore failure to set O_NONBLOCK in ARGF.read_nonblock
- Commit 1bafa4a59b29 (Ignore failure to set nonblock mode. (#6524),
2022-10-11) changed IO#read_nonblock to work with files on Windows, but
did not make the same change to ARGF.read_nonblock. Do so for ARGF as
well.
Also update the outda... -
09:39 AM Ruby Revision b10b8048 (git): io_buffer.c: use rb_off_t consistently
- Fix an rb_off_t value being implicitly converted to off_t and then back
to rb_off_t. -
09:29 AM Ruby Revision 9d123b1e (git): Saturate parser columns at INT_MAX
- Token columns are int, so a token past column INT_MAX got a negative column, and the excerpt shown for a syntax error there was read from before the line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:29 AM Ruby Revision e5e36b4e (git): Range-check parser columns with rb_len2int
- rb_long2int is a plain cast where int and long have the same width, so on 64-bit mswin a column past INT_MAX wrapped instead of raising RangeError as it does on LP64.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:29 AM Ruby Revision c68782a2 (git): Hold heredoc offsets in rb_len_t
- Where rb_len_t is wider than long, a heredoc opener past column LONG_MAX made the long offset negative, and the identifier and the restored lexer position were read from before the line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropi... -
09:29 AM Ruby Revision 4f42bb94 (git): Hold parser string lengths in rb_len_t
- rb_parser_string_t kept its length in a long, so rb_str_to_parser_string had to reject a String longer than LONG_MAX where rb_len_t is wider than long. Now the parser string holds the whole length and the check is gone.
Co-Authored-By: ... - 08:05 AM Ruby Revision 2722027e (git): Update default gems list at 53e7d061f90ae80236e7a917b924ea [ci skip]
-
08:04 AM Ruby Revision 53e7d061 (git): [ruby/json] Release 3.1.0
- https://github.com/ruby/json/commit/a15b2ba603
-
07:32 AM Ruby Revision 72afd0b0 (git): [ruby/json] Refactor `rfc8785_sort_keys_proc`
- https://github.com/ruby/json/commit/d09e383d19
- 07:09 AM Ruby Revision ee0f83a7 (git): Update bundled gems list as of 2026-10-13
-
06:29 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
- The current `String#unpack` has its signature as:
```
String#unpack(template, offset: 0, &block)
```
The concern for unbounded IO read can be potentially solved by having a `maxlen` option:
```
IO#unpack(template, maxlen = n... -
03:14 AM Ruby Feature #22431: Add `IO#unpack` and `IO#unpack1`
- I understand the motivation and have wanted this myself, but there seem to be many things to consider. `unpack` has specifiers like `X` and `@` that do not fit streams. We would also need to decide how to handle specifiers with unbounded...
-
04:14 AM Ruby Revision 83fdd0da (git): [ruby/mmtk] Build with LTO when able
- https://github.com/ruby/mmtk/commit/2dbb8005aa
-
12:46 AM Ruby Revision f81c2121 (git): Index the regexp match cache by OnigPosition
- The match cache index, the fail count and the threshold to enable the cache grow with the string length times the number of cache points, but were long, which is 32-bit on mswin. There the following raised RegexpError (failed to allocate...
-
12:46 AM Ruby Revision c5c692c8 (git): Traverse shareable Arrays by rb_len_t
- RARRAY_LENINT raises RangeError for an Array longer than INT_MAX. Ractor.make_shareable failed on one after freezing it, and so did Ractor.shareable? and Ractor.make_shareable(copy: true).
Co-Authored-By: Claude Opus 5.5 <noreply@anthro... -
12:46 AM Ruby Revision cb86c6d7 (git): Count the Array#product positions in rb_len_t
- An int counter overflows once an array has more than INT_MAX elements. On LP64, product with a block then yielded the element at index 1 after the one at INT_MAX, instead of the one at 2**31.
Co-Authored-By: Claude Opus 5.5 <noreply@ant... -
12:27 AM Ruby Revision c83f90c6 (git): [ruby/zlib] Return the full input length from Zlib::ZStream#avail_in
- The int cast turned a remainder longer than INT_MAX into a wrong or negative number.
https://github.com/ruby/zlib/commit/d23d925f67
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10/12/2026
-
10:43 PM Ruby Feature #22431 (Open): Add `IO#unpack` and `IO#unpack1`
- I would like to have ruby add `IO#unpack` and `IO#unpack1` that effectively does both `IO#read(...)` and `String#unpacking(...)` in one call.
This can significantly improve the performance of consuming data in a variable-length encodi... -
08:40 PM Ruby Revision 55e03ec0 (git): [ruby/prism] Fix buffer length append check 0
- https://github.com/ruby/prism/commit/812fd04263
-
05:01 PM Ruby Revision 98fd04f7 (git): [ruby/prism] attach_comments
- Revisit how we attach comments, allowing consumers to do it in C.
https://github.com/ruby/prism/commit/eb3528e580 -
03:11 PM Ruby Revision 31ace4fd (git): [ruby/prism] Use SSE2, not SSSE3
- Pre-compilation could potentially enable SSSE3, when the target
the code is being installed on might not actually have it. In
order to use more modern instruction sets, we need runtime
detection. It's simpler just to rely on the baseline... -
02:55 PM Ruby Revision ad29ad7a (git): [ruby/json] Handle invalid encoding in JSON path keys
- https://github.com/ruby/json/commit/e19f7d75a6
-
02:28 PM Ruby Revision 86f192cf (git): [ruby/json] parser.c: only update the stack once fully spilled
- https://github.com/ruby/json/commit/78d6a83a3c
-
02:22 PM Ruby Revision c5597ac4 (git): [ruby/json] Fix parsing of number with out of range negative exponents
- https://github.com/ruby/json/commit/6ea62016fb
-
01:57 PM Ruby Revision 817023b8 (git): [ruby/json] Fix parsing of unescaped NULL bytes in strings
- https://github.com/ruby/json/commit/1b67eb3db2
-
01:51 PM Ruby Revision 90e7ab3a (git): [ruby/json] ResumableParser: fix handling of incomplete unicode escape
- `spe` is the string end, so if the escape is incomplete, it doesn't
mean we reached the end of stream, hence it's a syntax error, not
an EOS error.
https://github.com/ruby/json/commit/c1a4372837 -
01:40 PM Ruby Bug #22427: `--enable=zjit` does not enable ZJIT
- Thanks, Proposed fix in https://github.com/ruby/ruby/pull/19307
-
04:59 AM Ruby Bug #22427 (Closed): `--enable=zjit` does not enable ZJIT
- `ruby --help` lists `zjit` under "Features" (`zjit Method-based JIT compiler (default: disabled).`), but `--enable=zjit` alone does not enable ZJIT, while `--enable=yjit` does enable YJIT.
```
$ ruby -v
ruby 4.0.7 (2026-09-15 revis... -
12:34 PM
Ruby
Feature #13677 (Closed): Add more details to error "Name or service not known (SocketError)"
- Applied in changeset commit:git|36f2a8e807a44dc3761e023498887f92a12e7735.
----------
[Feature #13677] Add host to addrinfo resolution errors
hostname is added as a suffix to getaddrinfo error messages. for
example, a "name or service n... - 12:33 PM Ruby Revision 36f2a8e8 (git): [Feature #13677] Add host to addrinfo resolution errors
- hostname is added as a suffix to getaddrinfo error messages. for
example, a "name or service not known" error message becomes "name or
service not known for `invalidthost.com`. -
11:39 AM Ruby Revision bb12f054 (git): [ruby/prism] Initialize `filepath` option to the empty string
- Same as `current_string`, set it to be empty.
Similarly, when populating user-provided options, we need to check the lengh, same as for `encoding`.
Closes https://github.com/ruby/prism/issues/4249
https://github.com/ruby/prism/commit/c... -
09:45 AM Ruby Revision 9e8bf735 (git): [ruby/mmtk] Resize objects to optimal size when moving
- https://github.com/ruby/mmtk/commit/6d83b67d9a
-
09:35 AM Ruby Bug #22430 (Open): regex counted group with a zero-width iteration misses a match
- repro:
```ruby
/\A(?:a|^){2}\z/.match?("a") # true
/\A(?:a|^){2,3}\z/.match?("a") # false
/\A(?:\B|a){3}\z/.match?("aa") # false
/\A(?:^a*){2,3}\z/.match?("a") # false
```
Perl and Python return true for all four. Possib... -
09:33 AM Ruby Bug #22429 (Open): regex empty capture group in a counted loop prevents a match
- repro:
```ruby
/\A(?:(){1,2}?a)+\z/.match?("aa") # false
/\A(?:(?:){1,2}?a)+\z/.match?("aa") # true
/\A(?:(){1,2}a)+\z/.match?("aa") # true
```
An empty capture `()` behaves differently from `(?:)`. Perl, Python and Onig... -
09:10 AM Ruby Revision a125858d (git): [ruby/digest] Limit the hexencode and bubblebabble results by RB_LEN_MAX
- The result is a String, whose length can exceed LONG_MAX on mswin.
https://github.com/ruby/digest/commit/de4c1f26d7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:55 AM Ruby Revision 26e67c38 (git): Use the default timeout in test_super_in_refined_prepended_module_method_in_thread
- The 1 second timeout expired on the Windows runners, although the child had finished all its assertions without an error. Use the default like the other tests in this file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:22 AM Ruby Revision 8382f95c (git): Prevent double free for too big repetition quantifiers (#13332)
- Prevent double free for too big repetition quantifiers
The previous implementation calls `free(node)` twice (on parsing and compiling a
regexp) when it has an error, so it leads to a double-free issue. This
commit enforces `free(node)` ... -
08:22 AM Ruby Bug #22428 (Open): Fiber scheduler: rb_nogvl returns as if the function ran when an offloaded operation is cancelled before execution
- ## Description
When a fiber scheduler cancels an offloaded blocking operation before a worker starts it, `rb_nogvl` returns normally even though the function never ran. It returns the zero-initialized result, so the caller cannot dist... -
08:21 AM Ruby Revision 2d1859ff (git): Reject a compiled program too big for its offset type
- Concatenated large repeats reach a program past INT_MAX from a few hundred
kilobytes of source, and the offsets emitted into it wrap. Cap the size
while the program is emitted, which does not depend on the length pass that
overflows alo... -
08:21 AM Ruby Revision f8005098 (git): Avoid overflow in the quantifier expansion size check
- Nested bounded repeats let the int product tlen * qn->lower overflow, so
the check that keeps the compiler from unrolling a large repeat could pass
for an enormous one, hanging the compile or emitting wrapped jump offsets.
Compare agains... -
08:15 AM Ruby Revision 0e01c2a8 (git): [ruby/json] More hardening against adversarial `encode` methods
- https://github.com/ruby/json/commit/429c109458
-
08:11 AM Ruby Revision 78a31f67 (git): [ruby/json] Index the generated JSON array by rb_len_t
- An int index overflows on an Array longer than INT_MAX, which LP64 and now mswin can hold.
https://github.com/ruby/json/commit/8df32ab074
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:31 AM Ruby Revision 3edde2d2 (git): Size the CGI.escapeHTML overflow test by rb_len_t
- The test assumed the length is narrower than size_t wherever unsigned long is, which stops holding once rb_len_t widens on mswin. It keeps running on mingw.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <norep... -
07:31 AM Ruby Revision 08a554ec (git): Accept the long long conversion error in the IO::Buffer.string spec
- The size is converted to rb_len_t, and the message names long long instead of long once rb_len_t widens on mswin.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:31 AM Ruby Revision 29c5e0bc (git): Check the Array#product size against the rb_len_t range
- MUL_OVERFLOW_LONG_P falls back to LONG_MIN and LONG_MAX without the overflow builtin, so once rb_len_t widens on mswin it would reject a product of 2**31 or more that the result array can hold.
https://bugs.ruby-lang.org/issues/22400
C... -
07:31 AM Ruby Revision 3d73c09f (git): Keep the branch target count of the coverage cache as rb_len_t
- LONG2FIX and FIX2LONG would narrow it to long once rb_len_t widens on mswin, where Fixnum is also only 31 bits.
https://bugs.ruby-lang.org/issues/22400
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:15 AM Ruby Revision dbd87dcc (git): [ruby/json] Sort RFC 8785 keys after as_json conversion
- https://github.com/ruby/json/commit/88b358d8b2
-
07:05 AM Ruby Revision 7c8178e8 (git): [ruby/rubygems] Listen only on loopback in the WebAuthn listener test
- The test clients all connect to localhost, so listening on every interface only brings up the Windows Defender Firewall prompt.
https://github.com/ruby/rubygems/commit/678d42330e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:05 AM Ruby Revision 26d91d5f (git): [ruby/rubygems] Listen only on loopback in the local SSL test server
- TCPServer.new(0) binds every interface, so Windows Defender Firewall asks for permission for each ruby.exe that runs these tests. Bind to localhost, which the clients connect to and the test certificate names. 127.0.0.1 would add about t...
- 07:02 AM Ruby Revision 408989c6 (git): shield frozen tests in test_rubyoptions.rb from externally defined RUBYOPT
-
06:56 AM Ruby Feature #12831: /\X/ (extended grapheme cluster) can't pass unicode.org's GraphemeBreakTest
- Thanks to everyone who investigated and fixed this grapheme segmentation issue.
One related detail worth highlighting is that correct grapheme segmentation doesn't automatically guarantee Unicode-equivalent string comparisons.
For ... -
06:20 AM Ruby Bug #22326: heap buffer overflow in array.values_at()
- ruby_3_4 commit:a1c96b6b0fb3755fe14776e8a23d81088025a788 merged revision(s) commit:3f6143715aa934b558f0b97462b42793c845e4d7.
-
06:20 AM Ruby Bug #22423: String#initialize(encoding:) stores an inflated capacity and writes past the malloc'd buffer on append (rb_str_init termlen double-adjust)
- ruby_3_4 commit:f5cef120e9bc447b023bbdc814194ee572232279 merged revision(s) commit:2d08b5f42f2cbed4a4e6ecf8d62987a4f21f98c1.
- 05:59 AM Ruby Revision 3aa202a7 (git): Bump the github-actions group across 1 directory with 7 updates
- Bumps the github-actions group with 7 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.327.0` | `1.328.0` |
| [actions/upload-artifact](https://github.c... -
05:22 AM Ruby Revision f5cef120 (git): merge revision(s) 2d08b5f42f2cbed4a4e6ecf8d62987a4f21f98c1: [Backport #22423]
- [PATCH] [Bug #22423] Preserve encoding with `String` capacity
-
05:20 AM Ruby Revision a1c96b6b (git): merge revision(s) 3f6143715aa934b558f0b97462b42793c845e4d7: [Backport #22326]
- [PATCH] Fix buffer overflow in Array#values_at
Array#values_at can execute arbitrary code during execution which may
modify the source array. This can cause a buffer overflow if the new length
of the array has de... -
05:17 AM Ruby Bug #22391: Fix propagation of `errno` in `rb_io_maybe_wait`.
- ruby_3_4 commit:eb6033eb5888582319cbbf4d2115fb3df1bd0119 merged revision(s) commit:c4f93eb297c5723673d961db8eee390cbcdf5069.
-
05:16 AM Ruby Bug #22388: Use-after-free when an Enumerable retains its `each` block
- ruby_3_4 commit:357795cca8084e0c8da9f24bec9aac268644d48a, commit:f7e692b6cd76092f42361dab0bed77a3fef3955f merged revision(s) commit:9267f6fba084710cff11b660e8758aec29886682, commit:3ea4bc3f79a913e03ee1b1ea3e21572ee8036095, commit:badce4d...
-
04:52 AM Ruby Revision 357795cc (git): merge revision(s) 9267f6fba084710cff11b660e8758aec29886682, 3ea4bc3f79a913e03ee1b1ea3e21572ee8036095, badce4d07961e8c9c6ac68f15ae7b01ba1985421: [Backport #22388]
- [PATCH] [Bug #22388] Fix use-after-free in `Enumerator::Lazy#flat_map`
[PATCH] [Bug #22388] Fix use-after-free in `Set#&`
[PATCH] Add a more defensive GC guard -
04:34 AM Ruby Revision f7e692b6 (git): merge revision(s) c861619e891632aeeb42907b17003dbc9fbf5f2f, 3ac822c7e1d1983711710b3d8549b8e9898df944: [Backport #22388]
- [PATCH] [Bug #22388] Fix use-after-free in some `Enumerable` methods
[PATCH] [Bug #22388] Fix use-after-free in `Enumerable#sum` -
04:32 AM Ruby Revision eb6033eb (git): merge revision(s) c4f93eb297c5723673d961db8eee390cbcdf5069: [Backport #22391]
- [PATCH] io: preserve errno across `rb_io_wait()` call. (#19121)
[Bug #22391] -
04:25 AM Ruby Bug #22387: str_shared_replace incorrectly recalculates termlen
- Merged into ruby_3_4 at https://github.com/ruby/ruby/commit/cc3e2b96872f7a91561c48ed814b5645a8d53030.
BTW the corresponding commit hash on master branch is `323c1df196cd3ba12274757ff1739ca79b02e685`. - 04:24 AM Ruby Revision cc3e2b96 (git): [Backport 3.4] [Bug #22387] Fix termlen in str_shared_replace
- The buffer is copied over based on the new string's termlen
so we can just set the new encoding raw
instead of recalculating based on the old encoding's termlen. -
03:45 AM Ruby Revision 9044c9ef (git): mswin: Replace the DLL links in prepare-vcpkg
- The zlib port now installs z.dll instead of zlib1.dll, and the link to the old name stays in the build directory pointing at nothing. mklink also refuses names that already exist, so prepare-vcpkg failed when run again after updating vcp...
-
03:45 AM Ruby Revision 7c4b300b (git): Bump the vcpkg builtin-baseline
- This updates openssl from 3.6.3 to 3.6.5#1 and the vcpkg-make host port from 2026-07-09 to 2026-07-09#1. gmp, libffi, libyaml and zlib stay at the same versions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:15 AM Ruby Revision 7910db23 (git): Disable PIE on Haiku by default
- Every `have_func` check against `libruby-static.a` failed on Haiku, because its linker builds the conftest program as a shared object and rejects the TLS relocations in `-fPIE` objects. Without `-fPIE` the compiler generates PIC there, w...
-
02:15 AM Ruby Revision 7cceceae (git): Fix build where `struct dirent` has no `d_type`
- `Dir.scan` broke the build on Haiku. Leave the type unknown there and let the `lstat` fallback below fill it in.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:15 AM Ruby Revision 549b702e (git): Add Haiku build workflow
- Haiku has its own branches in configure.ac, thread_pthread.c, signal.c, io.c and ext/socket, but no CI builds them. Check only that it builds, as the Cygwin workflow does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:35 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- Nested slices, which can be obtained by `buffer.slice.slice` now, have been introduced in commit:5f5d655 / [GH #19091](https://github.com/ruby/ruby/pull/19091), and they have a significant performance drawback as they require an O(depth)...