Activity
From 09/23/2026 to 09/29/2026
Today
-
07:02 PM Ruby Revision b74b3b45 (git): [ruby/prism] Add a constant id set
- There are times when we don't need explicit order in a list of
constants, namely when looking at names of captures in a pattern
match and names of captures in a regular expression. In these cases
it's better to be linear with respect to ... -
06:55 PM Ruby Revision da36b454 (git): [ruby/prism] Add an implicit words sep token
- The parse.y grammar has the concept of a words separator that must
delimit words in a word list literal. Prism previously didn't emit
these in the token stream because they don't actually correspond
to any source code.
However, in order... -
06:55 PM Ruby Revision 7ebf0b69 (git): [ruby/prism] Switch ripper compat to forward look
- A bunch of things are required to match ripper state, including
looking backward sometimes to pull a state forward because of the
nature of parse.y. This changes the structure from a backward look
to a forward look by keeping a couple of... -
05:47 PM Ruby Revision 8fdf4342 (git): ZJIT: Bake block ISEQ pointers as GC offsets (#19108)
- 03:02 PM Ruby Revision 696ebaad (git): JITs: Rebuild libjit.rlib when jit/src/lib.rs changes
- Both libyjit.rlib and libzjit.rlib list jit/src/lib.rs as a dependency
in release builds containing both JITs. Any change to that file causes
the JIT-specific libraries to rebuild, but they'll rebuild with a stale
libjit.rlib, which can ... -
01:06 PM Ruby Revision aeb212ec (git): [DOC] Adding section 'Cleaning Up' to doc guide (#19101)
- * [DOC] Adding section 'Cleaning Up' to doc guide
* Update doc/contributing/documentation_guide.md
Co-authored-by: Jeremy Evans <code@jeremyevans.net>
* Update doc/contributing/documentation_guide.md
Co-authored-by: Jeremy Evans <cod... -
12:14 PM Ruby Bug #22390 (Open): ruby 3.4 -> 4.0 upgrade GC changes causing >2x RSS increase
- Hello, I've been trying to upgrade a fairly sizeable monolith, which has been running on ruby 3.4.10 in production, to ruby 4 (have been targeting 4.0.6 more specifically, although the below should apply the same to 4.0.7). While we didn...
-
11:35 AM Ruby Revision d1296b10 (git): [ruby/rubygems] Add --source option to gem exec command
- Allows specifying a custom gem source when running `gem exec`, matching
the existing --source option on gem install.
https://github.com/ruby/rubygems/commit/6990083d9d
Co-Authored-By: akshay-birajdar-zendesk <akshay.birajdar@zendesk.com> -
11:17 AM Ruby Revision 43dab371 (git): Stop pending test_sending_hook_payloads_under_gc_stress on Windows arm64
- Its failures on 11-arm no longer fail Windows result, and a crash there now leaves a dump to investigate.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:17 AM Ruby Revision 73efd1f9 (git): Collect crash dumps on the Windows CI
- Test workers on Windows 11-arm die without any report. With RUBY_DEBUG=wer, Windows Error Reporting writes a minidump for such a crash, and it is uploaded with the binaries and PDBs needed to read it. The runner images already turn off t...
-
11:17 AM Ruby Revision a3799e92 (git): win32: Add RUBY_DEBUG=wer to leave crashes to Windows Error Reporting
- SEM_NOGPFAULTERRORBOX keeps a crashing test from waiting on the WER dialog, but it also keeps WER from writing a dump when the crash bypasses Ruby's handler, as in a thread other than the main one. Such a crash leaves no [BUG] report eit...
-
11:17 AM Ruby Revision 98d355b0 (git): Keep Windows 11-arm failures out of Windows result
- The 11-arm check job is not stable enough to block merges. The windows-11-arm label moves to the Visual Studio 2026 image by September 30, and on forks already running it, test workers die in the first TLS handshake of every test-all run...
-
11:13 AM Ruby Bug #22388 (Closed): Use-after-free when an Enumerable retains its `each` block
- Applied in changeset commit:git|c861619e891632aeeb42907b17003dbc9fbf5f2f.
----------
[Bug #22388] Fix use-after-free in some `Enumerable` methods -
10:25 AM Ruby Bug #22388 (Closed): Use-after-free when an Enumerable retains its `each` block
- Some `Enumerable` methods pass a pointer to stack-allocated state to `rb_block_call`. If an implementation of `each` retains the given block and invokes it after the `Enumerable` method has returned, the callback accesses invalid stack ...
-
10:36 AM Ruby Bug #22389 (Open): Hang on GC.compact
- The following code works on 4.0.7 but hangs on 4.1.0dev (64a4a372d7):
```ruby
ready = Ractor::Port.new
Ractor.new(ready) do |port|
Array.new(10_000) { Object.new }
port << true
Ractor.receive
end
ready.receive
Thread.new... -
10:26 AM Ruby Revision 3ac822c7 (git): [Bug #22388] Fix use-after-free in `Enumerable#sum`
-
10:26 AM Ruby Revision c861619e (git): [Bug #22388] Fix use-after-free in some `Enumerable` methods
-
09:42 AM Ruby Bug #21142 (Closed): Lazy enumerator `.each_with_index` ignores `.take(0)` before it
- Applied in changeset commit:git|64f4b9ab83c4da368e6314c7ab8b74247894cada.
----------
[Bug #21142] Add `Enumerator::Lazy#each_with_index` -
08:35 AM Ruby Revision 64f4b9ab (git): [Bug #21142] Add `Enumerator::Lazy#each_with_index`
-
08:35 AM Ruby Revision 753e64f3 (git): Merge alias definition and registration
- Also, make `lazy_use_super_method` hash `compare_by_identity` since
all the keys are symbols, . -
07:43 AM Ruby Feature #19325 (Closed): YJIT: Windows support lacking.
- Closing as a duplicate of #18439. YJIT on mswin is waiting for review at https://github.com/ruby/ruby/pull/19114.
-
07:36 AM Ruby Feature #18439: YJIT: Support Microsoft x86 calling convention
- I made YJIT work on mswin x64 in https://github.com/ruby/ruby/pull/19114. It follows the Win64 calling convention and registers unwind info for JIT code, as discussed here, and passes `nmake check` with YJIT enabled. YJIT is about 2x fas...
-
07:26 AM Ruby Revision 64a4a372 (git): [ruby/mmtk] Update mmtk-core and remove LOS workaround
- There was a bug in mmtk-core that caused `is_live()` and
`is_reachable()` to return wrong results for objects in the large object
space. The function `object_survives_current_gc` was introduced to
workaround the bug.
The bug has been f... -
07:11 AM Ruby Revision 90393033 (git): Watch fd 0 when it is the only connection attempt
- When stdin is closed, a socket can get fd 0, and nfds stayed 0 if it was the only fd to wait for, so select never reported the connection.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
07:11 AM Ruby Revision 4fbebba3 (git): Forget the connection attempt fd when getsockopt fails
- The fd was closed but left in connection_attempt_fds, so it was passed to the next select and closed again in the cleanup, possibly after the number had been reused.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
07:11 AM Ruby Revision b72d2fec (git): Don't skip the next connection attempt after a failed one
- remove_connection_attempt_fd shifts the remaining fds down, so advancing the index skipped the fd moved into the current slot. A connection that had already succeeded could go unnoticed until the next select, and a new attempt was starte...
- 07:10 AM Ruby Revision 16d68e7f (git): [ruby/json] JRuby: keep the whole character after an invalid escape
- With allow_invalid_escape, the JRuby decoder appended the code point read
after a stray backslash with append(int), which writes only its low byte.
"\\é" became "\xE9" and "\\あ" became "B", where the C extension
keeps the character. Use ... -
07:07 AM Ruby Revision 009103a3 (git): Read has_syserr under the lock
- The main thread polls has_syserr on every loop while the resolver thread may be setting it, so read it with the lock the resolver thread holds. Once it is seen set, err and ai were written before it and can be read as before.
Co-Authore... -
07:07 AM Ruby Revision b42fdd9e (git): Close the resolver notification pipe under the lock
- The resolver thread checks notify and writes to it while holding the lock. Closing it outside the lock let the thread write a byte to an unrelated file that had reused the fd number.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
06:27 AM Ruby Revision 30717985 (git): Use high-resolution waitable timers for timed waits on Windows
- The millisecond timeout of a Win32 wait is rounded up to the timer tick, so `sleep(0.001)` took 15.6 ms on average. A waitable timer created with `CREATE_WAITABLE_TIMER_HIGH_RESOLUTION`, accepted since Windows 10 1803, brings that to 1.5...
-
05:50 AM Ruby Revision f9ce29e0 (git): mswin: Pass INSTALL_STATIC_LIBRARY to RbConfig
- configure.bat already writes INSTALL_STATIC_LIBRARY, but Makefile.sub never substituted it, so tool/rbinstall.rb could not see --disable-install-static-library. Default it to yes, as configure.ac always sets yes or no.
Co-Authored-By: C... - 05:05 AM Ruby Revision 58b42841 (git): Resolve mkdepend source names against the source root
- A relative name was expanded against the current directory first, so a
build directory nested inside the source tree made generated files such
as ext/ripper/ripper.y look like source-tree files, and the extension's
own depend file was no... - 02:42 AM Ruby Revision ef66863a (git): Update bundled gems list as of 2026-09-28
- 02:40 AM Ruby Revision a23db2a9 (git): Bump the github-actions group across 1 directory with 5 updates
- Bumps the github-actions group with 5 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.325.0` | `1.327.0` |
| [github/codeql-action/init](https://github... -
01:34 AM Ruby Revision 5266c788 (git): Fix out-of-bounds crash in Array#repeated_permutation
- If the array is modified in the call to to_int in Array#repeated_permutation,
it can trigger an out-of-bounds because the length is cached from before
the call to to_int.
The following script demonstrates teh crash:
ary = (1..1000)... -
12:12 AM Ruby Revision c3a285fc (git): Call stat directly instead of the STAT macro in file.c
- Since the Windows-specific definition was removed, STAT is only an alias of stat, which include/ruby/win32.h already maps to rb_w32_ustati128.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
09/28/2026
-
10:53 PM
Ruby
Bug #22387 (Closed): str_shared_replace incorrectly recalculates termlen
- Applied in changeset commit:git|67cd1d3bde0fc3c1afe2fab3aaac8c10edd12e5b.
----------
[Bug #22387] Fix termlen in str_shared_replace (#19104)
[Bug #22387] Fix termlen in str_shared_replace
The buffer is copied over based on the new str... -
08:52 PM Ruby Bug #22387: str_shared_replace incorrectly recalculates termlen
- Backport PR for 3.4: https://github.com/ruby/ruby/pull/19105
-
08:44 PM Ruby Bug #22387: str_shared_replace incorrectly recalculates termlen
- bakport for 4.0: https://github.com/ruby/ruby/pull/19104
-
08:43 PM Ruby Bug #22387: str_shared_replace incorrectly recalculates termlen
- PR for master: https://github.com/ruby/ruby/pull/19103
-
08:42 PM Ruby Bug #22387 (Closed): str_shared_replace incorrectly recalculates termlen
- This ruby snippet crashes under ASan with a heap-buffer-overflow
```ruby
s = ("\u{30AF}" * 7).encode("UTF-16LE").b
s.force_encoding("UTF-16LE")
s.encode!("UTF-8") # 21 bytes in a 22-byte malloc, capa now claims 22
s << "x" ... - 10:53 PM Ruby Revision 67cd1d3b (git): [Bug #22387] Fix termlen in str_shared_replace (#19104)
- [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. -
10:00 PM Ruby Feature #22226: Ractor: class/module ownership -- restrict modification to the Ractor that created it
- matz (Yukihiro Matsumoto) wrote in #note-6:
> Top-level class and module names in non-main Ractors, and the integration with `Ruby::Box`, should be settled together with the author of `Ruby::Box`. Let us discuss that separately.
ko1 ... -
05:04 PM Ruby Bug #22386: Segfault when a Ractor helper thread reports an exception during teardown
- That was quick. Thank you!
-
03:20 PM Ruby Bug #22386 (Closed): Segfault when a Ractor helper thread reports an exception during teardown
- Applied in changeset commit:git|13411f495b47d52cd07de667908073bd5fcea5fc.
----------
[Bug #22386] Reject port creation after Ractor termination
Raise `Ractor::ClosedError` to prevent child threads from accessing
freed port tables durin... -
10:57 AM Ruby Bug #22386: Segfault when a Ractor helper thread reports an exception during teardown
- [GH-19096](https://github.com/ruby/ruby/pull/19096)
-
04:59 PM Ruby Revision 5fe7d61b (git): [ruby/json] Ensure `default_sort_keys_proc` isn't reassigned.
- It's assignable from Ruby simply for the gem's own initialization,
but it should never be re-assigned later.
Fix: https://github.com/ruby/json/pull/1079
https://github.com/ruby/json/commit/cc32ef5cf5 -
04:22 PM Ruby Revision 42bf37a4 (git): [ruby/prism] Only report real captures inside alternation patterns
- When a variable is captured anywhere in a pattern, the operands of each
alternation are visited to report captures inside them. That visitor
treated every local variable target as a capture, including
underscore-prefixed names and target... -
04:02 PM Ruby Revision 31f1446a (git): Extract `ary_make_hidden_shared_copy`
- Make hidden shape copy of an array.
-
04:02 PM Ruby Revision 679c0ca2 (git): Hidden objects class is cleared
-
03:20 PM Ruby Revision 5d4800ec (git): win32: Quote assignment in batch
-
03:20 PM Ruby Revision 82682cb9 (git): win32: Consolidate FILETIME timestamp conversion
- Set seconds and nanoseconds together to avoid duplicate conversions.
-
03:20 PM Ruby Revision e284bed5 (git): win32: Harden AF_UNIX socketpair path handling
- Keep the cleanup path and reject temporary paths that cannot fit.
-
03:20 PM Ruby Revision 32a2ac18 (git): win32: Simplify home directory resolution
- Allocate only the buffer needed by the selected home directory source.
-
03:20 PM Ruby Revision 8b86f090 (git): win32: Handle an empty system temporary path
- Avoid reading before the buffer when the resolved base path is empty.
-
02:40 PM Ruby Revision 13411f49 (git): [Bug #22386] Reject port creation after Ractor termination
- Raise `Ractor::ClosedError` to prevent child threads from accessing
freed port tables during teardown. - 02:05 PM Ruby Revision fb39511f (git): ZJIT: Profile opt_case_dispatch (#19080)
- In 7eab8b5d488da8474d7b31196e3d06b2ff90399d I wanted to avoid extra
work. Since we don't actually use any profile information in ZJIT for
compiling `opt_case_dispatch`, I decided not to call the profiling
instruction.
However, this caus... -
12:33 PM Ruby Misc #22320 (Closed): Build fails with SIGSEGV in `miniruby` during `builtin_binary` on macOS 26 (Tahoe): `pipe2` declared by SDK but absent from libSystem at runtime
- Thanks for the report!
This is a duplicate of #22311 and should already be resolved in the latest ruby 4.0 release (4.0.11). The next 3.4 release will also contain the fix for this. -
11:32 AM Ruby Feature #8947 (Closed): make alias, alias_method, attr_* return name of the alias
- This was implemented in https://bugs.ruby-lang.org/issues/17314
-
09:36 AM Ruby Revision d939272e (git): Fix out-of-bounds in Array#sample when array modified
- The fix in commit 11f57c6 contained a bug where the calculated index should
be `len - i` and not `len - 1`. This script reproduces the crash:
ary = (1..100).to_a
gen = Object.new
gen.define_singleton_method(:rand) { |lim| 8 ... -
08:57 AM Ruby Revision 64ff11df (git): [DOC] Harmonize writable? methods
-
08:28 AM Ruby Revision 1212cfb3 (git): win32: Stop splitting writes to the console
- Windows 7 and older could not write more than about 64KB to a console in one call, so console writes and binary writes to character devices were split into 31366-unit pieces [Bug #14942]. Windows older than 8 has not been supported since...
-
08:23 AM Ruby Revision 390e274c (git): Pend test_sending_hook_payloads_under_gc_stress on Windows arm64
- The child dies with SIGSEGV in about a quarter of the Windows 11-arm check runs on master, and leaves no [BUG] report to go on. It has not shown up on x64 Windows, Linux or macOS.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:20 AM Ruby Revision 177587f5 (git): Fix cycle(n).size for n beyond the Fixnum range
- LONG2FIX does not check the range, so `[1].cycle(2**30).size` returned -1073741824 on mswin. 64-bit platforms hit the same with 2**62.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:03 AM Ruby Revision e3ed0c51 (git): [ruby/rubygems] Drop the verify_spec checks that only protected to_ruby
- Gem::Specification#to_ruby now escapes these values or raises for them, so such a spec fails in ensure_loadable_spec as corrupt. Call to_ruby inside its rescue so that failure is reported the same way.
https://github.com/ruby/rubygems/c... -
07:03 AM Ruby Revision 9e707ecf (git): [ruby/rubygems] Keep the output of Gem::Specification#to_ruby well-formed
- Dependency names were written into %q<> without escaping, and specification_version, dependency types and stub line values were interpolated as is, so a stray `\`, `>` or newline changed the structure of the generated gemspec. Dump depen...
- 06:16 AM Ruby Revision 16926919 (git): Make `IO::Buffer` slices offset-based so they survive source relocation. (#19090)
- 04:13 AM Ruby Revision c568687e (git): Treat empty `IO::Buffer` ranges as non-overlapping. (#19088)
-
03:58 AM Ruby Revision 05c26687 (git): [ruby/rubygems] Send X-Gemfile-Source on redirects only within the same origin
- Gem::RemoteFetcher and the Bundler downloader resent the header on every redirect, including one to another origin. It carries the source URI that Bundler replaces with a mirror, credentials included, so it is meant for the mirror's orig...
-
02:15 AM Ruby Revision 11c91bf4 (git): [DOC] Update dates in updated man pages only
- 02:07 AM Ruby Revision 4d56c955 (git): Revalidate `IO::Buffer` byte access after Ruby callbacks. (#19086)
- Treat encoding coercion, `to_io`, and scheduler capability checks as
callouts that can change the buffer before byte access begins.
- Copy `get_string` bytes through the existing locked-for-reading helper
after encoding coercion, with... -
12:49 AM Ruby Revision c3f21194 (git): [DOC] Harmonize zero? methods
-
12:47 AM Ruby Revision cdf1e4f3 (git): [DOC] Harmonize writable_real? methods
-
12:42 AM Ruby Revision dc724dd3 (git): [DOC] Harmonize world_writable? methods
-
12:41 AM Ruby Revision 25cb3a88 (git): [DOC] Harmonize world_readable? methods
-
12:28 AM Ruby Revision d84403c0 (git): [DOC] Harmonize unlink doc
09/27/2026
-
10:29 PM Ruby Revision c5994c60 (git): [DOC] Update the date in man pages
- check_misc asks for this after man/ruby.1 changed.
https://github.com/ruby/ruby/actions/runs/36075733323/job/107886392990
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision 6c9351f0 (git): Mention the removed platforms in NEWS
- None of these removals had been announced in NEWS before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision f67e01a8 (git): Remove the IRIX 4 libsun check from etc
- IRIX is not a platform Ruby supports.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision 1c92a623 (git): Remove AmigaOS from the zlib OS code detection
- AmigaOS is not a platform Ruby supports.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision 92aded91 (git): Remove support code for unmaintained platforms
- AtheOS, AmigaOS, HI-UX/MPP, IRIX, OSF/1, QNX, ESIX, UX/PDS, System V Release 4 and RISC OS are not listed under Platform Maintainers in doc/maintainers.md, and none of these branches is reached on a supported platform.
Co-Authored-By: C... -
10:29 PM Ruby Revision 20f85b84 (git): Remove unsupported platforms from the fileutils test platform checks
- Ruby 1.9.1 dropped Windows CE, and Ruby 2.3 dropped OS/2 (emx) and Borland C.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision 0316cce6 (git): Remove unsupported platforms from RubyGems and Bundler Windows detection
- Ruby 1.9.1 dropped DJGPP and Windows CE, and Ruby 2.3 dropped Borland C. Gem::WIN_PATTERNS itself stays because other gems reference it. msdos in Bundler::WINDOWS goes with djgpp, since only DJGPP's msdosdjgpp host_os ever matched it.
C... -
10:29 PM Ruby Revision ece6d6cf (git): Remove bccwin from the zlib OS code detection
- Ruby 2.3 dropped Borland C.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision ab5a81eb (git): Remove leftover checks for unsupported platforms
- Ruby 1.9.1 dropped DJGPP, Windows CE and VMS, NeXTSTEP, OpenStep and Rhapsody went in 2011, and Ruby 2.3 dropped OS/2, BeOS and Borland C. None of these names appears in RUBY_PLATFORM or host_os on a supported platform.
Co-Authored-By: ... -
10:29 PM Ruby Revision 7058490a (git): Remove unsupported platforms from prism host_os patterns
- Ruby 1.9.1 dropped DJGPP and Windows CE, and Ruby 2.3 dropped Borland C.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:29 PM Ruby Revision ae8b82c7 (git): Remove bccwin from the Resolv::Hosts platform check
- Ruby 2.3 dropped Borland C.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:12 PM Ruby Bug #22284 (Closed): Passing an object with to_int to curry as its arity causes problems with LLP64.
- Applied in changeset commit:git|ec3b6b12e7fdd9eb833ba867eb862956a85f424b.
----------
[Bug #22284] Fix curry with a non-Fixnum arity on LLP64
FIX2INT does not call to_int where int and long have the same size, so `method(:puts).curry(1r... -
10:00 PM Ruby Revision f021cc2f (git): [Bug #22284] Let NUM2INT handle Fixnum arity of curry
- NUM2INT already takes the Fixnum path by itself.
-
10:00 PM Ruby Revision 020ccece (git): [Bug #22284] Test curry with an arity that responds to to_int
- It also counts the to_int calls, so it fails on LP64 platforms too, where the old code converted the arity again on every call.
-
10:00 PM Ruby Revision ec3b6b12 (git): [Bug #22284] Fix curry with a non-Fixnum arity on LLP64
- FIX2INT does not call to_int where int and long have the same size, so `method(:puts).curry(1r)` waited for a garbage number of arguments on Windows. Convert the arity once and keep the result as a Fixnum, which also limits the to_int ca...
- 09:20 PM Ruby Revision 4c5d52f0 (git): [ruby/rubygems] Bump rubyzip from 3.3.0 to 3.4.0 in /spec/realworld/fixtures/warbler
- Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](https://github.c... -
12:05 PM Ruby Bug #22386 (Closed): Segfault when a Ractor helper thread reports an exception during teardown
- Ruby 4.1-dev can segfault when a thread inside a terminating Ractor raises an exception in an `ensure` block. Automatic thread exception reporting tries to load error-formatting code through `require`. The require path creates an interna...
-
10:26 AM Ruby Bug #22310: parse.y rejects a variable binding that precedes an unrelated alternative pattern
- A follow-up on "every form I tried gives the same answer": while writing more tests I found a few forms where it's Prism that gets it wrong, the other way around. With a sibling capture present, Prism also rejects `in [x, 1 | _a]`, `in [...
-
05:30 AM Ruby Revision f6ff9e7d (git): Etc.uname: Report the actual Windows version
- GetVersionEx reports 6.2.9200 on Windows 8.1 and later unless the manifest of the executable declares them as supported, and ruby.manifest does not. RtlGetVersion is not affected by the manifest.
Co-Authored-By: Claude Opus 5.5 <noreply... -
04:03 AM Ruby Revision 41349bb1 (git): Require NUMBER_OF_PROCESSORS in test_nprocessors
- A missing variable turned the lower bound into 0, which the existing assertion already covers.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
04:03 AM Ruby Revision 17af2a83 (git): Define ALL_PROCESSOR_GROUPS for mingw builds
- mingw-w64 guards the macro with _WIN32_WINNT >= 0x0601 as well as the function, while the mingw build targets 0x0600.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> -
04:03 AM Ruby Revision fa3cbf9e (git): Count processors across all processor groups in Etc.nprocessors
- GetSystemInfo() reports the logical processors of the current processor group only, so Etc.nprocessors returned at most 64 on Windows machines with more than 64 logical processors. GetActiveProcessorCount(ALL_PROCESSOR_GROUPS) counts eve...
-
03:30 AM Ruby Revision b58db2ba (git): Give the foreign unshareable store test time to write the crash report
- The child aborts with [BUG], and symbolizing the C level backtrace for the crash report can take longer than the default 10 seconds on a loaded macOS CI host. Use the same budget as 1712837b7f.
https://github.com/ruby/ruby/actions/runs/... -
12:12 AM Ruby Revision 7fb38443 (git): CI: Use case() for the x86 suffix in the Windows workflow
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
12:12 AM Ruby Revision 7505510c (git): CI: Build and test x86 mswin on Windows
- Breakages specific to i386-mswin32, such as the size_t atomic fetch_add and the prism bit.h build failure, were found only by auditing. Run check on x86 as well so that CI catches them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic... -
12:12 AM Ruby Revision 51f85d54 (git): CI: Do not mistake the x86 ruby DLL for the VC runtime
- On i386-mswin32 the ruby DLL has no arch prefix and is named vcruntime140-ruby410.dll, so the vcruntime140*.dll check rejected every x86 binary package. Match only the VC runtime DLL names.
Co-Authored-By: Claude Opus 5.5 <noreply@anthr... -
12:12 AM Ruby Revision 2151a047 (git): Ignore PROCESSOR_ARCHITEW6432 in the ENV tests on WOW64
- On 64-bit Windows, WOW64 sets PROCESSOR_ARCHITEW6432 when a 32-bit process starts, like PROCESSOR_ARCHITECTURE under the x64 emulation on ARM64, so test_execopts_env and test_execopts_unsetenv_others fail on i386-mswin32.
Co-Authored-By... -
12:02 AM Ruby Revision 7cdbc846 (git): Return the byte count from IO#write to a Windows console
- `rb_w32_write_console` returns the number of UTF-16 code units it wrote, so writing "あ" to a console returned 1 instead of 3 as it does for files and NUL. Use the result only to tell success, as the other callers do.
Co-Authored-By: Cla...
09/26/2026
-
11:26 PM Ruby Revision cd3657cf (git): Remove CharNext from eval_intern.h
- ruby_push_include was its last user. A path separator never appears inside a multibyte character, so walk RUBYLIB and -I by bytes everywhere. This also fixes the same skipped separator on Cygwin, where CharNext came from windows.h.
Co-A... -
11:26 PM Ruby Revision 10eee53b (git): Do not skip path delimiters after multibyte characters in dln_find on Windows
- The dln_find.c object built on its own receives UTF-8 command names from process.c, but scanned them with CharNext in the ANSI code page. With a DBCS code page, a backslash after a multibyte character was missed, and `exec("あ\\foo", "x")...
-
11:26 PM Ruby Revision 3e7be388 (git): Do not skip path separators after multibyte characters on Windows
- RUBYLIB and -I are UTF-8 on Windows, but ruby_push_include walked them with CharNext in the ANSI code page. With a DBCS code page such as 932, the last byte of a UTF-8 character was taken as a lead byte and swallowed the following `;`, s...
-
09:10 PM Ruby Revision b992b96e (git): win32: Leave the select sets empty on timeout
- The polling loop restored every socket into the sets before checking
the deadline, so a timed-out select returned them all as ready. When
IO.select forced a zero timeout for buffered data, sockets with nothing
to read were reported read... -
09:10 PM Ruby Revision 4e9e6289 (git): win32: Do not drop non-socket handles from select results
- When FD_SETSIZE (64) or more sockets were ready, copy_fd stopped there
and a ready pipe or other non-socket handle was left out of the result.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
09:10 PM Ruby Revision 8512e07d (git): win32: Keep all sockets in the sets while polling select
- The polling loop saved and restored the sets through fixed fd_set
buffers, which hold only FD_SETSIZE (64) sockets. From the second
poll on, sockets past that were no longer watched, so IO.select could
miss them until the timeout.
Co-A... -
09:05 PM Ruby Revision dbbc81fe (git): Stop including missing/file.h in dln.c and util.c
- Nothing in them has used <fcntl.h> or the L_* and *_OK macros since 9afa9ba967 split dln_find.c out and f9e9eee677 removed ruby_add_suffix.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:05 PM Ruby Revision cb005af5 (git): Remove the redundant _WIN32 check in rb_group_member
- Neither mswin nor mingw defines HAVE_GETGROUPS, so the remaining condition already covers Windows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:05 PM Ruby Revision 224bb408 (git): Remove Windows redefinitions that duplicate win32.h
- include/ruby/win32.h already maps stat, lstat, access, truncate, utimensat, unlink, rename and getenv to the same rb_w32_* functions when compiling the core with RUBY_EXPORT.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:05 PM Ruby Revision 145305b0 (git): Remove the disabled Windows branch in rb_str_encode_ospath
- It has been `#if 0` since 04e95f8985 disabled it to avoid infinite recursion at loading transcoder.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
08:53 PM Ruby Revision 70849295 (git): [ruby/test-unit-ruby-core] Pass a message to Timeout.timeout only when given
- Timeout.timeout in Ruby 2.3 takes at most two arguments, so EnvUtil.timeout always raised ArgumentError there. EnvUtil.terminate reaches it through Debugger#dump on Windows when gdb is installed, which broke test_terminate_reaps_exited_c...
- 07:24 PM Ruby Revision b58bea07 (git): Fix buffer size accounting for `rb_str_tmp_frozen` roots
- capa does not include the terminator, so when a buffer moves
between strings with different terminator lengths the capacity has to
be converted or we will try to free the buffer with the wrong size:
[BUG] buffer 0x00005030039ff768 f... - 04:34 PM Ruby Revision 25f659ba (git): ZJIT: Don't CheckInterrupts on inlined method return (#19065)
- An inlined `leave` is just a `Jump` to the caller's continuation block, not a real return no frame pops there, so checking interrupts is pointless. Moved `CheckInterrupts` so it only runs on real (Standalone) returns and real returns are...
- 03:38 PM Ruby Revision 7eab8b5d (git): ZJIT: Add null support for opt_case_dispatch (#19040)
- We are not going to optimized switch-based dispatch with the hash table, at
least not yet, but we should let the interpreter profile the execution paths
before ZJIT runs them.
This should inject a lot more type information for the compi... -
03:17 PM Ruby Revision 4b0026e8 (git): [PRISM] Get rid of quadratic compilation in and/or nodes
-
01:43 PM Ruby Revision 6bf7f7f4 (git): [ruby/prism] Rename `SymbolNode#value_loc` to `SymbolNode#content_loc`
- Makes it consistent with nodes that contain text, like `StringNode`
For those, `value` returns the literal. But we can't make it return a symbol for backwards compatibility.
https://github.com/ruby/prism/commit/7c1e135205 -
01:35 PM Ruby Bug #22385 (Open): Enumerator::Lazy#zip loses to_ary conversions when mixed with enumerable arguments
- `Enumerator::Lazy#zip` discards a successful `to_ary` conversion when a later argument requires Enumerable iteration. The equivalent eager `Enumerable#zip` call preserves the conversion.
## Reproduction
```ruby
array_like = Object... -
01:02 PM Ruby Revision 6eab8427 (git): Force postmortem GC to always run
- Currently, if GC is disabled, postmortem GC is not ran when a Ractor dies.
This can cause the object space to have issues because we need to run the
postmortem GC. This commit will guarantee that it runs. -
12:38 PM Ruby Bug #22342: IO#gets can ignore the limit argument in some edge cases
- ruby_3_4 commit:0a33ab92c08c8d1dbba0b3c97781d16b40ac53a8 merged revision(s) commit:227006291d35b2255b3f7a888d75102c129b0472.
-
11:58 AM Ruby Bug #22342 (Closed): IO#gets can ignore the limit argument in some edge cases
- Applied in changeset commit:git|227006291d35b2255b3f7a888d75102c129b0472.
----------
Fix IO#gets ignoring the limit argument
IO#gets first searches for separator candidates by looking for the last
byte of the record separator, and then... -
12:38 PM Ruby Revision 0a33ab92 (git): merge revision(s) 227006291d35b2255b3f7a888d75102c129b0472: [Backport #22342]
- [PATCH] Fix IO#gets ignoring the limit argument
IO#gets first searches for separator candidates by looking for the last
byte of the record separator, and then checks whether it is an actual
match.
If a c... -
11:25 AM Ruby Revision 22700629 (git): Fix IO#gets ignoring the limit argument
- IO#gets first searches for separator candidates by looking for the last
byte of the record separator, and then checks whether it is an actual
match.
If a candidate is found at limit-th byte of the stream but is rejected
because it does ... -
11:23 AM Ruby Feature #21277 (Closed): Windows ARM support
- Applied in changeset commit:git|4300f5dda986414b3ddc9957553315e6437c7f1b.
----------
[Feature #21277] Run check on Windows 11-arm
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:23 AM Ruby Revision 9fe613e9 (git): Reap an exited child in EnvUtil.terminate
- On Windows, Process.kill raises Errno::ESRCH for a child that has exited but has not been reaped, so terminate returned a stale $? and left the child to ZombieHunter. TestIO#test_write_32bit_boundary hit this on Windows 11-arm, where the...
-
11:23 AM Ruby Revision e36d7036 (git): Expect arm64 as host_cpu on mswin
- mswin takes the CPU name from MSVC, as it reports x64 rather than x86_64 on x64.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:23 AM Ruby Revision 4300f5dd (git): [Feature #21277] Run check on Windows 11-arm
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
11:13 AM Ruby Revision 34ae1caa (git): Change raise to assertions in test_gc.rb
- 11:11 AM Ruby Revision 99d1ece9 (git): io: preserve wide character boundaries in raw reads
-
10:48 AM Ruby Revision 5feb9db0 (git): dir.c: Remove mkdir, rmdir and opendir overrides for Windows
- include/ruby/win32.h and win32/dir.h have mapped them to the rb_w32_u* functions since 5b98b2ce39.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:48 AM Ruby Revision d65eccb7 (git): dir.c: Remove redundant case in has_magic
- On Windows the default case already sets hasalpha for '~' because IS_WIN32 is 1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:48 AM Ruby Revision 1a367ebf (git): dir.c: Remove USE_NAME_ON_FS_BY_FNMATCH
- DOSISH is defined only on _WIN32, which has used USE_NAME_ON_FS_REAL_BASENAME since 45df1c24d2, so this code is never compiled. It even passes an undeclared `basename` to do_opendir.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:11 AM Ruby Revision 6cf57e66 (git): Add noreturn attribute to never called function
-
10:11 AM Ruby Revision ec2eaf3f (git): Fix shorten-64-to-32 warnings
- `size_t` may be less than `off_t`
- 10:11 AM Ruby Revision 8094e4e2 (git): Don't lose consumed bytes when IO#read times out (#19053)
- * io: preserve data after read timeout
* io: make timeout regression tests robust against small send buffers
A synchronous write of the whole payload blocks forever once the socket
send buffer fills (8 KiB by default on macOS and Windo... -
08:50 AM Ruby Revision ccdc278e (git): Document Windows 10 version 1809 as the minimum for mswin
- Windows Server 2016 and Windows 10 Enterprise LTSB 2016 reach end of support by January 2027. Version 1809 is the oldest release still supported afterwards, as Windows Server 2019 and Windows 10 Enterprise LTSC 2019 until January 2029.
... -
08:50 AM Ruby Revision 7d841815 (git): mswin: Update required Windows version to Windows 10
- Update the default `NTVER` so that the declarations of APIs introduced in Windows 10 are enabled. `_WIN32_WINNT` has no value for version 1809, the new minimum, so `_WIN32_WINNT_WIN10` is the closest one.
Co-Authored-By: Claude Opus 5.5... -
04:24 AM Ruby Revision da3e1fcb (git): Fix init_is_float bug
-
04:16 AM Ruby Revision b5245a5d (git): Stub File.unlink without redefining it in the tempfile test
- Redefining the method warns under RUBYOPT=-w, which CI uses, and the test expects nothing on stderr. Prepending a module leaves the original method in place.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:16 AM Ruby Revision 75d54670 (git): Ignore EACCES when unlinking a tempfile from the finalizer
- On Windows, File.unlink raises Errno::EACCES while another handle still holds the file open. Tempfile#unlink already ignores that, but FinalizerManager#call only rescued ENOENT, so the exception escaped from the GC finalizer and was repo...
-
03:42 AM Ruby Revision 047cd2fd (git): Remove the _aligned_malloc prototype for old Visual C++
- malloc.h, which win32.h includes, declares it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:42 AM Ruby Revision 6c5cfbc9 (git): regint.h: Remove the PRIdPTR fallback
- It was for Visual C++ 2012 and older, which had no inttypes.h.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:42 AM Ruby Revision f49b514c (git): win32.h: Use stdint.h for intptr_t on mswin too
- The fallback definitions were for Visual C++ 2008 and older, which had no stdint.h.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:42 AM Ruby Revision 0fb144a7 (git): Remove unused MSC_VERSION_SINCE and MSC_VERSION_BEFORE
- The last use went away in cdb9893c55.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:42 AM Ruby Revision 62e374e9 (git): Fold MSVC version checks in the attribute detection headers
- Every `RBIMPL_COMPILER_SINCE(MSVC, ...)` condition here holds for `_MSC_VER` 1915, the oldest version the headers accept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:42 AM Ruby Revision c45c9c26 (git): Reject MSVC older than 1915 in the public headers
- Building ruby needs `_MSC_VER` 1915 or later, but the generated config.h accepts 1910 and later for such a build, so an extension could still be compiled by 1910 through 1914.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
03:05 AM Ruby Revision 9f1ea3dc (git): [DOC] Harmonize truncate methods
-
02:36 AM Ruby Revision be0b81e7 (git): mswin: Stop building missing/langinfo.c
- Only the Cygwin branch in localeinit.c calls nl_langinfo_codeset, so on mswin the object just added an unused export to the DLL.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:36 AM Ruby Revision b0e813f4 (git): win32: Detect only vcruntime in rtname.cmd
- MSVC 1915 or later is required and Makefile.sub rejects RT_VER below 140, so the values made for msvcrt and msvcrNN only led to that error.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
02:36 AM Ruby Revision 72237154 (git): win32: Remove the PROCESSOR_FLAG default of ARCH_FLAG
- PROCESSOR_FLAG lost its only definition in cdb9893c55, so ARCH_FLAG has been empty unless given explicitly.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
01:08 AM Ruby Revision b0604233 (git): [ruby/resolv] Skip TestWin32Config without the win32/resolv extension
- JRuby on Windows loads its bundled `win32/resolv`, which has no `tcpip_params`, so two of these tests raised NoMethodError there.
https://github.com/ruby/resolv/commit/971a36ee72
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
12:54 AM Ruby Revision 5299d8d1 (git): Dump Hash AR/ST status in ObjectSpace.dump
09/25/2026
- 11:59 PM Ruby Revision c41b67d6 (git): ZJIT: Specialize caller splats with polymorphic lengths (GH-18640)
- Caller splats with multiple profiled lengths currently fall back to
dynamic sends, even when each length could use SendDirect.
For opt_send_without_block, dispatch on profiled splat lengths within
each ISEQ receiver arm and specialize a... -
09:01 PM Ruby Revision 9a86049e (git): Fix the Win32::Resolv guard in test_win32_config.rb
- `Win32::Resolve` is never defined, so these tests were not run anywhere.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
09:01 PM Ruby Revision e1182d11 (git): win32/resolv: Cast method functions with RUBY_METHOD_FUNC
- GCC 15 in C23 mode reads `ANYARGS` as `(void)`, so the bare function pointers are rejected against Ruby headers that do not add the cast themselves, as happened with Ruby 3.1 on Windows.
https://github.com/ruby/resolv/issues/92
Co-Auth... - 07:17 PM Ruby Revision b49347c2 (git): [DOC] Add GC.start global option
- This option defaults to `true` like all other `GC.start` options. It only has
effect for the default GC and when there are multiple running Ractors. If
there's only a single running Ractor, the option is ignored.
A global GC runs a stop... -
06:53 PM Ruby Bug #22381 (Closed): MatchData assigned to $~ is incorrectly reused
- Applied in changeset commit:git|ea3cd7efe1f6bab78572b31774462e891ef01243.
----------
Fix reuse of MatchData assigned to $~
$~ = m = /a/.match("a").dup
/b/ =~ "b"
p m
[Bug #22381] -
06:53 PM Ruby Revision ea3cd7ef (git): Fix reuse of MatchData assigned to $~
- $~ = m = /a/.match("a").dup
/b/ =~ "b"
p m
[Bug #22381] -
06:53 PM
Ruby
Bug #22378 (Closed): `Ractor::IsolationError` in code not using Ractors
- Applied in changeset commit:git|bec5e51c85ded96969fd070ac5c3908d9f544723.
----------
Fix Module/Class#dup of frozen object
This code should not raise an error:
```
@var = Class.new.freeze.dup # unfrozen copy
@var.instance_variable_set(... - 06:53 PM Ruby Revision bec5e51c (git): Fix Module/Class#dup of frozen object
- This code should not raise an error:
```
@var = Class.new.freeze.dup # unfrozen copy
@var.instance_variable_set(:@test, 123)
```
It was raising `Ractor::IsolationError` because of a bug in `rb_fields_tbl_copy`.
This patch also fixes th... -
06:24 PM Ruby Feature #22277 (Closed): Make `rb_gc_register_address` Ractor-local
- Applied in changeset commit:git|2ad6b99a98058ce25de2d1d536f291b93d893834.
----------
GC: scope rb_gc_register_address to the calling Ractor
The registered_globals list made every Ractor's GC scan every slot under
a shared lock. This co... -
06:24 PM Ruby Revision bca1314e (git): GC: verify consistency of Ractor local registered addresses.
- Now that registrations are Ractor-scoped, a store of another Ractor's
unshareable object through a registered address is a use-after-free
waiting for the owner's next GC.
This commit introduces a method to catch it in debug and ASAN bui... -
06:24 PM Ruby Revision 2ad6b99a (git): GC: scope rb_gc_register_address to the calling Ractor
- The registered_globals list made every Ractor's GC scan every slot under
a shared lock. This commit splits it into per-Ractor lists.
We also maintain a global registry that references every Ractor that has
ever registered so that unregi... -
06:24 PM Ruby Revision 43b1e17d (git): json: reject non-shareable default sort_keys proc from non-main Ractors
- JSON::State.default_sort_keys_proc is registered at extension load time
so it's owned by the main Ractor.
When we implement the registration table on each Ractor storing another
Ractor's unshareable Proc into that slot leaves a dangling... -
06:24 PM Ruby Revision 3ebb1b2c (git): dir.c: keep GC-registered globals shareable or unregistered
- last_cwd is set on init in the main Ractor, but Dir.pwd attempts to
store into it. When this is done on a child Ractor we violate the
invariant that the owning and registering Ractor must be the same. On a
normal build the use-after-free... - 03:48 PM Ruby Revision 4ac2a34c (git): [Bug #22383] Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- 45a2c95d0f7184c9cd64ddd26699af31bea8675d mistakenly rewrote
FL_TEST_RAW(orig, STR_SHARED) && !FL_TEST_RAW(orig, STR_TMPLOCK|RUBY_FL_FREEZE)
as
FL_TEST_RAW(orig, STR_SHARED | STR_TMPLOCK) == STR_TMPLOCK
requiring orig to not b... -
03:45 PM Ruby Revision 53da7e16 (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... -
03:45 PM Ruby Revision 6841c0a8 (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... -
03:04 PM
Ruby
Bug #22383 (Closed): Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- Applied in changeset commit:git|57213d44ce7b1a31fc9648e9cd5eb0c4507f4a49.
----------
[Bug #22383] Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
45a2c95d0f7184c9cd64ddd26699af31bea8675d mistakenly rewrote
FL_TEST_R... -
03:19 AM Ruby Bug #22383: Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- Sorry, confusing with [Bug #22382].
-
03:14 AM Ruby Bug #22383: Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- > With class Ractor alias join take end unless Ractor.method_defined?(:join), it reproduced on 3.3 an 3.4.
What reproduces?
I do have a few related fixes coming in another PR but this particular condition is still
else if (FL_... -
03:08 AM Ruby Bug #22383: Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- With `class Ractor alias join take end unless Ractor.method_defined?(:join)`, it reproduced on 3.3 an 3.4.
-
02:35 AM Ruby Bug #22383: Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- 4.0 Backport PR https://github.com/ruby/ruby/pull/19019
-
02:32 AM Ruby Bug #22383: Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- PR https://github.com/ruby/ruby/pull/19018
-
02:29 AM Ruby Bug #22383 (Closed): Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- https://github.com/ruby/ruby/commit/45a2c95d0f7184c9cd64ddd26699af31bea8675d#diff-430d86fdb6c4a558ab0f1b6648bbfae1720e8bde84f026e95a52740014752040R1914
mistakenly rewrote
FL_TEST_RAW(orig, STR_SHARED) && !FL_TEST_RAW(orig, STR_... - 03:03 PM Ruby Revision 57213d44 (git): [Bug #22383] Fix inverted `STR_SHARED` check in `rb_str_tmp_frozen_release`
- 45a2c95d0f7184c9cd64ddd26699af31bea8675d mistakenly rewrote
FL_TEST_RAW(orig, STR_SHARED) && !FL_TEST_RAW(orig, STR_TMPLOCK|RUBY_FL_FREEZE)
as
FL_TEST_RAW(orig, STR_SHARED | STR_TMPLOCK) == STR_TMPLOCK
requiring orig to not b... -
11:28 AM Ruby Revision d3f0a612 (git): Fix up for wasm
- `stack_maxsize` is unknown on wasm and set to 0.
-
11:18 AM Ruby Revision c6ff4670 (git): Update the zjit hir tests for new GC parameter
-
11:18 AM Ruby Revision 6cc4ec34 (git): Add a per-Ractor GC timing example
-
11:18 AM Ruby Revision 60c206b6 (git): Add global scope to GC.stat
-
11:18 AM Ruby Revision cfced4ed (git): Fix overlapping GC CPU timing during global compaction
-
10:40 AM Ruby Revision 050e89ae (git): Honor the buffer size in Darwin `backtrace`
- Deep native stacks can overrun the caller's buffer while reporting
a crash because the Darwin implementation ignores `size`. -
10:40 AM Ruby Revision 90a78de8 (git): Reserve more machine stack space for ASan builds
- Unoptimized ASan VM frames can exhaust the C stack before
`SystemStackError` is raised with the normal reserve. -
08:54 AM Ruby Revision 413145a2 (git): Fix crash in Array#pack when format string modified
- If the format string is modified during Array#pack (by conversion such
as to_str, to_int, etc.), it can cause an use-after-free since reading
p[-1] may be an use-after-free. We should read that byte before performing
the conversion.
The... -
07:09 AM Ruby Misc #22275: Ruby::Box support plan for RubyGems and Bundler
- I think that RubyGems / Bundler should not be loaded into Ruby::Box by default. I have shared a few of my thoughts with @tagomoris and based on that he implemented #22329.
But I'd like to go further. I think that it would be nice to h... -
06:59 AM Ruby Revision 2a96d32a (git): prism: Use _BitScanForward64 only on 64-bit MSVC
- _BitScanForward64 is not available for 32-bit x86, so the i386-mswin32 build failed at prism.c. Use the portable fallback there, as ntz_int64 in internal/bits.h does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:21 AM Ruby Revision 612e44ed (git): Remove non-Windows spawnv helpers in process.c
- USE_SPAWNV needs spawnv without a working fork, which only Windows has since OS/2 support was removed. The non-Windows proc_spawn_cmd_internal and proc_spawn_sh were never compiled, and the Windows proc_spawn_cmd_internal macro was unuse...
-
06:21 AM Ruby Revision b00f6b96 (git): Remove HAVE_SPAWNVE code in pipe_open
- Neither configure.ac nor win32/Makefile.sub defines HAVE_SPAWNVE.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:21 AM Ruby Revision 7e424d20 (git): Remove the Windows branch in nogvl_fdatasync
- HAVE_FDATASYNC is never defined on Windows. win32/Makefile.sub does not define it and the mingw CRT has no fdatasync, so the branch has never been compiled.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:21 AM Ruby Revision 30a39edb (git): Remove the __BOW__ check in io.c
- __BOW__ (BSD on Windows) appears nowhere else in the tree.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:21 AM Ruby Revision 949ae601 (git): Include <io.h> only for Cygwin in io.c
- On Windows, ruby/win32.h already includes it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:21 AM Ruby Revision d4bb55c0 (git): Drop _WIN32 conditions covered by HAVE_* macros
- win32/Makefile.sub and the mingw part of configure.ac already define HAVE_FCNTL_H, HAVE_SPAWNV and HAVE_TIMES, and leave HAVE_SYS_IOCTL_H undefined.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
06:15 AM Ruby Revision cc07aad3 (git): auto_review_pr.rb: Stop redirecting Onigmo changes upstream
- Regexp fixes are merged into ruby/ruby directly and the copies have diverged, so asking contributors to file them to k-takata/Onigmo only misleads them.
https://github.com/ruby/ruby/pull/19026
Co-Authored-By: Claude Opus 5.5 <noreply@a... -
05:34 AM Ruby Revision b3343402 (git): [ruby/rubygems] Keep credentials on redirects only within the same origin
- The Bundler downloader, Gem::RemoteFetcher and the compact index fetcher re-applied the source's userinfo whenever a redirect stayed on the same host, even when it moved to another port or scheme. RFC 9110 defines the protection space of...
-
05:21 AM Ruby Bug #22384: Regexp compile error in the 2nd+ branch of a top-level alternation leaks the parse tree (regression from #13332, Ruby 4.0)
- Fix and regression test: https://github.com/ruby/ruby/pull/19026. Verified on a build of v4.0.7 with the patch: Regexp.new("a|b(c") rescue nil goes from 134 B leaked per compile to 0, and 2M calls of /(?:a|b)c(d)/.to_s from +250 MB RSS t...
-
04:39 AM Ruby Bug #22384 (Open): Regexp compile error in the 2nd+ branch of a top-level alternation leaks the parse tree (regression from #13332, Ruby 4.0)
- **Affects:** ruby 4.0.6 and 4.0.7 (official docker images and a jemalloc-linked build), master (commit still present). **Not affected:** 3.4.6.
**Repro (plain Ruby, no extensions):**
```ruby
def rss_kb = File.read('/proc/self/status... -
04:40 AM Ruby Revision 7d51ed47 (git): Etc.uname: Remove Win32s and Win9x branches
- GetVersionExW always reports VER_PLATFORM_WIN32_NT, since Windows 9x support had been dropped in 8a02eed723 before Etc.uname was implemented on Windows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:40 AM Ruby Revision 640a8b9c (git): Etc.uname: Return "ARM64" as the machine on Windows ARM64
- GetSystemInfo reports PROCESSOR_ARCHITECTURE_ARM64 there, which fell through to "unknown".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:36 AM Ruby Bug #22382: IO#write of a shareable String from multiple Ractors causes use-after-free
- Thank you for this bug report. I have a [fix here](https://github.com/ruby/ruby/pull/19023).
-
04:36 AM Ruby Revision 0e2dad24 (git): mswin: Reject MSVC older than 1915 at configure time
- Otherwise configure succeeds and the same floor in Makefile.sub stops the first nmake.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:36 AM Ruby Revision 14fd99e1 (git): Document Visual Studio 2017 version 15.8 as the minimum for mswin
- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-
04:36 AM Ruby Revision d0711718 (git): mswin: Reject MSVC older than 1915 at the first version check
- Since 87435fe232 the build has needed the conforming preprocessor, which MSVC gained in 1915, so 1900 through 1914 passed this check and failed later with an unrelated message.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
04:29 AM Ruby Revision cf35145f (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... -
04:29 AM Ruby Revision 7cfe8dc8 (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... -
04:14 AM Ruby Bug #22092: `Array#sum` takes slow path, does not perform compensated summation of Float elements when init argument is a Float
- I believe there is a bug in the fix, when a block with side effects is passed in. I think this should fix it https://github.com/ruby/ruby/pull/19022
-
03:09 AM Ruby Revision be6637f5 (git): Fix flaky TestYJIT#test_max_compile_time
- Compiling the setter call could spend the whole 1ms budget on a busy CI runner, which stopped compilation before the next eval and failed with :not_compiled2. Check that compilation continues under a generous budget first, and only then ...
- 02:33 AM Ruby Revision 5d106710 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.87.17 to 2.87.18
- [Release notes](https://github.com/taiki-e... -
01:51 AM Ruby Revision 2d143179 (git): [ruby/rubygems] Stop pre-unlocking gems named by metadata overrides
- The lockfile does not record overrides, so unlocking for a required_ruby_version or required_rubygems_version override happened on every run, which rejected every frozen install and updated the named gem on each plain `bundle install`. I...
-
01:51 AM Ruby Revision bf17a72f (git): [ruby/rubygems] Apply version overrides when validating locked dependencies
- A transitive override outside the parent's requirement made check_lockfile report the parent as having invalid dependencies, so frozen installs of such a lockfile always failed.
https://github.com/ruby/rubygems/issues/9907
https://gith... -
01:51 AM Ruby Revision 00227234 (git): [ruby/rubygems] Keep transitive-only override targets locked when the lockfile satisfies them
- converge_overrides_outside_dependencies marked every transitive-only version override as a changed dependency, so frozen installs always failed and a plain `bundle install` re-resolved the target as if it had been updated. Compare the lo...
-
01:34 AM Ruby Revision fde7c53c (git): [ruby/rubygems] Stop validating an unknown extension from writing a build log
- The specification policy looks extensions up through builder_for, so gem build with an extension no builder handles went through build_error. It crashed with a NameError because fileutils was not loaded yet, or wrote gem_make.out into a ...
-
01:34 AM Ruby Revision ccb52cb9 (git): [ruby/rubygems] Remove the build_info file on uninstall
- A reinstall of the same version without build arguments picked up the stale file, so the arguments of the uninstalled copy came back through Gem::Specification#build_args and were reused by gem pristine.
https://github.com/ruby/rubygems... - 12:50 AM Ruby Revision da155f30 (git): [ruby/rubygems] Identify ML-DSA by OID and gate tests by capability
- RubyGems currently assumes an SSL library either supports every ML-DSA
operation or none of them. It also identifies ML-DSA keys using
library-specific display names.
Identify ML-DSA keys using standard SubjectPublicKeyInfo OIDs. Separa... -
12:07 AM Ruby Revision 1000b68f (git): Fold USE_NTFS_ADS into USE_NTFS
- Since a094c99b74 the macro only switches isADS, and every use of isADS is inside `#if USE_NTFS`, so its non-NTFS definition was never referenced.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
09/24/2026
-
11:59 PM Ruby Revision e684c7ba (git): [DOC] Harmonize symlink methods
-
11:58 PM Ruby Revision cb29d480 (git): [DOC] Harmonize symlink? methods
-
11:57 PM Ruby Bug #22382 (Open): IO#write of a shareable String from multiple Ractors causes use-after-free
- When several Ractors `IO#write` the same shareable, heap-allocated (non-embedded) String at the same moment, Ruby frees the String's buffer while the String is still alive. A later GC sweep double-frees it and aborts.
**Reproduction**... -
11:55 PM Ruby Revision 36df189c (git): Fix rbimpl_atomic_size_fetch_add on 32-bit Windows
- It used InterlockedExchangeAdd64 on a 4-byte size_t, so the access also covered the following 4 bytes, which is the `tdata_unsafe_free_published` pointer for the caller in gc/default/default.c. Go through rb_atomic_t like the other size_...
-
11:46 PM Ruby Revision bfae855c (git): [ruby/zlib] Check that Zlib::OS_CODE is OS_WIN32 on Windows
- test_os_code only compared the written os_code with Zlib::OS_CODE itself, so it could not catch OS_CODE falling back to OS_UNIX.
https://github.com/ruby/zlib/commit/104cbd525f
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
11:46 PM Ruby Revision 05709757 (git): [ruby/zlib] Let create_header pick up OS_CODE
- mkmf's create_header ignores $defs entries that do not start with -D, so the leading space dropped OS_CODE from extconf.h. The in-tree build of ruby/ruby then fell back to OS_UNIX in zlib.c, and Zlib::OS_CODE was 3 on Windows.
https://g... - 11:34 PM Ruby Revision 5cd1287f (git): Prefer __has_include over HAVE_STDCKDINT_H for <stdckdint.h>
- HAVE_STDCKDINT_H records what configure's compiler saw when ruby was
built. __has_include asks the compiler that is compiling the header
right now. When the two compilers are the same they always agree, so
checking __has_include first ... -
11:20 PM Ruby Revision 5cfcd453 (git): mswin: Stop exporting strcasecmp and strncasecmp
- They were forwarded to `msvcrt.stricmp` and `msvcrt.strnicmp`, which msvcrt.dll does not export, so they could never be resolved. Extensions get `_stricmp` and `_strnicmp` through the macros in include/ruby/win32.h.
Co-Authored-By: Clau... -
11:06 PM Ruby Revision 21017bde (git): Fix race condition crash in IO::Buffer#set_string
- For strings larger than or equal to IO_BUFFER_BLOCKING_SIZE (which is 1KB),
IO::Buffer#set_string will perform the memmove without GVL. In this time,
another thread can resize the IO::Buffer object. In that case, the buffer
may be freed ... -
09:54 PM Ruby Feature #22236 (Closed): New API for adjustable JIT warmup
- Applied in changeset commit:git|c29739cb3ef483c215b0c13d30c96cc21b0f680b.
----------
Implement RubyVM::YJIT.max_compile_time_ns
[Feature #22236]
Allows to give a time budget to YJIT. When YJIT goes over the budget
it pauses compilatio... -
09:54 PM Ruby Revision c29739cb (git): Implement RubyVM::YJIT.max_compile_time_ns
- [Feature #22236]
Allows to give a time budget to YJIT. When YJIT goes over the budget
it pauses compilation until the budget is raised.
It is best effort, YJIT may go over, or have no choice but to compile
in some cases, but the goal i... - 08:46 PM Ruby Revision 03321869 (git): ZJIT: Don't allocate strings for backend labels (#19004)
- There is no sense in eagerly allocating a string; we either use a static
string ref or label a block by some combination of (HIR,LIR) pair. Just
store the information instead of allocating on the heap.
This is probably a very minor comp... -
08:05 PM Ruby Bug #22381 (Closed): MatchData assigned to $~ is incorrectly reused
- ```ruby
m = /a/.match("a").dup # dup a MatchData (has no "busy" flag set)
$~ = m # assign to $~
/b/ =~ "b" # perform a match that sets $~
p m
# "b" on Ruby 4.0 (and 1.8-2.7, incorrect)
# "a" on Ruby 3.0-3.4 (correct)
```
This i... - 06:19 PM Ruby Revision 1533c109 (git): Preserve compare_by_identity in some Set operations
- Backport of f069efc3f69a89188bab4ac70c690aecce59023b
Fixes [Bug #22174]
Co-authored-by: Jeremy Evans <code@jeremyevans.net> -
06:01 PM Ruby Revision ff03ecf3 (git): ZJIT: Print `PatchPoint` reference to `Insn::Snapshot` when printing snapshots
- So both the definition and the usage are shown. Note that this
is only when, say, `--zjit-dump-hir=all`, where both ends are present. - 05:54 PM Ruby Revision 24be314b (git): Enable incremental marking when the process has > 1 objspace
- Previously, major GC incremental marking was disabled (even on the main Ractor)
when more than 1 Ractor was running. By changing the WB implementation, we now
have it back. - 05:17 PM Ruby Revision 4133daa1 (git): Ractor: wake receiver waiters inside the send critical section
- ractor_send_basket used to enqueue the basket under the receiver's lock,
release it, and then re-take the same lock inside ractor_wakeup_all to wake
the receiver. Every sender to a Ractor contends on that one lock, so the
second acquisit... - 04:59 PM Ruby Revision f9b763af (git): ZJIT: Reduce the amount of memory required for profiles (#19000)
- `resize` might over-reserve space speculatively but we know we're only
going to see a certain number of operands at that opcode. So don't
over-reserve; allocate a vec of the exact size we want.
For a run of lobsters, takes `zjit_alloc_b... - 04:58 PM Ruby Revision 10cc9824 (git): ZJIT: Remove `chase_insn` in `fold_constants` for `StringEqual` (#18998)
- Remove `chase_insn` in `fold_constants` for `StringEqual`
`left` and `right` are already canonical operand IDs when `fold_constants`
checks them.
`canonicalize` runs immediately before `fold_constants`.It updates
operands when the opti... - 02:29 PM Ruby Revision 3676b957 (git): ZJIT: Add line number mappings in Comment (#18752)
- Add line number comments to HIR printouts if enabled. Trying this out. Might help for something like Compiler Explorer. Also helps for debugging.
Requires `--zjit-dump-hir-map` to avoid messing with the default printout.
```
plum% cat ... -
02:22 PM Ruby Revision 645a0718 (git): Increase sleep in fork bootstrap test
- There have been occasional failures on the OpenBSD CI machine in
this bootstrap test. There is a race condition in the test that
you can theoretically hit on a very slow machine, and the OpenBSD
CI machine is running in qemu software emu... -
02:22 PM Ruby Revision fd657df8 (git): Skip test_autoload_fork on OpenBSD RubyCI
- This test is flaky on OpenBSD RubyCI, probably due to the fact that
the OpenBSD RubyCI machine is a software emulated virtual machine
running on another virtual machine. The test runs fine on OpenBSD
in general, and seems to pass the maj... -
12:58 PM Ruby Revision ec9d3e21 (git): Remove the stale test
-
12:51 PM Ruby Revision 108a92ac (git): Remove repeated test runs from macOS CI
- Drop `--repeat-count=2` and its dedicated settings because parallel
runs add CI time without testing state carried across repetitions. -
12:51 PM Ruby Revision 9cbb4e67 (git): Disable repeat counts for parallel tests
- Ignore `--repeat-count` during parallel tests because fresh workers
cannot expose state carried over between repetitions. -
12:51 PM Ruby Revision 28ae8099 (git): Preserve jobserver limits across repeated test runs
- Keep the jobserver connection until all repetitions finish so that
later runs do not launch up to 256 workers without token limits. -
12:51 PM Ruby Revision 1f11ffae (git): Run GC in test workers before running suites
- Run `GC.start` in the process executing tests because collecting the
parent heap does not reclaim objects in parallel workers. -
12:01 PM Ruby Revision 0c20a6af (git): [DOC] Harmonize size? methods
-
11:56 AM Ruby Revision 42066076 (git): [DOC] Harmonize socket? methods (#18982)
-
11:44 AM Ruby Revision bf1a4ae0 (git): [DOC] Harmonize stat methods
-
11:43 AM Ruby Revision 49cb90a6 (git): [DOC] Harmonize path split methods
-
11:33 AM Ruby Feature #22304 (Closed): Add rb_warn_to_remove_at() for deprecation warnings shown by default
- Applied in changeset commit:git|611bb146b08978aacb26bf4a4e8390e699628350.
----------
[Feature #22304] Add rb_warn_to_remove_at and rb_warn_scheduled_deprecation
rb_warn_deprecated_to_remove_at warns only when Warning[:deprecated]
is en... -
11:33 AM Ruby Revision 611bb146 (git): [Feature #22304] Add rb_warn_to_remove_at and rb_warn_scheduled_deprecation
- rb_warn_deprecated_to_remove_at warns only when Warning[:deprecated]
is enabled, so a deprecation scheduled to warn by default in a later
version needed a hand-written rb_warn and a separate commit to switch.
rb_warn_to_remove_at emits ... -
11:31 AM Ruby Revision 6a30bcbf (git): marshal.c: embed load_arg.partial_objects
-
11:31 AM Ruby Revision 02bfa784 (git): marshal.c: embed `symbols` in load and dump args
-
11:31 AM Ruby Revision 177404c6 (git): marshal.c: embed `data` in load and dump args
-
11:31 AM Ruby Revision fb4dc15d (git): marshal.c: embed userdefs
-
11:31 AM Ruby Revision e9171824 (git): marshal.c: embed dump_arg.encodings
-
11:31 AM Ruby Revision 5a395d2a (git): marshal.c: embed `compat_tbl` in load and dump args
-
11:19 AM Ruby Revision ffa53140 (git): [DOC] Harmonize sticky? methods (#18987)
-
11:17 AM Ruby Revision a094c99b (git): Remove unreachable NTFS code from rb_file_expand_path_internal
- rb_file_expand_path_internal is compiled only without _WIN32, where USE_NTFS has been 0 since 7eb8d74f34 stopped enabling it on Cygwin [Bug #13008]. Forcing it on no longer even compiles, as the block still calls strrdirsep with three ar...
-
11:17 AM Ruby Revision 36c9a545 (git): Pass mb_enc to ntfs_tail as to chompdirsep
- ntfs_tail was the only path helper still deriving it from enc on its own after 6fb50434e3 made the callers decide.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
10:22 AM Ruby Revision 22d22128 (git): Clear temporary containers in `Enumerable#uniq`
- Clear temporary containers after extracting the result to avoid
retaining their contents through a captured block. -
10:22 AM Ruby Revision 34d2105d (git): Fix escaped blocks in `Enumerable#uniq`
- Keep the state for block-based `Enumerable#uniq` alive after it returns,
as `each` can retain and later invoke the internal block, making the
stack-allocated memo introduced in 29c669bb568 invalid. -
09:49 AM Ruby Feature #17548 (Closed): Need simple way to include symlink directories in Dir.glob
- Applied in changeset commit:git|ea2836f7ec905e4963b49ffdc550cdf3e82ad8c9.
----------
[Feature #17548] Allow `Dir.glob` to follow symlinks with `***`
Allow recursive matching through directory symlinks while stopping
at links to ancesto... -
09:48 AM Ruby Revision ea2836f7 (git): [Feature #17548] Allow `Dir.glob` to follow symlinks with `***`
- Allow recursive matching through directory symlinks while stopping
at links to ancestor directories to avoid cycles. -
08:55 AM Ruby Misc #22275: Ruby::Box support plan for RubyGems and Bundler
- I merged the following four, since they fix plain bugs such as crashes and need no design decision.
* https://github.com/ruby/ruby/pull/18704: `alias $new $old` in a box created a separate variable.
* https://github.com/ruby/ruby/pull/1... -
08:50 AM Ruby Bug #22380 (Closed): Ruby::Box: a GC while copying a class into a box crashes
-
08:50 AM Ruby Bug #22380 (Closed): Ruby::Box: a GC while copying a class into a box crashes
- This is a backport request for the following crash:
```
$ RUBY_BOX=1 ruby --disable-gems -W:no-experimental -e 'GC.stress = true; module Enumerable; def m; end; end'
-e:1: [BUG] try to mark T_NONE object (obj: 0x00000001042efe28 T_N... -
08:46 AM Ruby Revision 7d4b5ed5 (git): Fix use-after-free in Marshal.dump
- When the string buffer reaches BUFSIZ (8192 bytes), Marshal.dump will call
the write method on the IO object. This IO object can run arbitrary Ruby
code. If the object is a string, it writes the length of the string followed
by the bytes... -
08:19 AM Ruby Revision cc32a303 (git): [ruby/error_highlight] Use Thread::Backtrace::Location#syntax_tree when available
- https://github.com/ruby/error_highlight/commit/7755b9bff1
-
08:14 AM Ruby Revision 2e313000 (git): Run trace_var hooks for assignments in the box gvar table
- Under RUBY_BOX=1 an assignment in a user box, the main box included, only
updates the box-local table and never reaches the global entry, so hooks
registered with trace_var never run.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> -
07:39 AM Ruby Revision 5edccc38 (git): Win32: Drop `command.com` support
-
07:39 AM Ruby Revision c02373fb (git): win32: Now `mklink` is run through cmd.exe\n\nIt is included at 213b1add1ff300be0e375b8c792c9b0eb9f53981.
-
07:29 AM Ruby Revision 18b6bfdb (git): Use Kernel without test/unit in the classext GC stress test
- The Enumerable version did not crash an unfixed build on Linux. Kernel
does on both Linux and macOS, but only while nothing in the main box has
written to it yet, and loading test/unit already has. So run the code
through assert_in_out... -
07:29 AM Ruby Revision 44fff96b (git): Attach a box classext to its class before filling it in
- rb_class_duplicate_classext builds the whole copy first and the caller only
then puts it in the class's table, so a GC in the middle collects the tables
it has made and marking the class afterwards walks into a freed object. Put
the cla... -
07:04 AM Ruby Revision f7839b52 (git): Look up aliased globals in defined? by the shared ID in a box
- rb_gvar_set and rb_gvar_get key the box table by var->id, so defined? on an aliased name looked for a key that is never written and returned nil.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> -
07:04 AM Ruby Revision ac0debb1 (git): Fix global variable aliases in a box
- Under RUBY_BOX=1 the box-local gvar table is keyed by the name used for
access, so `alias $b $a` gives the two names separate slots and they
stop being synonyms. Key it by the ID the shared rb_global_variable
was created with instead.
... -
06:58 AM Ruby Feature #22379 (Open): Remove prism mismatch warning from `#syntax_tree`
- #21795 added `#syntax_tree` for a few objects. Currently it is implemented in a way that uses the prism gem, using node_id. Because it is theoretically possible that node_ids from the internal cruby version of prism don't match with the ...
-
06:25 AM Ruby Revision 85fb0e52 (git): [ruby/openssl] ssl: clear error queue before raising SystemCallError
- Clear the OpenSSL error queue when an OpenSSL function fails with
SSL_ERROR_SYSCALL. ruby/openssl methods are expected not to leave stale
entries in the error queue.
While this no longer appears to happen with OpenSSL >= 3.0, LibreSSL
a... -
06:07 AM Ruby Revision a6505b6b (git): [ruby/rubygems] Remove unused rb_data_type_struct_extended? spec helper
- It was only used to skip the Rust `cargo test` example while magnus could not build against Ruby master, and that skip went away with the magnus 0.9 template update.
https://github.com/ruby/rubygems/pull/9904
https://github.com/ruby/ru... -
06:02 AM Ruby Bug #22174: Set operations (&, ^, collect!, flatten, classify, divide) do not preserve compare_by_identity
- 4.0 backport PR: https://github.com/ruby/ruby/pull/18992
-
03:04 AM Ruby Bug #22174 (Closed): Set operations (&, ^, collect!, flatten, classify, divide) do not preserve compare_by_identity
- Fixed in commit:f069efc3f69a89188bab4ac70c690aecce59023b
-
05:27 AM Ruby Revision 5002cd04 (git): Cover the other callers that reach the same scan
- File.expand_path walks past the root through its own call site, and
Pathname#sub_ext skips the length check File.extname does first, so both
reach the backward scan by routes the extname test does not exercise. -
05:27 AM Ruby Revision 323f4251 (git): Fix out-of-bounds read in strrdirsep for all-separator paths
- The fast path added in 11d29d32d2 skips trailing separators without a
lower bound, so a path made only of separators walks the cursor past the
start of the buffer and keeps reading until it meets a byte that is not
a separator. The retur... -
05:04 AM Ruby Revision 50e2da17 (git): remove unnecessary Inline keyword
- Oddly, when building with msvc (19.44), the linking fails only while disabling optimization (using the /Od option).
```
linking miniruby.exe
Creating library miniruby.lib and object miniruby.exp
set.obj : error LNK2019: unresolved ext... - 04:48 AM Ruby Revision a3c583af (git): [ruby/rubygems] update magnus version in rust extension gem template
- https://github.com/ruby/rubygems/commit/666723ae10
-
03:33 AM Ruby Revision 3b2dd877 (git): win32: Fix the size of extended fd_set on x64
- The size assumed that `fd_array` follows a 4-byte `fd_count`, but on x64 SOCKET is 8 bytes and `fd_array` starts at offset 8. Filling the last slot of a set grown to 128, 192, ... sockets wrote 4 bytes past the allocation.
Co-Authored-B... -
03:33 AM Ruby Revision b96ef541 (git): Use of explicit parentheses
- Apply suggestion from @nobu
Co-authored-by: Nobuyoshi Nakada <nobu.nakada@gmail.com> -
03:33 AM Ruby Revision 73481d73 (git): mswin: enable flexible array support for msvc
- msvc supports flexible array as it's language extensions.
The /Za msvc compiler option disables this and other extensions, but it is not necessary to consider it.
The Windows SDK headers contain anonymous unions/structs, and using /Za ma... -
03:33 AM Ruby Revision 98e99961 (git): mswin: avoid using a bitfield basen on enum type
- Using the option (one of -std:[c11|c17|clatest]) to enable standard C support in msvc causes the following error:
[BUG] vm_call_method: unsupported method type (-7)
Simply disable it. -
03:22 AM Ruby Revision 354f4829 (git): Fix wrong review comment when modifying `prism_compile.c`
- It should delete `ruby/prism` now
- 03:01 AM Ruby Revision f069efc3 (git): Preserve compare_by_identity in some Set operations
- Adjust the specs to handle the backwards compatibility breakage.
While we will backport this to Ruby 4.0, to avoid temporary
breakage, leave Ruby 4.0 behavior unspecified until the fixes
are backported to it.
Co-authored-by: Jeremy Evan... - 02:30 AM Ruby Revision f55f1957 (git): Bump ruby/setup-ruby in the github-actions group across 1 directory
- Bumps the github-actions group with 1 update in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.324.0 to 1.325.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- ... -
01:04 AM Ruby Bug #22339 (Closed): Ruby::Box: crash / hang at VM shutdown with RUBY_FREE_AT_EXIT=1
- Applied in changeset commit:git|4617d60fe4b5c18e7350d37b2f2c4508c62df708.
----------
[Bug #22339] Skip classes already freed while freeing a box
`RUBY_FREE_AT_EXIT=1` frees every object in an arbitrary order, so a
class a box refers to... -
12:22 AM Ruby Bug #22339: Ruby::Box: crash / hang at VM shutdown with RUBY_FREE_AT_EXIT=1
- I was already aware of this, and https://github.com/ruby/ruby/pull/18710 fixes it by skipping classes that were already freed when a box is freed.
The ASAN double free in the description comes from `ruby_4_0` and has a separate cause. I... -
01:04 AM Ruby Revision 4617d60f (git): [Bug #22339] Skip classes already freed while freeing a box
- `RUBY_FREE_AT_EXIT=1` frees every object in an arbitrary order, so a
class a box refers to can go before the box itself, and freeing a class
already frees its classext for that box. The box then reached rb_bug
with a T_NONE object, and ... -
12:09 AM Ruby Revision 1c91d9bc (git): ZJIT: Exit with the block arg on the stack from SendDirect args (#18983)
- 12:06 AM Ruby Revision 634de041 (git): [ruby/strscan] Don't match from the middle of a character
- (https://github.com/ruby/strscan/pull/219)
`#pos=` accepts an arbitrary byte offset, so the scan position can fall
in the middle of a multi-byte character such as UTF-16BE. Matching from
there made Onigmo read a whole character starting...
09/23/2026
- 10:30 PM Ruby Revision d7bd382a (git): ZJIT: Inline String#to_sym to StringIntern (#18981)
- Closes https://github.com/Shopify/ruby/issues/1061.
Also add a test to make sure `String#intern` generates the same HIR.
### Benchmarks
I had AI create 4 new microbenchmarks for this change and also run `protoboeuf-encode`.
They look... -
10:29 PM Ruby Revision 3ebfbfce (git): ZJIT: Don't publish ec->cfp before a direct block call's entry (#18979)
-
10:05 PM Ruby Revision 882e54f4 (git): ZJIT: Treat `getlocal` and `setlocal` uniformly with `*_WC_*` variants
- Previously, `setlocal level=0` did not set the local in the frame state
during HIR build, unlike `setlocal_WC_0`. `getlocal` and `getlocal_WC_0`
had the same issue.
I don't know if it's possible to trigger an ZJIT issue with default
ise... -
10:05 PM Ruby Revision a8bc3cf5 (git): ZJIT: Add test_setlocal_getlocal_no_operands_unification
-
10:03 PM Ruby Revision 68bc899b (git): Sync prism
- There were some difficulties after https://github.com/ruby/prism/pull/4223 was merged because
the excludes were out of sync. - 09:56 PM Ruby Revision 2ea36fd6 (git): ZJIT: Specialize sends with a Proc block arg into SendDirect (GH-18180)
- Guard the block arg of `foo(&blk)` when profiling shows it is exactly
a Proc, and pass it directly as the callee frame's block handler
instead of falling back to a dynamic send. - 08:36 PM Ruby Revision 9635fc03 (git): Don't allow writing to locals in cexpr (#18873)
- The JIT optimizer sees an `invokebuiltin` and would like to assume that calling it does not write back to the frame. A `Primitive` should never write to the frame by taking a pointer to a local, so this PR removes that functionality.
Pa... -
07:50 PM Ruby Revision 2aeeb96c (git): ZJIT: Avoid calling rb_yarv_str_eql_internal with non-String objects (#18971)
- 06:40 PM Ruby Revision d8177d64 (git): ZJIT: Move string encoding flags loading to HIR (#18894)
- Closes https://github.com/Shopify/ruby/issues/1051
The LIR generated without stats is the same, but now the `LoadField` can be deduped.
Same as #18251 but without moving the `xor` to the HIR.
Generate HIR is now:
```
v31:CU... -
06:29 PM Ruby Revision 15dd95cd (git): auto_request_review.yml: Sync "jit" label targets (#18895)
-
06:24 PM Ruby Bug #22335: Stack corruption with >31 keyword args and refined Integer#==
- > Not an area of ruby I'm very familiar with, but I think perhaps we should also be extending sp in vm_callee_setup_arg and vm_call_iseq_setup_kwparm_kwarg?
These don't extend SP because they're fast paths that try to do minimal work... -
04:32 AM Ruby Bug #22335: Stack corruption with >31 keyword args and refined Integer#==
- ruby_3_4 commit:41e214d7100100a43c469e2628403d6916d1f0f8 merged revision(s) commit:d87ffb271a80fb108de3465d12ada829f3c130af.
-
04:47 PM Ruby Revision d74c656b (git): Document Range attributes begin and end
-
12:36 PM Ruby Revision 74856fbf (git): Use identity sets to track unspecified keyword arguments
- Keyword tracking only needs membership, so replace identity hashes
with identity sets to avoid storing unused values. Add `rb_set_p`
for the type assertion in `vm_check_keyword`.
Add benchmarks for 31, 32 and 128 keyword parameters wit... -
11:16 AM Ruby Bug #22378 (Closed): `Ractor::IsolationError` in code not using Ractors
- ```rb
# Reduced from the `httpx` gem
@var = Class.new.freeze.dup
@var.instance_variable_set(:@test, 123)
```
I expect this code to succeed. dup returns an unfrozen copy, so I should be able to set instance variables on it. However... -
10:12 AM Ruby Revision 94285c5c (git): [DOC] `Encoding.locale_charmap` never returns nil (#18943)
-
10:00 AM Ruby Revision 4a71c493 (git): [ruby/mmtk] Bump to Rust 2024 edition
- https://github.com/ruby/mmtk/commit/2801d95aa4
-
09:17 AM Ruby Revision 420a1dee (git): [DOC] Add no argument example to `module_function`'s doc (#18962)
-
08:20 AM Ruby Bug #22254: [Prism] Clang UBSan reports NULL/0 memcpy while serializing empty strings
- Thank you very much for this.
-
07:45 AM Ruby Bug #22254 (Closed): [Prism] Clang UBSan reports NULL/0 memcpy while serializing empty strings
- Fixed by https://github.com/ruby/ruby/commit/8cdc7b59571dd5ea4fc08638e88255d3f43d2e60
-
07:42 AM Ruby Revision 8cdc7b59 (git): [ruby/prism] [Fix https://github.com/ruby/prism/pull/22254] Put real
- storage behind `PM_STRING_EMPTY`
(https://github.com/ruby/prism/pull/4228)
Some places memcpy the source, and NULL there is undefined behaviour.
Fixes https://bugs.ruby-lang.org/issues/22254
https://github.com/ruby/prism/commit/d0b36c... -
05:53 AM Ruby Revision 852b2434 (git): Fix use-after-free in String#unpack
- If the source string is modified in the block of String#unpack, it can
cause an use-after-free. For example, the following script crashes:
fmt = "A" * 1_000_000
str = "C" * 1_000_000
str.unpack(fmt) { fmt.clear } -
05:36 AM Ruby Bug #22377 (Closed): compile.c: `getlocal` not turned into `getlocal_WC_0`
- Applied in changeset commit:git|0fab30f723810af1608d2162e2aef32b44a1ee3a.
----------
compile.c: ensure swapped element isn't skipped
[Bug #22377]
When we statically resolve a `swap` we need to make sure the element
we reordered will r... -
04:10 AM Ruby Bug #22377: compile.c: `getlocal` not turned into `getlocal_WC_0`
- Thanks for the repro, I think I know what's going on, I'll look into it.
-
05:36 AM Ruby Revision 0fab30f7 (git): compile.c: ensure swapped element isn't skipped
- [Bug #22377]
When we statically resolve a `swap` we need to make sure the element
we reordered will receive its optimization pass. -
05:32 AM Ruby Revision 592f1ffd (git): Bump v3.4.11.
-
04:32 AM Ruby Bug #22340: Win32: File.stat succeeds on symbolic-link loops on Windows
- ruby_3_4 commit:7bbe8e88007f8283a421cb31db86da32076126a6 merged revision(s) commit:ad23fd4a519fde4fc96c7326fb9b0347cbc347b8.
-
04:32 AM Ruby Bug #22330: heap uaf from string.encode()
- ruby_3_4 commit:75309143a8494abd682bdd23f3b18ecc2e48a2e4 merged revision(s) commit:cb302881629f997f403e705425f69e5f6b0741ac, commit:c914aeb622ce7337223cd5c23f30daf9f7d3e7c4.
-
04:31 AM Ruby Bug #22338: [Backport] win32: create directory symlinks for relative directory targets
- ruby_3_4 commit:93d1c2d7c3782cfbe0448849bd2cb79ce66c3860 merged revision(s) commit:ee786598f10c6def72265fb7105fe505f563f52f, commit:54f254aa41eb624429e6b884c0a6381eeeac50d0, commit:15dbb08ba8b69877c8012e0f5950f3f26a3abffe, commit:249de20...
-
04:30 AM Ruby Bug #22338: [Backport] win32: create directory symlinks for relative directory targets
- MEMO: related commit hashes.
commit:ee786598f10c6def72265fb7105fe505f563f52f
commit:54f254aa41eb624429e6b884c0a6381eeeac50d0
commit:15dbb08ba8b69877c8012e0f5950f3f26a3abffe
commit:249de200d5be1f1d1f936e40949a6b48ac9b6e25 -
04:30 AM Ruby Revision 93d1c2d7 (git): merge revision(s) ee786598f10c6def72265fb7105fe505f563f52f, 54f254aa41eb624429e6b884c0a6381eeeac50d0, 15dbb08ba8b69877c8012e0f5950f3f26a3abffe, 249de200d5be1f1d1f936e40949a6b48ac9b6e25: [Backport #22338]
- [PATCH] [Bug] win32: create directory symlinks for relative directory targets
File.symlink decided whether to create a directory symlink by calling
GetFileAttributesW on the target as given, which resolves a relative
... -
04:27 AM Ruby Revision 41e214d7 (git): merge revision(s) d87ffb271a80fb108de3465d12ada829f3c130af: [Backport #22335]
- [PATCH] [Bug #22335] Use identity hashes for keyword argument tracking
With more than 31 keyword arguments, tracking unevaluated defaults
uses an integer-keyed Hash whose collisions can invoke methods when
`Integ... -
04:24 AM Ruby Revision 7bbe8e88 (git): merge revision(s) ad23fd4a519fde4fc96c7326fb9b0347cbc347b8: [Backport #22340]
- [PATCH] [Bug #22340] Fix stat on symbolic-link loops on Windows
Preserve `ELOOP` instead of hiding symbolic-link resolution errors
with the file-enumeration fallback, so existence checks return false. -
04:23 AM Ruby Revision 75309143 (git): merge revision(s) cb302881629f997f403e705425f69e5f6b0741ac, c914aeb622ce7337223cd5c23f30daf9f7d3e7c4: [Backport #22330]
- [PATCH] Fix memory leak of transcoding when fallback raises
When the fallback function in transcode_loop raises, it will leak the memory
in rb_econv_t. The following script reproduces the leak:
10.times do
... -
04:05 AM Ruby Revision 27be6ccd (git): ZJIT: Avoid creating IseqPayload on rb_zjit_iseq_free (#18953)
- 02:41 AM Ruby Revision 8c0eb987 (git): Bump taiki-e/install-action
- Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).
Updates `taiki-e/install-action` from 2.87.16 to 2.87.17
- [Release notes](https://github.com/taiki-e... -
12:36 AM Ruby Revision bb382ae5 (git): Fix use-after-free in Time.new when string modified
- The precision in Time.new calls to_int which can modify the string passed
into Time.new. This can cause an use-after-free. For example, the following
script crashes:
str = "2000-01-01 00:00:00" + "0" * 1_000_000
obj = Object.new... -
12:03 AM Ruby Revision b20a1ab6 (git): [DOC] Harmonize file size methods
-
12:02 AM Ruby Revision ffc14da7 (git): [DOC] Harmonize setuid? methods (#18965)
-
12:01 AM Ruby Revision f016ece9 (git): [DOC] Harmonize setgid? methods (#18963)