Activity
From 09/19/2026 to 09/25/2026
Today
-
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: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 (Open): 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: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 (Open): 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 (Open): `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)
09/22/2026
- 11:20 PM Ruby Revision 59bd0509 (git): ZJIT: Change HasType into CondBranchHasType (#18633)
- We use `HasType`+`CondBranch` a lot—it is how we do polymorphic dispatch in HIR—so it's pretty hot. Without smarter instruction fusion/instruction selection, this generates a lot of code. Kokubun identified this in https://github.com/Sho...
-
11:17 PM Ruby Bug #22377 (Closed): compile.c: `getlocal` not turned into `getlocal_WC_0`
- Missed by the "operands_unification" pass, somehow.
See 0023 below:
```text
$ ./miniruby --parser=parse.y --dump=insns -e '
assign = ->(outer) {
m = Module.new
m.set_temporar... - 10:15 PM Ruby Revision dcbf89e0 (git): ZJIT: Make LIR Abort a terminator (#18967)
- It's an abrupt end to a block, but it definitely ends the block. No need
to put a return instruction after it. -
09:37 PM Ruby Feature #22376 (Open): Undefine the allocator for Class
- Uninitialized classes, created by `Class.allocate`, are a recurring source of bugs (most recently #22341). Every place that inspects a class's superclass chain has to check whether the class has been initialized, and it's easy to forget ...
- 09:18 PM Ruby Revision 7e0d49ae (git): ZJIT: Add HIR comment to terminators too (#18890)
- We previously only had this in `gen_insn` which left terminators
un-commented. -
08:10 PM Ruby Bug #22375 (Open): `Time.new(String)` can disagree with itself about the date
- `Time.new("2026-02-30T00:00:00Z")` returns a `Time` object that is internally inconsistent.
It shows as Feb 30 or Mar 2 depending on what methods are called:
```ruby
t = Time.new("2026-02-30T00:00:00Z") # => 2026-02-30 00:00:00 UTC
... - 07:52 PM Ruby Revision e77b7b6f (git): ZJIT: Specialize Struct class .new (#18835)
- We can use `ObjectAllocClass` for Structs because they are basically
a `__members__` ivar lookup for sizing plus the default allocator.
Requires #18888 to make sure the constructor does not raise. -
07:06 PM Ruby Revision bf4ab046 (git): [ruby/prism] Move PRISM_NODISCARD to the correct position, again
- (https://github.com/ruby/prism/pull/4232)
Followup to https://github.com/ruby/prism/commit/ba16ae22561179998e4208e4c37262b47f693c11
I can't run rake `cargo:test`:
```
$ cargo build
Compiling ruby-prism-sys v1.9.0 (ruby-prism/rust/ru... -
05:20 PM Ruby Bug #22188: addr2line doesn't find symbols when compiled with GCC LTO
- It might be worth noting for anyone that wants to try this, if you do LTO with fat LTO objects and a static build (as described at the top) this will make native extension compilation much slower.
You can speed this up by stripping t... - 04:36 PM Ruby Revision 8d4efc14 (git): ZJIT: Elide Kernel#dup for more classes (#18872)
- `rb_obj_dup` skips immediates:
```c
VALUE
rb_obj_dup(VALUE obj)
{
VALUE dup;
if (special_object_p(obj)) {
return obj;
}
// ...
}
static inline int
special_object_p(VALUE obj)
{
if (SPECIAL_CONST_P(obj)) re... -
04:22 PM Ruby Bug #22342: IO#gets can ignore the limit argument in some edge cases
- I've opened a GitHub PR for this: https://github.com/ruby/ruby/pull/18961
-
04:19 PM Ruby Bug #22342 (Open): IO#gets can ignore the limit argument in some edge cases
- `io.gets(rs, limit)` ignores the `limit` value and reads until `rs` is found or EOF, if the `limit`-th byte of the stream matches `rs`'s last byte and:
1. The potential start of the record separator, the `limit-rs.bytesize`-th byte of... - 03:08 PM Ruby Revision 720994eb (git): ZJIT: Fold Class#superclass (#18682)
- I saw that YJIT has a fast-path for this so I figured we should too.
-
02:58 PM Ruby Revision cec5c97b (git): [ruby/fileutils] Add tests for `FileUtils.options_of`
- Fix https://github.com/ruby/fileutils/pull/195
https://github.com/ruby/fileutils/commit/b2d9b72739 -
02:58 PM Ruby Revision 6a2c8323 (git): [ruby/fileutils] Add tests for `FileUtils.options`
- Fix https://github.com/ruby/fileutils/pull/194
https://github.com/ruby/fileutils/commit/8b1efe473e -
02:58 PM Ruby Revision 7a34d74c (git): [ruby/fileutils] Add tests for `FileUtils.have_option?`
- Fix https://github.com/ruby/fileutils/pull/193
https://github.com/ruby/fileutils/commit/6fd04f3cea -
02:58 PM Ruby Revision ca501755 (git): [ruby/fileutils] Add tests for `FileUtils.commands`
- Fix https://github.com/ruby/fileutils/pull/192
https://github.com/ruby/fileutils/commit/df83e4bb04 -
02:58 PM Ruby Revision ca76cabb (git): [ruby/fileutils] Add tests for `FileUtils.collect_method`
- Fix https://github.com/ruby/fileutils/pull/191
https://github.com/ruby/fileutils/commit/ff78cfd3a4 -
02:58 PM Ruby Revision a809b598 (git): [ruby/fileutils] Use a missing target in the dangling symlink test
- Windows reports self-referential links as existing, so use a missing
target to test a dangling link rather than a symbolic-link loop.
https://github.com/ruby/fileutils/commit/803fe3be07 -
02:58 PM Ruby Revision c433f977 (git): [ruby/fileutils] Test symbolic links and verify the `symlink` alias
- Cover single, multiple, and dangling links through `ln_s`, keeping
valid-link tests available where dangling links are unsupported.
Fix https://github.com/ruby/fileutils/pull/190
https://github.com/ruby/fileutils/commit/189aefb679 -
02:58 PM Ruby Revision 52c1a16c (git): [ruby/fileutils] Test file removal and verify the `safe_unlink` alias
- Cover removal of existing and missing files through `rm_f` and
verify the `safe_unlink` alias.
Fix https://github.com/ruby/fileutils/pull/189
https://github.com/ruby/fileutils/commit/902bcce36b -
02:58 PM Ruby Revision 316b514d (git): [ruby/fileutils] Test tree removal and verify the `rmtree` alias
- Cover removal of existing and missing trees through `rm_rf` and
verify the `rmtree` alias.
Fix https://github.com/ruby/fileutils/pull/188
https://github.com/ruby/fileutils/commit/07cc858f16 -
02:58 PM Ruby Revision 8e05d474 (git): [ruby/fileutils] Test file moves and verify the `move` alias
- Check the result and effects of `mv` and verify the `move` alias.
Fix https://github.com/ruby/fileutils/pull/187
https://github.com/ruby/fileutils/commit/3bed6e74a1 -
02:58 PM Ruby Revision 142a7c45 (git): [ruby/fileutils] Test directory creation results and verify aliases
- Check `mkdir_p` return values and verify the `makedirs` and `mkpath`
aliases without duplicating directory creation tests.
Fix https://github.com/ruby/fileutils/pull/186
https://github.com/ruby/fileutils/commit/72ff748e26 -
02:58 PM Ruby Revision e657f57f (git): [ruby/fileutils] Test hard-link identity and verify the `link` alias
- Verify that `ln` creates hard links and that `link` remains an alias.
Fix https://github.com/ruby/fileutils/pull/185
https://github.com/ruby/fileutils/commit/46db9d557b -
02:58 PM Ruby Revision b4188315 (git): [ruby/fileutils] Verify `getwd` as an alias of `pwd`
- Avoid duplicating working-directory coverage already in `test_pwd`.
Fix https://github.com/ruby/fileutils/pull/183
https://github.com/ruby/fileutils/commit/d937a3d5ba -
02:58 PM Ruby Revision cd35f4b6 (git): [ruby/fileutils] Test directory changes and verify the `chdir` alias
- Cover directory changes, block behavior, and verbose output through
`cd`, and verify that `chdir` remains an alias.
Fix https://github.com/ruby/fileutils/pull/182
https://github.com/ruby/fileutils/commit/8476509760 -
02:58 PM Ruby Revision 54f5107f (git): [ruby/fileutils] Add tests for `FileUtils.compare_stream`
- Fix https://github.com/ruby/fileutils/pull/181
https://github.com/ruby/fileutils/commit/4b041318e9 -
02:58 PM Ruby Revision 9ab64599 (git): [ruby/fileutils] Add file comparison tests and verify aliases
- Cover equal and different file contents in `test_cmp` and verify
that `compare_file` and `identical?` remain aliases.
Fix https://github.com/ruby/fileutils/pull/180
Fix https://github.com/ruby/fileutils/pull/184
https://github.com/ruby... -
02:51 PM Ruby Bug #22341: Class#superclass can crash the interpreter in debug build
- Great catch! This is my mistake from https://github.com/ruby/ruby/commit/e01e89f55c82be8db5d8ccbf305ee38e3769e582
It should be safe to remove that assertion, but I also think it should probably be forbidden to include on an uninitiali... -
02:20 PM Ruby Bug #22341 (Open): Class#superclass can crash the interpreter in debug build
- While implementing this in ZJIT, @nirvdrum reported, and I investigated, a potential interpreter crash:
module M; end
C = Class.allocate
C.include M
C.superclass
In a debug build, this crashes:
plum% ./bui... -
02:34 PM Ruby Bug #22340 (Closed): Win32: File.stat succeeds on symbolic-link loops on Windows
- Applied in changeset commit:git|ad23fd4a519fde4fc96c7326fb9b0347cbc347b8.
----------
[Bug #22340] Fix stat on symbolic-link loops on Windows
Preserve `ELOOP` instead of hiding symbolic-link resolution errors
with the file-enumeration f... -
01:48 PM Ruby Bug #22340 (Closed): Win32: File.stat succeeds on symbolic-link loops on Windows
- On Windows, `File.stat` succeeds on a self-referential symbolic link instead of raising `Errno::ELOOP`, and `File.exist?` returns `true`. Opening the same link raises `Errno::ELOOP`.
I noticed this while adding symbolic-link tests to... -
01:56 PM Ruby Revision ad23fd4a (git): [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. - 01:48 PM Ruby Revision 7ba699ae (git): Make fibers RUBY_TYPED_THREAD_SAFE_FREE
- Now fibers can be collected by multiple ractors at once when those Ractors
are running local GCs. Fibers are created in the Ractor that owns them, so
if multiple Ractors have unmarked fibers during local GC sweeping, we can
now collect t... - 01:39 PM Ruby Revision 1070504b (git): Make non-Array Struct __members__ a bug (#18888)
- We should not ever hit this from Ruby code; user code cannot modify
ivars that do not start with @.
This makes `num_members` leaf and therefore Struct class allocation also
leaf. - 01:36 PM Ruby Revision ce75c108 (git): Allow disabling `zjit-stats` in tool/zjit_diff.rb (#18893)
- When running benchmarks, sometimes there is a overhead in the statistics collection, so it can be useful to disable `zjit-stats`.
In my case I was investigating https://github.com/Shopify/ruby/issues/1051 and was confused why I was not ... -
09:39 AM Ruby Revision 5721bcee (git): merge revision(s) 1007084edc4251a778746ddbd80ac562526758d1: [Backport #9932]
- [PATCH] Fix out-of-bounds in Array#permutation when array modified
Calling to_int on the count may run Ruby code that modifies the array.
This can cause an out-of-bounds in Array#permutation. For example, the
fol... -
09:39 AM Ruby Revision c17e24d8 (git): merge revision(s) 88bfa3005cdc58515630ad4e2b3e9f9eb09563d4:
- [PATCH] Fix buffer overflow in String#rpartition
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The conversion of the pattern to string can cause the string to b... -
07:03 AM Ruby Revision d41370ae (git): Fix crash in Dir#each/each_child/scan when closed
- If the Dir object is closed in the block of Dir#each/each_child/scan, then
it will crash because dirp->dir will be a NULL pointer. The following
script demonstrates the crash:
d = Dir.open("/")
d.each { d.close } -
06:01 AM Ruby Revision 07027541 (git): [DOC] Mark up the man page references of `access` and `eaccess`
-
05:35 AM Ruby Revision 3a21e4b4 (git): [DOC] Fix `File::Stat` name
- Also simplify the notation of the special const reserved words.
-
05:04 AM Ruby Revision d1d487f4 (git): [DOC] Clarify that `File.exist?` follows symbolic links
- Show that dangling symbolic links return false and clean up the
example files.
Follow up on ruby/ruby#18571. -
03:10 AM Ruby Revision 1007084e (git): Fix out-of-bounds in Array#permutation when array modified
- Calling to_int on the count may run Ruby code that modifies the array.
This can cause an out-of-bounds in Array#permutation. For example, the
following code crashes:
ary = (1..1_000).to_a
obj = Object.new
obj.define_singleto... -
03:05 AM Ruby Revision 6723796d (git): [DOC] Harmonize path methods- #18936
- 02:11 AM Ruby Revision 6454569c (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.323.0` | `1.324.0` |
| [github/codeql-action/init](https://github...
09/21/2026
-
11:54 PM Ruby Revision 88bfa300 (git): Fix buffer overflow in String#rpartition
- The conversion of the pattern to string can cause the string to be modified.
This can cause a buffer overflow since it uses the original length of the
string. For example, the following script reports a buffer overflow with
ASAN:
s ... -
04:59 PM Ruby Revision 1f717ae3 (git): [ruby/mmtk] Always use fixed heap for testing against NoGC
- https://github.com/ruby/mmtk/commit/3f94f904eb
-
04:46 PM Ruby Bug #22339 (Closed): Ruby::Box: crash / hang at VM shutdown with RUBY_FREE_AT_EXIT=1
- ## Summary
With `RUBY_BOX=1` and `RUBY_FREE_AT_EXIT=1`, Ruby crashes or hangs while freeing boxes at VM
shutdown. No user box needs to be created: the built-in boxes are enough.
`box_entry_free()` walks `box->classext_cow_classes`... -
04:20 PM Ruby Revision 9aea6bb2 (git): [DOC] Exclude `require` in RubyGems not to override the original
- Fix ruby/rdoc#1592.
-
03:58 PM Ruby Revision f07f65b7 (git): [PRISM] Source file no longer static literal
-
02:42 PM Ruby Revision 41e04ff5 (git): [ruby/prism] Stop marking PM_SOURCE_FILE_NODE as static
- Ref: https://bugs.ruby-lang.org/issues/17593.
Because `__FILE__` is currently considered a static literal,
it's entirely evaluated during compilation.
The problem is that ISeqs can be serialized and reloaded later,
but since `__FILE__`... -
02:33 PM Ruby Bug #22335: Stack corruption with >31 keyword args and refined Integer#==
- Thank you for the prompt fix.
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`? Getting rid of the method dispatch fixes the ... - 01:55 PM Ruby Revision 61de3dd7 (git): [ruby/openssl] Make ruby/openssl types RUBY_TYPED_THREAD_SAFE_FREE
- It's safe to free these types during Ractor-local GC in Ruby 4.1. We've
seen the freeing of this type show up in profiles before.
https://github.com/ruby/openssl/commit/e481c6408f
Co-authored-by: Kazuki Yamaguchi <k@rhe.jp> -
12:40 PM Ruby Feature #22068: Adding post-quantum cryptography (PQC) support across Ruby standard libraries
- Note that I sent PR to support SLH-DSA in ruby/openssl. However, I don't have a plan to add the SLH-DSA tests across the standard libraries except for ruby/openssl. Because I think SLH-DSA is a kind of unpopular PQC algorithm used for th...
-
12:12 PM Ruby Bug #22204 (Closed): Kernel#require documentation pulls from RubyGems' version of method instead of core version (stable releases only)
- I agree that this is worth backporting, I did https://github.com/ruby/ruby/pull/18945 for 4.0. Backport for 3.4 is fine too I guess, it someone wants to do it.
-
12:01 PM Ruby Revision eb08b745 (git): [ruby/mmtk] Keep track of pending pages in RubyHeapTrigger
- We need to keep track of pending pages in RubyHeapTrigger otherwise a large
allocation may cause infinite number of GCs to be ran since it will always
appear that we have enough space in the heap (and thus the heap won't grow)
but still ... -
10:39 AM Ruby Bug #21870: Regexp: Warnings when using slightly overlapping \p{...} classes
- @jneen you should probably open this as a PR to ruby, yes. The pr to upstream can happen after.
Currently ruby has no tests for duplicate character classes I think, so it would be nice to add some tests in that PR to show it still war... -
09:14 AM Ruby Bug #22325 (Closed): out of bounds read in array
- Applied in changeset commit:git|8befacf9e6c898a0f79dcb53bdd2e4cea24e0d1c.
----------
Guard against oob read in rb_ary_aref1
When the array is shrunk during rb_arithmetic_sequence_beg_len_step,
ary_subseq_len returns -1. Return an empty... -
09:14 AM Ruby Revision 8befacf9 (git): Guard against oob read in rb_ary_aref1
- When the array is shrunk during rb_arithmetic_sequence_beg_len_step,
ary_subseq_len returns -1. Return an empty array instead of passing the
negative length to ary_make_partial or ary_make_partial_step.
[Bug #22325] -
09:10 AM Ruby Revision 09a5f2ef (git): [ruby/fileutils] Add tests for `FileUtils.touch`
- Fix https://github.com/ruby/fileutils/pull/177
https://github.com/ruby/fileutils/commit/86278df2f7 -
08:58 AM Ruby Revision cf2b80c0 (git): [ruby/fileutils] Workaround for symlink bug on Windows
- Fixed by ruby/ruby#17545.
https://github.com/ruby/fileutils/commit/9e957c2330 -
08:18 AM Ruby Revision 044f08d2 (git): merge revision(s) edce07a8c93895be8eeb2d27400aa138cc8a3cf9:
- [PATCH] Fix use-after-free in String#% when array modified
If the array object passed into String#% is modified during conversion
(such as via to_s, to_i, to_f, etc.) then it can be a use-after-free if
the buffer... -
08:16 AM Ruby Revision d8ada47f (git): merge revision(s) d4d078672943ffd3c344c431c631a8666a5a3226:
- [PATCH] Fix out-of-bounds access in String#byteindex/byterindex
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
If the source string is modified when converting o... -
07:22 AM Ruby Feature #18401 (Feedback): Rework `require_relative` to add the "current path" on `$LOAD_PATH`
- vo.x (Vit Ondruch) wrote:
> My proposal is to change the `require_relative` in following way:
> ...
Do you mean `require_relative` should load the file in the current working directory?
I don't think it is reasonable behavior.
`requi... -
07:03 AM Ruby Bug #22338 (Closed): [Backport] win32: create directory symlinks for relative directory targets
- https://github.com/ruby/ruby/pull/17545
-
06:29 AM Ruby Revision d4d07867 (git): Fix out-of-bounds access in String#byteindex/byterindex
- If the source string is modified when converting offset to an integer,
then there could be an out-of-bounds access because the length of the
string is captured before to_int is called. For example, the following
script triggers an ASAN e... -
05:31 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- > Thanks, that makes sense. At the moment a locked buffer can be frozen, and #locked on a frozen buffer still increments lock_count, so I assume both will be handled as part of the implementation.
Correct :) -
05:26 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- ioquatix (Samuel Williams) wrote in #note-10:
> As per my design, a buffer that is frozen does not need to update or touch `locked_count` (in fact, only a buffer with `locked_count == 0` can be frozen). Once frozen, all operations (that... -
05:10 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- ioquatix (Samuel Williams) wrote in #note-6:
> `freeze` is for "safe to share this Ruby object" and `readonly` means the backing buffer cannot be modified by this view.
As far as I know, there is currently no API to make an existing ... -
04:58 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- > Even on a frozen buffer, #locked updates lock_count with a non-atomic read-modify-write, so two Ractors calling #locked on the same buffer would cause a data race on it. It seems that freezing alone is not sufficient for sharing.
As p... -
04:56 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- ioquatix (Samuel Williams) wrote in #note-6:
> Therefore, I'm against a frozen buffer meaning underlying memory cannot be modified.
If Matz agrees, I don't have a strong opinion on how freeze should be interpreted. However, under thi... -
04:53 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- ioquatix (Samuel Williams) wrote in #note-6:
> For the purpose of sharing `IO::Buffer`, `freeze`ing this state is sufficient.
Even on a frozen buffer, `#locked` updates `lock_count` with a non-atomic read-modify-write, so two Ractors... - 03:07 AM Ruby Revision 647e6e61 (git): [ruby/fileutils] Remove redundant condition
- Since `Process.uid` returns `0` always on mingw or mswin, `root_in_posix?` returns `true` too.
https://github.com/ruby/fileutils/commit/d18fbf0c56 - 03:07 AM Ruby Revision be820c30 (git): [ruby/fileutils] Skip test_rm_r_no_permissions test under root
- Skip the test_rm_r_no_permissions test under the root user, as deletion always succeeds.
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
https://github.com/ruby/fileutils/commit/3c831389c5 -
03:05 AM Ruby Revision 508ee642 (git): [ruby/fileutils] Skip chown tests when the target group is not assignable
- In user-namespace environments (e.g. ChromeOS Crostini) getgroups(2) can report supplementary groups such as the overflow GID 65534 (nobody) that a non-root process cannot actually chgrp a file to. TestFileUtils#setup built @groups strai...
- 02:59 AM Ruby Revision 0cb17e33 (git): [ruby/fileutils] Remove unused fu_copy_stream0 helper
- fu_copy_stream0 has had no caller since b26846bf replaced both uses with direct IO.copy_stream calls in 2008. The retained private wrapper is unreachable.
https://github.com/ruby/fileutils/commit/feba38f651 -
02:57 AM Ruby Revision 26f43967 (git): [ruby/fileutils] Fix relative symlink target generation
- https://github.com/ruby/fileutils/commit/7de921e801
-
02:18 AM Ruby Revision 681d0f14 (git): Fix crash in String#tr when hash modified
- String#tr can crash if keys are removed from the translation hash since
we stack allocate a buffer pairs. If entries are deleted during runtime,
then we won't fill the pairs buffer which can crash because it will be
reading uninitialized... -
02:18 AM Ruby Revision f0281b7a (git): [DOC] Harmonize readlink methods
-
02:17 AM Ruby Revision 961d6b15 (git): [DOC] Harmonize readable_real? methods
-
02:14 AM Ruby Revision c8060834 (git): [DOC] Harmonize readable? methods
-
02:13 AM Ruby Revision 741619cb (git): [DOC] Harmonize pipe? methods
-
02:06 AM Ruby Revision 37e5c08b (git): [DOC] Harmonize owned? methods
-
01:25 AM Ruby Feature #15833 (Rejected): Some refactors for shared-root array
-
12:56 AM Ruby Feature #15833 (Closed): Some refactors for shared-root array
- This ticket is too old
09/20/2026
-
11:50 PM Ruby Feature #22304: Add rb_warn_to_remove_at() for deprecation warnings shown by default
- Dan0042 (Daniel DeLorme) wrote in #note-8:
> Does the updated target version need to be backported to every branch ?
There is a similar case. Ruby 3.3 still says "Process::Status#& is deprecated and will be removed in Ruby 3.4", althoug... -
05:17 PM Ruby Feature #22304: Add rb_warn_to_remove_at() for deprecation warnings shown by default
- > A major version bump is a chance to introduce incompatibilities, so I think we should decide for each deprecation whether to keep the schedule or to remove it at the major version.
Ok I see, that makes sense. It might also be useful... -
08:26 PM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- ioquatix (Samuel Williams) wrote in #note-6:
> Implemented in [https://github.com/ruby/ruby/pull/18911](https://github.com/ruby/ruby/pull/18911)
Great, this will make semantics match more closely and ensure reliable behavior.
ioquatix ... -
03:15 PM Ruby Revision 466256eb (git): Tarballs should be able to build without dump_ast
-
02:05 PM Ruby Revision 991f17ea (git): Set non-exitent command to RUBY_DUMP_AST
- Once all `*.rbinc` files have been generated, the command should not
be required anymore. -
12:06 PM Ruby Revision edce07a8 (git): Fix use-after-free in String#% when array modified
- If the array object passed into String#% is modified during conversion
(such as via to_s, to_i, to_f, etc.) then it can be a use-after-free if
the buffer of the array is freed.
This commit changes it to detect if the buffer has been cha... -
10:48 AM Ruby Revision 87435fe2 (git): Enable the conforming MSVC preprocessor
- Avoid incorrect variadic argument forwarding in `RUBY_ASSERT_MESG_WHEN`
by the traditional MSVC preprocessor, which breaks `VM_ASSERT` when
`RUBY_DEBUG` is enabled. -
07:44 AM Ruby Revision 8c01a677 (git): merge revision(s) 05275662c43d76090e3545f93d231cf71c821fed:
- [PATCH] Raise the ModGC `make check` timeout for MMTk to 90 minutes
MMTk's `make check` on macos-26 takes 27 minutes at the median and 37 at the 90th percentile, so the default 40 minute step limit sits inside the distribution o... -
07:41 AM Ruby Revision b428fa8b (git): merge revision(s) 8482eb29e0cd7e72d980bf45376020345707e087:
- [PATCH] Add timeout scale to macOS ModGC CI jobs
Same fix as commit 8e8682fc2312164c49d3bf4a15d1f464d2644598, which added
RUBY_TEST_TIMEOUT_SCALE=10 to all macOS check jobs in macos.yml but did
not cover modgc.ym... -
06:35 AM Ruby Bug #22336: IO:Buffer Heap uaf
- ruby_3_4 commit:bce3c89801d667a2cc38940228b8656f46879e7e merged revision(s) commit:b61da996afb02715cb16703a55f57c4417fd2d5b.
-
06:35 AM Ruby Bug #22334: Assertion Failed: VM_ENV_FLAGS:FIXNUM_P(flags)
- ruby_3_4 commit:350ef312531ac79eb2771f6d5cd242d720657d0b merged revision(s) commit:d7fe390c85d1a0aeda104026134d19b86199f9b7.
-
06:34 AM Ruby Bug #22322: AddressSanitizer: use-after-poison in econv_description /ruby-src/build/../transcode.c
- ruby_3_4 commit:b82e5058907869051d336449dd67f16b007ad7b8 merged revision(s) commit:20ca4e1f647107df1a5ae75b514f20b587091405.
-
06:33 AM Ruby Bug #22319: heap buffer overflow triggered by array's zip function
- ruby_3_4 commit:2a77c0f6f9ee7752a3594455bac24812d8aeba9d merged revision(s) commit:0c9f3f1e68e23a9ba2d7fdfdb86bd7ddcaf5e9d9.
-
06:32 AM Ruby Bug #22318: heap uaf triggered in array.flatten
- ruby_3_4 commit:3ebd235fb667e37b9f5cb4dcf61b19f07c4d2b34 merged revision(s) commit:5eeaedc3d3014a12264aa252c751e14ba0fc5507.
-
06:31 AM Ruby Bug #22315: heap-use-after-free in String unpack with a block that mutates the receiver
- ruby_3_4 commit:ce5cca10a5143da2ccea33a53190e39a6b923241 merged revision(s) commit:685144e3d60513ccde1c6cb4bed20597cb860002.
-
06:30 AM Ruby Bug #22303: EncodingError from interpolating symbol crashes whole process
- ruby_3_4 commit:cf53d1a7283dbe78830cabd9e72124208d8380d3 merged revision(s) commit:5831948a66412922e1abafd2c38fd6400e420581.
-
06:28 AM Ruby Bug #22321: Assertion Failed: rb_vm_search_method_slowpath:RB_TYPE_2_P(klass, RUBY_T_CLASS, RUBY_T_ICLASS): klass: T_MODULE
- ruby_3_4 commit:9bfc30e701db71c3bfec531422ebea7e2c1cdfb5 merged revision(s) commit:d38952c45e27becbe160f832aea823546899ad2e.
-
06:26 AM Ruby Revision bce3c898 (git): merge revision(s) b61da996afb02715cb16703a55f57c4417fd2d5b: [Backport #22336]
- [PATCH] [Bug #22336] Fix use-after-free in `IO::Buffer#get_string`. (#18919)
-
06:26 AM Ruby Revision 350ef312 (git): merge revision(s) d7fe390c85d1a0aeda104026134d19b86199f9b7: [Backport #22334]
- [PATCH] Fix crash when returning splat
[Bug #22334]
If we return a with a keyword splat, then each element does not necessarily
push two values onto the stack, so we cannot compile this as a simple sequence
... -
06:26 AM Ruby Revision 9bfc30e7 (git): merge revision(s) d38952c45e27becbe160f832aea823546899ad2e: [Backport #22321]
- [PATCH] Fix Method#inspect when klass is iclass
[Bug #22321]
In the following script, the klass of the Method object is an iclass, which
will raise an error "NoMethodError: undefined method 'inspect' for an inst... -
06:26 AM Ruby Revision b82e5058 (git): merge revision(s) 20ca4e1f647107df1a5ae75b514f20b587091405: [Backport #22322]
- [PATCH] [Bug #22322] Take transcoder names from declared transcoders
Fix use-after-free of dangling pointers. -
06:26 AM Ruby Revision 2a77c0f6 (git): merge revision(s) 0c9f3f1e68e23a9ba2d7fdfdb86bd7ddcaf5e9d9: [Backport #22319]
- [PATCH] Fix use-after-free when clearing array during zip
[Bug #22319]
Array#zip triggers an use-after-free it does not account for when the call
to rb_check_array_type modifies the source array. The following s... -
06:26 AM Ruby Revision 3ebd235f (git): merge revision(s) 5eeaedc3d3014a12264aa252c751e14ba0fc5507: [Backport #22318]
- [PATCH] Fix use-after-free when clearing array during flatten
[Bug #22318]
Array#flatten triggers an use-after-free it does not account for when the
call to rb_check_array_type modifies the source array. The fol... -
06:26 AM Ruby Revision ce5cca10 (git): merge revision(s) 685144e3d60513ccde1c6cb4bed20597cb860002: [Backport #22315]
- [PATCH] Fix crash when source string modified in String#unpack
[Bug #22315]
The following script crashes because there is a use-after-free on the
source string during String#unpack:
s = "C" * 400000... -
06:18 AM Ruby Bug #22337: OOB write in array.pack()
- The 'r/R' specifiers are added in 4.1. I suppose we don't have to backport this.
-
06:08 AM Ruby Bug #22264: Warning missing from parse.y hash literals
- ruby_3_4 commit:72aa33a12683d7e351ca406a4cad45e5f1f98e26 merged revision(s) commit:e5132b162737829f744b2b23908b9d08479db977.
-
06:07 AM Ruby Bug #22259: Arrays sharding a buffer segfault when concatenating with each other
- ruby_3_4 commit:1e1e90990c14805ee327630168360d3b6530aab3 merged revision(s) commit:46c287e2ca39da63d5164e2b7227308a41554c9a.
-
05:26 AM Ruby Revision cf53d1a7 (git): merge revision(s) 5831948a66412922e1abafd2c38fd6400e420581: [Backport #22303]
- [PATCH] Fix the `intern` VM instruction to be `leaf=false` (also in YJIT, ZJIT)
rb_str_intern can raise EncodingError and call its initializer.
This call can push a Ruby frame.
Fix in the VM, YJIT, and ZJIT. -
05:09 AM Ruby Revision 72aa33a1 (git): merge revision(s) e5132b162737829f744b2b23908b9d08479db977: [Backport #22264]
- [PATCH] [Bug #22264] Warn for duplicate keys after leading keyword splat
Leading keyword splats must not suppress duplicate literal key
warnings. -
05:09 AM Ruby Revision 1e1e9099 (git): merge revision(s) 46c287e2ca39da63d5164e2b7227308a41554c9a: [Backport #22259]
- [PATCH] Fix splicing an array that shares its buffer with a longer array
Arrays sharing one buffer have the same data pointer, so rb_ary_splice()
took `a` in `b = a.dup; b.pop; b.concat(a)` for `b` itself and rebased
... -
05:07 AM Ruby Bug #22265: `Thread#value` can return before the target thread completes after a spurious Fiber scheduler unblock
- merged to rubu_3_4 at https://github.com/ruby/ruby/commit/c5a0ddafbbe1ad4477e6c9c60612d5b34ac41f01.
-
01:21 AM Ruby Revision 5a4ccd91 (git): Fix use-after-free in String#each_line with separator modified
- The separator can be modified in the block yielded by String#each_line.
When that happens, the pointer can change which can cause an use-after-free.
For example, the following script crashes:
sep = "x" * 1_000_000
s = "a#{sep}b#... -
01:20 AM Ruby Revision d1786641 (git): [DOC] Doc for File.open (#18930)
-
01:02 AM Ruby Revision 11bb12ad (git): [DOC] Doc for File.new - #18928
-
12:17 AM Ruby Revision 241ea171 (git): [DOC] Doc for File.mkfifo
-
12:16 AM Ruby Revision 9e1e000d (git): [DOC] Harmonize mtime methods
09/19/2026
-
05:29 PM Ruby Bug #22335 (Closed): Stack corruption with >31 keyword args and refined Integer#==
- Applied in changeset commit:git|d87ffb271a80fb108de3465d12ada829f3c130af.
----------
[Bug #22335] Use identity hashes for keyword argument tracking
With more than 31 keyword arguments, tracking unevaluated defaults
uses an integer-keye... -
04:49 PM Ruby Revision 40d23240 (git): Refactor keyword parameter default handling
-
04:49 PM Ruby Revision d87ffb27 (git): [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
`Integer#==` is refined or redefined, corrupting argument locals above
`cfp->sp`. Use identity hashes... -
12:28 PM Ruby Revision 44874b7e (git): Fix use-after-free in String#strip methods
- The selector conversion may run aribtrary Ruby code and modify the source
string. This can cause a use-after-free if it resizes the source string.
For example, the following script causes corruption:
s = "-" * 1000 + "abc" + "-" * 1... -
11:58 AM Ruby Feature #17593: load_iseq_eval should override the ISeq path
- Seems there new movement on related changes but I wanted to add some thoughts.
__FILE__ as syntax rather than method eliminates a bunch of side effect behavior that makes __dir__ troublesome:
* It needs access to the caller frame o... -
11:12 AM Ruby Revision 79c60fe7 (git): [DOC] Fix broken link (#18917)
-
09:51 AM Ruby Revision f74cedf7 (git): Simplify `rb_obj_freeze`
- The frozen check in `OBJ_FREEZE` makes the separate check redundant,
and immediate values are always frozen, so the old assertion is
unreachable. -
09:51 AM Ruby Revision a323b13a (git): Skip already frozen objects in `RB_OBJ_FREEZE`
- Avoid calling `rb_obj_freeze_inline` for already frozen objects,
including immediate values, to match `rb_obj_freeze` semantics. -
09:51 AM Ruby Revision 92cef280 (git): Mark `rb_freeze_singleton_class` as internal
- `rb_freeze_singleton_class` is an implementation detail of
`RB_OBJ_FREEZE`, so deprecate direct calls from extension libraries
before removing its public declaration in Ruby 4.2. -
09:46 AM Ruby Revision ed470686 (git): Diagnose inactive SHSTK with CPU and glibc details
-
04:56 AM Ruby Feature #22274: Make `IO::Buffer` no longer experimental.
- @matz
## Slices
Implemented in https://github.com/ruby/ruby/pull/18911
## Freeze
> freezing to mean that the object's own state is immutable
I agree with that. An `IO::Buffer`'s own state consists of:
```c
struct rb_io... -
04:34 AM Ruby Bug #22336 (Closed): IO:Buffer Heap uaf
- Applied in changeset commit:git|b61da996afb02715cb16703a55f57c4417fd2d5b.
----------
[Bug #22336] Fix use-after-free in `IO::Buffer#get_string`. (#18919) -
04:34 AM Ruby Revision b61da996 (git): [Bug #22336] Fix use-after-free in `IO::Buffer#get_string`. (#18919)
-
12:27 AM Ruby Bug #22326: heap buffer overflow in array.values_at()
- Thank you for this bug report. I believe [this PR](https://github.com/ruby/ruby/pull/18870) should have fixed this bug. I will mark this issue for backport.