-*- coding: utf-8 -*-

commit cfa3e7cf75531a8c90b39bbd9b977f30315b12e7
  Author:     Augustin Gottlieb <33221555+aguspe@users.noreply.github.com>
  AuthorDate: 2025-12-18 09:34:32 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-18 09:34:32 +0900

    [DOC] Fix double-word typos in comments

    Found via `grep` for repeated words.

    * set.c: Fix "or or"
    * include/ruby/internal/symbol.h: Fix "is is"
    * include/ruby/internal/ctype.h: Fix "in in"

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15619

    Merged-By: nobu <nobu@ruby-lang.org>

commit 656de67d5c8cd894eeda0baa618663098dce17f2
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-18 03:51:12 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-18 04:49:32 +0900

    JITs: Pass down GNU make jobserver resources when appropriate

    To fix warnings from rustc on e.g. Make 4.3, which is in Ubuntu 24.04:

    > warning: failed to connect to jobserver from environment variable

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15613

commit ef3ac3e68c20276eed3de756c1260f43d94746d3
  Author:     Victor Shepelev <zverok.offline@gmail.com>
  AuthorDate: 2025-12-18 04:22:55 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-18 04:22:55 +0900

    Adjust Set documentation (#15547)

  Notes:
    Merged-By: zverok <zverok.offline@gmail.com>

commit 839410f0734cb3ed911d348855f69ff6d856f62b
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-18 03:18:58 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-18 04:12:57 +0900

    Fix heap dump with ractor barrier

    When a ractor was being initialized and it would join the heap dump barrier when
    allocating its queue or its ports, the heap dump code calls `rb_obj_memsize` on
    the ractor and this function assumed `ports` was never NULL. We need to check for
    the NULL case in case the ractor is still being initialized. Hopefully other T_DATA
    objects don't suffer from the same issue, otherwise we could revert the ractor barrier
    during heap dump or not use `rb_obj_memsize` on T_DATA during the heap dump.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15612

commit 601ac78caf1523170b2f88767d67ffa5e8c5b1bc
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-18 04:00:58 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-18 04:00:58 +0900

    [DOC] Small changes to docs for ObjectSpace#each_object (#15564)

    Change example to use user-defined class instead of `Numeric`.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit f7120860b0a76fd776ef4bf040e42a46c8aeff63
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-18 03:44:28 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-18 03:45:57 +0900

    test_sync_default_gems.rb: Omit if git is v2.43 or older

commit dc2a62e14c4691808f04ea0cb2de30c681e87923
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-18 03:18:40 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-18 03:22:00 +0900

    test_commit_email.rb: Ensure #teardown doesn't fail

    if test is omitted.

    Follow up c4e090def134f9b109991b74c027648564963763

commit a9526ab50ca693755cd841da1c73855448453dfb
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-12-18 03:05:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-18 03:05:21 +0900

    Update bundled gems list as of 2025-12-17

commit 7e13fbc0ed013d03444158cda7e800e9c0eb4ddf
  Author:     tomoya ishida <tomoyapenguin@gmail.com>
  AuthorDate: 2025-12-18 03:04:49 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-18 03:04:49 +0900

    Update bundled bigdecimal and rbs (#15611)

    * Bundle rbs-3.10.0.pre.1

    * Update rbs gem entry with commit hash

    Updated rbs entry to include commit hash.

    * Fix rbs entry in bundled_gems

    * Update rbs gem to version 3.10.0.pre.2

    Updated rbs gem version from 3.10.0.pre.1 to 3.10.0.pre.2.

    * Update bundled bigdecimal to v4.0.1

    ---------

    Co-authored-by: Soutaro Matsumoto <matsumoto@soutaro.com>

  Notes:
    Merged-By: tompng <tomoyapenguin@gmail.com>

commit 56b67f1684bf1955cf69fc06701e2a710898bd9b
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-18 02:17:30 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-18 02:17:30 +0900

    ObjectSpace.{dump,dump_all,dump_shapes} needs vm barrier. (#15569)

    This allows these methods to be called from ractors.

    Add new exported function `rb_vm_lock_with_barrier()` that requires
    users to include "vm_sync.h"

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 41e24aeb1a432c13ff484a055077d00d93668201
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-17 22:06:53 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 22:06:53 +0900

    Improve NEWS.md for Socket (#15610)

  Notes:
    Merged-By: shioimm <shioi.mm@gmail.com>

commit aee4b24829cfd26c9089f539179bd7770d283bfa
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-17 13:26:55 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-17 21:11:27 +0900

    [ruby/error_highlight] Show no message when failing to get caller/callee snippets

    Even with Ruby 4.0, snippets is not always available, such as in irb by
    default. It would be better to just say nothing than to show a confusing
    message.

    https://github.com/ruby/error_highlight/commit/ef80ce73a1

commit c99670d6683fec770271d35c2ae082514b1abce3
  Author:     Akinori MUSHA <knu@idaemons.org>
  AuthorDate: 2025-12-17 18:36:10 +0900
  Commit:     Akinori MUSHA <knu@idaemons.org>
  CommitDate: 2025-12-17 18:56:22 +0900

    Revert the default size of Enumerator::Producer to infinity

    [Bug #21780]

commit f45b1e3a1bfff6546a63d741c404fc404fa91cc6
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-17 18:53:34 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 18:53:34 +0900

    Update NEWS.md for Socket (#15608)

  Notes:
    Merged-By: shioimm <shioi.mm@gmail.com>

commit bd4353ba7aeb464c9736fe49ac017899b2295d60
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-16 18:10:51 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 17:38:52 +0900

    CI: Assume all C source files are UTF-8 now

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15579

commit f286e7001930dc1e13c9235b83af32216fde8d5c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-10-08 12:09:15 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 17:38:52 +0900

    win32: Set the source code charset to UTF-8

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15579

commit 61bab1889048f758396acf671c9797d6bc52504b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-17 14:28:03 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 17:35:58 +0900

    Rename to `struct rbimpl_size_overflow_tag`

    This struct is used for addition not only for multiplication, so
    remove the word `mul`, and make the member names more descriptive.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15607

commit 79f36c544a0431d9b76c3c11a5f622383eaca7bd
  Author:     Akinori MUSHA <knu@idaemons.org>
  AuthorDate: 2025-12-17 17:30:24 +0900
  Commit:     Akinori MUSHA <knu@idaemons.org>
  CommitDate: 2025-12-17 17:30:24 +0900

    Revert the override of Enumerator#to_set that performed size checks

    [Bug #21780]

commit 54d3945ee53fa29186c6aa44f673a3a5ec3b38d9
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-17 16:16:32 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 16:16:32 +0900

    Add host information to timeout error messages in `TCPSocket.new` and `Socket.tcp` (#15582)

    This change adds host information to the error messages shown when a timeout occurs while passing timeout options to `TCPSocket.new` or `Socket.tcp`, for improved usability.
    (When the `fast_fallback option` is enabled, there may be multiple possible destinations, so the host name is shown instead of an IP address.)

    As part of this change, the error messages in `Addrinfo.getaddrinfo` and `Addrinfo#connect_internal`, both of which are used by `Socket.tcp`, have also been improved in the same way.

  Notes:
    Merged-By: shioimm <shioi.mm@gmail.com>

commit 1506c489eef67f268a54484662011a60897bdd48
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-17 13:04:06 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-17 16:12:28 +0900

    Update NEWS.md for improvements of error backtrace

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15604

commit 26447b3597ab95af7cc220c641a1bd58b235fec9
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 15:03:06 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    [ruby/net-http] v0.9.1

    https://github.com/ruby/net-http/commit/8cee86e939

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit b80fc8bd84d194fdab60d0aee14ce0850a366500
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-13 17:30:21 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    [ruby/net-http] Freeze more constants for Ractor compatibility

    Freeze Net::HTTP::SSL_ATTRIBUTES and IDEMPOTENT_METHODS_. Both constants
    have been marked as :nodoc:.

    Together with https://github.com/ruby/openssl/issues/521, this enables
    HTTPS clients in non-main Ractors on Ruby 4.0.

    https://github.com/ruby/net-http/commit/f24b3b358b

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit fedafec78b2e6aa17a4246192a40192d7a0cf69c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 13:28:33 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    [ruby/net-http] v0.9.0

    https://github.com/ruby/net-http/commit/3ccf0c8e6a

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit df18f3baa658174ef89c8c2c11be4fea9bda4fc7
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 14:38:55 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    Bundle strscan-3.1.6

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit d5257bea4811e54c006c4f2f56344d0d155638c9
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 14:38:05 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    Bundle stringio-3.2.0

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit 8e258121942e7c879bc11d221425ac39f73afe8c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 13:23:04 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    [ruby/timeout] v0.6.0

    https://github.com/ruby/timeout/commit/ab79dfff47

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit 01624492ecb14d85e26023169bf8b36c6015c62d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 13:32:45 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    [ruby/time] v0.4.2

    https://github.com/ruby/time/commit/387292f5d2

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit 8850807eb1d8e6376a4f0dd99cb2f5e3e2988595
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 13:34:12 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 15:47:43 +0900

    [ruby/psych] v5.3.1

    https://github.com/ruby/psych/commit/8345af9ffb

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15603

commit 7b5691c3b000c763faa282e1f73db96afa2ecae1
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-17 15:02:26 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 15:02:26 +0900

    `Socket.tcp` and `TCPSocket.new` raises `IO::TiemoutError` with user specified timeout (https://github.com/ruby/net-http/pull/15602)

    * `Socket.tcp` and `TCPSocket.new` raises `IO::TiemoutError` with user specified timeout

    In https://github.com/ruby/ruby/pull/11880, `rsock_connect()` was changed to raise `IO::TimeoutError` when a user-specified timeout occurs.
    However, when `TCPSocket.new` attempts to connect to multiple destinations, it does not use `rsock_connect()`, and instead raises `Errno::ETIMEDOUT` on timeout.
    As a result, the exception class raised on timeout could differ depending on whether there were multiple destinations or not.

    To align this behavior with the implementation of `rsock_connect()`, this change makes `TCPSocket.new` raise `IO::TimeoutError` when a user-specified timeout occurs.
    Similarly, `Socket.tcp` is updated to raise `IO::TimeoutError` when a timeout occurs within the method.
    (Note that the existing behavior of `Addrinfo#connect_internal`, which Socket.tcp depends on internally and which raises `Errno::ETIMEDOUT` on timeout, is not changed.)

    * [ruby/net-http] Raise `Net::OpenTimeout` when `TCPSocket.open` raises `IO::TimeoutError`.

    With the changes in https://github.com/ruby/ruby/pull/15602, `TCPSocket.open` now raises `IO::TimeoutError` when a user-specified timeout occurs.
    This change updates #connect to handle this case accordingly.

    https://github.com/ruby/net-http/commit/f64109e1cf

  Notes:
    Merged-By: shioimm <shioi.mm@gmail.com>

commit 0e2962f917db1b20a6d34b6105b3768af8e692b8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-17 14:14:36 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-17 14:16:38 +0900

    [ruby/io-wait] bump up to 0.4.0

    https://github.com/ruby/io-wait/commit/ae676c9d6d

commit e354e9ba1007c10df3ee843bb9daabd89b47a708
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-17 11:57:57 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-17 12:37:13 +0900

    refactor: utilize a predefined macro

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15601

commit 7c402d2c2757b38df8b9406b372d2e1f406296ae
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-11 15:27:05 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 12:35:38 +0900

    IO::Buffer: Warn as experimental at allocation

    Previously, warned only in `new` and `map`, but not `for` and
    `string`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15599

commit c353b625297162024b5a80480664e599dd49a294
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-22 23:43:19 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 12:35:38 +0900

    [Bug #21787] IO::Buffer: Check addition overflows

    https://hackerone.com/reports/3437743

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15599

commit 9519d16381c8a8ddf7e1128a08fd80dfac8ed327
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-22 23:41:23 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 12:35:38 +0900

    IO::Buffer: Guard arguments from GC

    At least, `string` in `io_buffer_set_string` can be different from
    `argv[0]` after `rb_str_to_str` call.  The other cases may not be
    necessary.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15599

commit f430fbbfacea5690d790dd9060ca4118431fc2fb
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-22 23:40:35 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-17 12:35:38 +0900

    IO::Buffer: Fill the test for `IO::Buffer#clear`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15599

commit 3b66efda523fc33070aee6097898dbc5b1af6f4b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 11:29:29 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 12:12:34 +0900

    Bundle RubyGems 4.0.2 and Bundler 4.0.2

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15600

commit 2117e612cafbd1a5ce4ce1d72cc13f8d9b715aa9
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-17 10:38:28 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-17 11:11:52 +0900

    Disabled gem sync for Ruby 4.0 release

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15598

commit 74a365310cfd150af6b45920d84920d17d6b3946
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-17 11:11:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 11:11:39 +0900

    Fix: Recalculate the timeout duration considering `open_timeout` (#15596)

    This change updates the behavior so that, when there is only a single destination and `open_timeout` is specified, the remaining `open_timeout` duration is used as the connection timeout.

  Notes:
    Merged-By: shioimm <shioi.mm@gmail.com>

commit f483484fc610589a6faf828a77fd76f15fb4ebb3
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-17 07:49:55 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-17 11:03:57 +0900

    [DOC] Fix call-seq of Method#box

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15592

commit 0fe111caa6885407960541bdb6de7ba3cd6aad73
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-16 15:15:28 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-17 10:15:59 +0900

    Respect encoding of ID in exception messages

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15556

commit cbcbbb2fbe57fb17b3bd6b93244c4f37f3626c7e
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-15 18:04:57 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-17 10:15:59 +0900

    Let Ractor::IsolationError report correct constant path

    Before this patch, Ractor::IsolationError reported an incorrect constant
    path when constant was found through `rb_const_get_0()`.

    In this code, Ractor::IsolationError reported illegal access against
    `M::TOPLEVEL`, where it should be `Object::TOPLEVEL`.

    ```ruby
    TOPLEVEL = [1]

    module M
      def self.f
        TOPLEVEL
      end
    end

    Ractor.new { M.f }.value
    ```

    This was because `rb_const_get_0()` built the "path" part referring to
    the module/class passed to it in the first place. When a constant was
    found through recursive search upwards, the module/class which the
    constant was found should be reported.

    This patch fixes this issue by modifying rb_const_search() to take a
    VALUE pointer to be filled with the module/class where the constant was
    found.

    [Bug #21782]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15556

commit 2d0140664436d85684a98a81f4fb103c186895b9
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-17 06:27:09 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-17 07:47:08 +0900

    [DOC] Harmonize rb_div methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15590

commit 5e27581c3b3782f731ada9f83129c5c17a8f8c49
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-17 00:31:29 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    ZJIT: Use rb_zjit_writebarrier_check_immediate() instead of rb_gc_writebarrier() in gen_write_barrier()

    * To avoid calling rb_gc_writebarrier() with an immediate value in gen_write_barrier(),
      and avoid the LIR jump issue.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15542

commit cc048f7571c5d054b04dad39cb61d008b30f663a
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-17 00:23:29 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    Revert "ZJIT: Do not call rb_gc_writebarrier() with an immediate value in gen_write_barrier()"

    * This reverts commit 623559faa3dd0927b4034a752226a30ae8821604.
    * There is an issue with the jump in LIR, see https://github.com/ruby/ruby/pull/15542.

commit 04edf3d9939d08f4e724cb91b9be374032cb662e
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 21:02:33 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    ZJIT: Add a VALUE#write_barrier helper method to deduplicate logic

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15542

commit 49cecd360fe61ec266c230084f46d5b640c03399
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 20:42:09 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    ZJIT: Guard other calls to rb_gc_writebarrier() with a !special_const_p() check

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15542

commit 68174c31e4de2e63dbe32065a5d42c909963cdb8
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 20:10:28 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    ZJIT: Do not call rb_gc_writebarrier() with an immediate value in gen_write_barrier()

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15542

commit 4d4f414a6062173743af7fe2b88835f16287a6cc
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 19:58:49 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    Use RBIMPL_ASSERT_OR_ASSUME instead of ASSUME for better errors when it does not hold

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15542

commit 094418a6de89a37fc51a17077a5565f125b97f2e
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-14 17:50:21 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-17 05:00:27 +0900

    gc.h: Reintroduce immediate guard in `rb_obj_written`

    This guard was removed in https://github.com/ruby/ruby/pull/13497
    on the justification that some GC may need to be notified even for
    immediate.

    But the two currently available GCs don't, and there are plenty
    of assumtions GCs don't everywhere, notably in YJIT and ZJIT.

    This optimization is also not so micro (but not huge either).
    I routinely see 1-2% wasted there on micro-benchmarks.

    So perhaps if in the future we actually need this, it might make
    sense to introduce a way for GCs to declare that as an option,
    but in the meantime it's extra overhead with little gain.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15542

commit eaa952b536c48658a5a2e3f128e3afdef03a01b6
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-17 03:33:47 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-17 04:56:40 +0900

    YJIT: Print `Rc` strong and weak count on assert failure

    For <https://bugs.ruby-lang.org/issues/21716>, the panic is looking like
    some sort of third party memory corruption, with YJIT taking the fall.
    At the point of this assert, the assembler has dropped, so there's
    nothing in YJIT's code other than JITState that could be holding on to
    these transient `PendingBranchRef`.

    The strong count being more than a handful or the weak count is non-zero
    shows that someone in the process (likely some native extension)
    corrupted the Rc's counts.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15585

commit f3d1557d5c04d7bc0bfa931869fbb35d14592c53
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-17 04:53:31 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 04:53:31 +0900

    Revert "ZJIT: Allow ccalls above 7 arguments"

    This reverts commit 2f151e76b5dc578026706b31f054d5caf5374b05.

    The SP decrement (push) before the call do not match up with
    the pops after the call, so registers were restored incorrectly.

    Code from:

        ./miniruby --zjit-call-threshold=1 --zjit-dump-disasm -e 'p Time.new(1992, 9, 23, 23, 0, 0, :std)'

        str x11, [sp, #-0x10]!
        str x12, [sp, #-0x10]!
        stur x7, [sp]              # last argument
        mov x0, x20
        mov x7, x6
        mov x6, x5
        mov x5, x4
        mov x4, x3
        mov x3, x2
        mov x2, x1
        ldur x1, [x29, #-0x20]
        mov x16, #0xccfc
        movk x16, #0x2e7, lsl #16
        movk x16, #1, lsl #32
        blr x16
        ldr x12, [sp], #0x10       # supposed to match str x12, [sp, #-0x10]!, but got last argument
        ldr x11, [sp], #0x10

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15587

    Merged-By: XrXr

commit 4fb537b1ee28bb37dbe551ac65c279d436c756bc
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-17 04:06:55 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 04:06:55 +0900

    Make tracepoints with set_trace_func or TracePoint.new ractor local (#15468)

    Before this change, GC'ing any Ractor object caused you to lose all
    enabled tracepoints across all ractors (even main). Now tracepoints are
    ractor-local and this doesn't happen. Internal events are still global.

    Fixes [Bug #19112]

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit d209e6f1c0a93ad3ce1cc64dd165a6b67672614d
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-27 11:59:37 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-17 03:06:03 +0900

    search_nonascii(): Replace UB pointer cast with memcpy

    Casting a pointer to create an unaligned one is undefined behavior in C
    standards. Use memcpy to express the unaligned load instead to play by
    the rules.

    Practically, this yields the same binary output in many situations
    while fixing the crash in [Bug #21715].

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15572

commit a8ba2b295b73a116d24fe5602d892d4a2042cd08
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-12-17 02:15:46 +0900
  Commit:     Aaron Patterson <aaron.patterson@gmail.com>
  CommitDate: 2025-12-17 02:44:44 +0900

    add 21254 to the feature list

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15583

commit aab4f6287da4d8035035f7486072f149abf8dcc9
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-17 01:47:13 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 01:47:13 +0900

    Add the instance variable name and the module in Ractor::IsolationError (#15563)

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 09a29e1312121fed5704ac196413c3b5ecb83fd7
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-17 01:06:33 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-17 01:06:33 +0900

    Add the class variable and the class itself in Ractor::IsolationError (#15562)

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 6b35f074bd83794007d4c7b773a289bddef0dbdf
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-16 22:17:08 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-16 22:23:24 +0900

    Box: [DOC] Add RUBY_BOX in Environment

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15581

commit 2b1a9afbfbb5491665bfbdd560486a310ca49755
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-16 19:52:45 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-16 19:52:45 +0900

    Fix: Do not pass negative timeout to Addrinfo#connect_internal (#15578)

    This change fixes a bug where, with `Socket.tcp`’s `fast_fallback option` disabled, specifying `open_timeout` could unintentionally pass a negative value to `Addrinfo#connect_internal`, `causing an ArgumentError`.

    ```
    ❯ ruby -rsocket -e 'p Socket.tcp("localhost", 9292, open_timeout: 1, fast_fallback: false)'
    /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:64:in 'IO#wait_writable': time interval must not be negative (ArgumentError)

              sock.wait_writable(timeout) or
                                 ^^^^^^^
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:64:in 'Addrinfo#connect_internal'
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:141:in 'Addrinfo#connect'
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:964:in 'block in Socket.tcp_without_fast_fallback'
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:231:in 'Array#each'
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:231:in 'Addrinfo.foreach'
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:945:in 'Socket.tcp_without_fast_fallback'
            from /Users/misaki-shioi/src/install/lib/ruby/4.0.0+0/socket.rb:671:in 'Socket.tcp'
            from -e:1:in '<main>'
    ```

  Notes:
    Merged-By: shioimm <shioi.mm@gmail.com>

commit e42bcd7ce76e75601ef3adf35467edf277471af2
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-16 08:43:41 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-16 17:51:07 +0900

    Rename fiber_serial into ec_serial

    Since it now live in the EC.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15543

commit 28b195fc67788c03be59c2a4cbf0cad52ac3b90f
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-14 18:46:52 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-16 17:51:07 +0900

    Store the fiber_serial in the EC to allow inlining

    Mutexes spend a significant amount of time in `rb_fiber_serial`
    because it can't be inlined (except with LTO).
    The fiber struct is opaque the so function can't be defined as inlineable.

    Ideally the while fiber struct would not be opaque to the rest of
    Ruby core, but it's tricky to do.

    Instead we can store the fiber serial in the execution context
    itself, and make its access cheaper:

    ```
    $ hyperfine './miniruby-baseline --yjit /tmp/mut.rb' './miniruby-inline-serial --yjit /tmp/mut.rb'
    Benchmark 1: ./miniruby-baseline --yjit /tmp/mut.rb
      Time (mean ± σ):      4.011 s ±  0.084 s    [User: 3.977 s, System: 0.011 s]
      Range (min … max):    3.950 s …  4.245 s    10 runs

    Benchmark 2: ./miniruby-inline-serial --yjit /tmp/mut.rb
      Time (mean ± σ):      3.495 s ±  0.150 s    [User: 3.448 s, System: 0.009 s]
      Range (min … max):    3.340 s …  3.869 s    10 runs

    Summary
      ./miniruby-inline-serial --yjit /tmp/mut.rb ran
        1.15 ± 0.05 times faster than ./miniruby-baseline --yjit /tmp/mut.rb
    ```

    ```ruby
    i = 10_000_000
    mut = Mutex.new
    while i > 0
      i -= 1
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
      mut.synchronize { }
    end
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15543

commit 85b40c5ea8f606cf34cab8a5b1277033bede2457
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-16 09:01:14 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-16 16:53:13 +0900

    Box: fix the class name in tests

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15557

commit 5f09e1f046599c5466787449f5d30330d4dd4aab
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-15 21:28:17 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-16 16:53:13 +0900

    Box: [DOC] fix the class name in rdoc

    Also remove a stale TODO.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15557

commit 8db3642ab54f303b32a02bbfe53a2ab54725b046
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-15 21:13:11 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-16 16:53:13 +0900

    Box: fix the class name in inspect

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15557

commit 7780d3b6c303d00bc39d913dc91ff9f5f61ae9ed
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-15 21:12:07 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-16 16:53:13 +0900

    Box: fix the environment variable name

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15557

commit f4c48505ca50d021c3505fe422c04e4f41624bb2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-15 21:11:33 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-16 16:53:13 +0900

    Box: move extensions from namespace to box

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15557

commit 065c48cdf11a1c4cece84db44ed8624d294f8fd5
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-16 12:51:45 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-16 16:13:07 +0900

    Revert "[Feature #6012] Extend `source_location` for end position
    and columns"

    This reverts commit 073c4e1cc712064e626914fa4a5a8061f903a637.

    https://bugs.ruby-lang.org/issues/6012#note-31
    > we will cancel this feature in 4.0 because of design ambiguities
    > such as whether to return column positions in bytes or characters as
    > in [#21783].

    [#21783]: https://bugs.ruby-lang.org/issues/21783

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15576

commit 5b0fefef417cad1733c18a0b66db07bcb1de5caf
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-16 14:50:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 15:28:36 +0900

    [ruby/rubygems] Added assertion for Windows and nmake

    https://github.com/ruby/rubygems/commit/be5c4e27d9

commit e4797e93213365956a6cec142122866c8f0c9a51
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-16 13:49:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 14:18:29 +0900

    [ruby/rubygems] Reset MAKEFLAGS option for build jobs tests

    https://github.com/ruby/rubygems/commit/09e6031a11

commit 080bf30c48a8212cf0ee4f769d1bdaa4a2df5900
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-12-10 22:29:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 13:21:49 +0900

    [ruby/rubygems] Allow to specify the number of `make` jobs when installing gems:

    - Added a new `-j` option to `gem install` and `gem update`.
      This option allows to specify the number of jobs we pass to `make`
      when compiling gem with native extensions.

      By default its the number of processors, but users may want a way
      to control this.

      You can use it like so: `gem install json -j8`

    https://github.com/ruby/rubygems/commit/67aad88ca6

commit 9f593156b6184718a65f99905e6b07002058ebe6
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-12-09 06:02:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 13:21:49 +0900

    [ruby/rubygems] Pass down value of `BUNDLE_JOBS` to RubyGems before compiling:

    - ### Problem

      Since https://github.com/ruby/rubygems/pull/9131, we are now
      compiling make rules simultaneously. The number of jobs
      is equal to the number of processors.
      This may be problematic for some users as they want to control
      this value.

      ### Solution

      The number of jobs passed to `make` will now be equal to the
      `BUNDLE_JOBS` value.

      ### Side note

      It's also worth to note that since Bundler installs gems in
      parallel, we may end up running multiple `make -j<JOB>` in parallel
      which would cause exhaust the number of processors we have.
      This problem can be fixed by implementing a GNU jobserver, which I
      plan to do. But I felt that this would be too much change in one PR.

    https://github.com/ruby/rubygems/commit/d51995deb9

commit 9168cad4d63a5d281d443bde4edea6be213b0b25
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-12-12 07:56:16 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-16 13:05:27 +0900

    YJIT: Bail out if proc would be stored above stack top

    Fixes [Bug #21266].

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15537

commit f3b9509b52bbf845d95bf799d76dad41783919e5
  Author:     hituzi no sippo <dev@hituzi-no-sippo.me>
  AuthorDate: 2025-12-13 15:53:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 12:56:22 +0900

    [ruby/rubygems] Fix quote handling in mise format ruby version parsing

    The previous regex didn't properly match quoted strings
    it would capture the opening quote as part of the version
    if quotes were mismatched.
    This change properly parses double-quoted, single-quoted,
    and unquoted version strings separately.

    https://github.com/ruby/rubygems/commit/81e48c8185

commit 3b50f4ba41ececd01dcf2e35c4071495f250d609
  Author:     hituzi no sippo <dev@hituzi-no-sippo.me>
  AuthorDate: 2025-12-11 19:16:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 12:56:21 +0900

    [ruby/rubygems] Support single quotes in mise format ruby version

    https://github.com/ruby/rubygems/commit/a7d7ab39dd

commit 3b3ab338516c9af009300761382f01a6beff4dd0
  Author:     Alan Wu <alanwu@ruby-lang.org>
  AuthorDate: 2025-12-16 12:18:44 +0900
  Commit:     Alan Wu <alanwu@ruby-lang.org>
  CommitDate: 2025-12-16 12:18:44 +0900

    ZJIT: Fix test failures from line number of `Primitive` shifting

    This can happen with documentation updates and we don't want
    those to trip on ZJIT tests.

    Redact the whole name since names like "_bi342" aren't that helpful
    anyways.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15575

commit 060199910afeccd4c81f90beebbd406799c05c46
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-16 11:09:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 11:36:10 +0900

    [ruby/rubygems] Allow to show cli_help with bundler executable

    https://github.com/ruby/rubygems/commit/a091e3fd10

commit b6d4562e6ae9cbf9864c3f35c361db8087e595e7
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-15 07:34:34 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-16 09:25:15 +0900

    [DOC] Remove copyright from Set class docs

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15550

commit ff1b8ffa61922a46eae217c06aa16b24f26ae723
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-12-15 19:45:23 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 09:16:15 +0900

    [ruby/rubygems] Tweak the Bundler's "X gems now installed message":

    - Fix https://github.com/ruby/rubygems/pull/9188
    - This message is a bit misleading because it always outputs one extra
      specs, which is Bundler itself.

      This is now fixed when the message is about to be output.

    https://github.com/ruby/rubygems/commit/70b4e19506

commit f88e7970901d3d8cfb6efeb536d983bf2e05b04a
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-12-15 23:56:41 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 09:15:57 +0900

    [ruby/rubygems] Allow bundle pristine to work for git gems in the same repo:

    - Fix https://github.com/ruby/rubygems/pull/9186
    - ### Problem

      Running `bundle pristine` in a Gemfile where there is many git gem
      pointing to the same repository will result in a error
      "Another git process seems to be running in this repository".

      ### Context

      This error is a regression since https://github.com/ruby/rubygems/commit/a555fd6ccd17
      where `bundle pristine` now runs in parallel which could lead
      to running simultaneous git operations in the same repository.

      ### Solution

      When Bundler pristine a git gem it does a `git reset --hard` without
      specifying a path.
      This means the whole repository will be reset. In this case, we can
      leverage that by just pristining one gem per unique git sources.
      This is also more efficient.

    https://github.com/ruby/rubygems/commit/710ba514a8

commit 98cac1a75d9d9b7ff4cfd5b5d0fd99c1b5f17631
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-16 09:10:04 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-16 09:10:04 +0900

    Point people to redmine on ZJIT docs (#15499)

    Fix https://github.com/Shopify/ruby/issues/900

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit abefd3e8ff1853800d4df5b28388191b51d9ec37
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-11 05:11:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 07:48:40 +0900

    [ruby/psych] Check that Data members match exactly

    * Fixes https://github.com/ruby/psych/issues/760

    https://github.com/ruby/psych/commit/952008c898

commit b3f0fb56187dd9711fac0baae81a3f1ed0b5714a
  Author:     nick evans <nick@rubinick.dev>
  AuthorDate: 2025-12-12 05:25:59 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 07:48:40 +0900

    [ruby/psych] Replace C extension with Data#initialize bind_call

    https://github.com/ruby/psych/commit/6a826693ba

commit cfd41cbf0338a28638ed54edb0de13539b159dfb
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-16 06:28:41 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-16 07:28:35 +0900

    [DOC] Harmonize #-@ methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15570

commit acbf55f4e6658f94e49f28b4df21ab0c29683c4b
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-16 05:35:27 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-16 07:27:54 +0900

    [DOC] Harmonize #- methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15567

commit 7fbf321d23f3cc20988c80fae25ce131a5d1b231
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-16 05:20:25 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-16 07:27:24 +0900

    [DOC] Harmonize #** methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15566

commit 98ab418fed61079f8ef7e229ea1b41957ec5722b
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-16 07:07:15 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-16 07:07:15 +0900

    Revert "Fix Socket.tcp cleanup after Thread#kill (#15131)" (#15565)

    This reverts commit 3038286a4bf7832f1c42c8cc9774ee6ff19876fc.

    The following CI failure scared me:
    https://github.com/ruby/ruby/actions/runs/20241051861/job/58108997049

    ```
      1) Timeout:
      TestResolvDNS#test_multiple_servers_with_timeout_and_truncated_tcp_fallback
    ```

    Since it could be related, I'm reverting this for now.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit adf676c530b5da2822aa3b03ee43e5507111a0b2
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-16 02:14:54 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 02:15:25 +0900

    [ruby/erb] Version 6.0.1

    https://github.com/ruby/erb/commit/bbde68fcd5

commit fdd8bdea8174835a5d83f561add9212e64f74cc0
  Author:     Daisuke Aritomo <di.aritomo@gmail.com>
  AuthorDate: 2025-12-16 02:14:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-16 02:14:36 +0900

    [ruby/erb] Freeze ERB::Compiler::TrimScanner::ERB_STAG
    (https://github.com/ruby/erb/pull/100)

    For Ractor compatibility.

    https://github.com/ruby/erb/commit/43f0876595

commit 9581d6c8988f9b54637b9872c42c79d16ff9fcb3
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-16 01:52:35 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-16 01:52:35 +0900

    ZJIT: Add iongraph-generating Ruby script (#15466)

    Run like so:

        $ ../tool/zjit_iongraph.rb ../build-dev/miniruby --zjit-call-threshold=2 tmp/ghbug.rb
        false
        false
        tmp/ghbug.rb:3:in 'Object#doit': this shouldnt ever be nil (RuntimeError)
                from tmp/ghbug.rb:10:in '<main>'
        W, [2025-12-09T11:00:32.070382 #67400]  WARN -- : Command failed with exit status 1
        zjit_iongraph_67405.html
        $

    Then open zjit_iongraph_67405.html with your browser.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 3038286a4bf7832f1c42c8cc9774ee6ff19876fc
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-16 01:48:34 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-16 01:48:34 +0900

    Fix Socket.tcp cleanup after Thread#kill (#15131)

    Socket.tcp launches ruby threads to resolve hostnames, and those threads
    communicate through a queue implemented with `IO.pipe`. When the thread
    that called `Socket.tcp` is killed, the resolver threads still try to
    communicate through the pipe even though it may be closed. The method
    `Socket.tcp_with_fast_fallback` tries to deal with this by killing the
    threads in an ensure block, and then closing the pipe. However, calling
    `Thread#kill` is not a blocking operation, it only sets a flag on the
    thread telling it to raise during the next interrupt. The thread needs
    to be joined to ensure it is terminated. The following script
    demonstrates the issue:

    ```ruby
    require "socket"

    ts = []
    5.times do
      ts << Thread.new do
        loop do
          1_000.times do |i|
            puts "#{i}"
            t = Thread.new do
              Socket.tcp("ruby-lang.org", 80)
            end
            sleep 0.001
            t.kill
          end
        end
      end
    end
    ts.each(&:join)
    ```

    output:
    ```
    /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#write': closed stream (IOError)
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#putc'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'block in Socket::HostnameResolutionResult#add'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Thread::Mutex#synchronize'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Socket::HostnameResolutionResult#add'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:980:in 'Socket.resolve_hostname'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:719:in 'block (2 levels) in Socket.tcp_with_fast_fallback'
    /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#write': closed stream (IOError)
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#putc'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'block in Socket::HostnameResolutionResult#add'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Thread::Mutex#synchronize'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Socket::HostnameResolutionResult#add'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:978:in 'Socket.resolve_hostname'
            from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:719:in 'block (2 levels) in Socket.tcp_with_fast_fallback'
    ```

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 6b63b0cbeb33c8606f147b0293e9b8ed8c34a0e5
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-12-16 00:07:54 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-16 01:28:11 +0900

    [DOC] Update Set#inspect description in NEWS

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15560

commit bb0e42c5e706f238dce40abb9cf5322e4a8a73cb
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-15 22:36:53 +0900
  Commit:     Kevin Newton <kddnewton@gmail.com>
  CommitDate: 2025-12-16 00:52:43 +0900

    Define Array#detect as an alias for Array#find

    Otherwise Array#detect is Enumerable#detect while Array#find uses a
    different more performant implementation.

    [Feature #21678]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15558

commit ac946e076c0136b070c84f66c8b018f8ab6b2223
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-15 22:43:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 22:43:53 +0900

    [ruby/prism] Unreference before destroying in call node in pattern

    https://github.com/ruby/prism/commit/609c80c91e

commit eceab2f44c631ceda13656728ae23b0750941001
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-15 10:39:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 20:38:29 +0900

    [ruby/prism] Escape error location is incorrect for some regex

    When you have a regular expression that has a named capture that
    has an escape sequence in the named capture, and that escape
    sequence is a unicode escape sequence with an invalid surrogate
    pair, the error was attached to the owned string as opposed to a
    location on the shared source.

    https://github.com/ruby/prism/commit/793a7a6a0a

commit bbc10ed0cdcd2fe9d7d09a9dcc5f036bc4425aef
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-15 20:10:49 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-15 20:11:46 +0900

    Add NEWS entry for Array#rfind and Array#find

commit f0793731853c0e130f798e9dc5c736b2fa1b72b7
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-14 19:10:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 18:50:30 +0900

    [ruby/openssl] Ruby/OpenSSL 4.0.0

    https://github.com/ruby/openssl/commit/5af1edab18

commit f06eb75646e7a8d17d9c41988207a2a29a3b006c
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-04-09 04:01:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 18:09:49 +0900

    [ruby/openssl] ossl.c: improve docs for constants and methods under ::OpenSSL

    https://github.com/ruby/openssl/commit/b0de8ba9bd

commit ee6ba41bfdc82110468598467cd10ce850b44f0c
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-14 19:55:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 18:09:49 +0900

    [ruby/openssl] Freeze more constants for Ractor compatibility

    https://github.com/ruby/openssl/commit/695126f582

commit 5a4faaaeb198b8cede59f323c7b6ed47e029c6db
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 22:40:45 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-15 16:05:21 +0900

    Merge `root_box_data` into `root_box`

    * Make invariant `root_box` an array consist of only `root_box_data`.
    * Remove the unnecessary initializer list that is just overwritten in
      `initialize_root_box()` and missing `classext_cow_classes`.
    * Shrink the scope using another local `root_box`.
    * Make the data type constants static.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15544

commit 700487ce21f0991fb5d4042707d12b2966670f1e
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-13 17:30:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 15:08:39 +0900

    [ruby/net-http] Refactor HTTPS tests

    This contains various improvements in tests for openssl integration:

      - Remove DHE parameters from test servers. OpenSSL is almost always
        compiled with ECC support nowadays and will prefer ECDHE over DHE.
      - Remove an outdated omission for a bug in OpenSSL 1.1.0h released in
        2018. None of our CI systems use this specific OpenSSL version.
      - Use top-level return to skip tests if openssl is unavailable.
      - Refactor tests for Net::HTTP#verify_callback.

    https://github.com/ruby/net-http/commit/35c1745a26

commit 1e76b1f8b29e8824832170d0a7cedcac711f99c4
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-15 07:00:20 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-15 11:01:15 +0900

    [DOC] Remove doc/reline

    Reline has been moved to a bundled gem, so we don't need the docs anymore.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15548

commit 58940377e6f27f39d5c3baa0faa15655fa873f2c
  Author:     eileencodes <eileencodes@gmail.com>
  AuthorDate: 2025-11-26 04:17:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 10:15:06 +0900

    [ruby/rubygems] Write gem files atomically

    This change updates `write_binary` to use a new class,
    `AtomicFileWriter.open` to write the gem's files. This implementation
    is borrowed from Active Support's [`atomic_write`](https://github.com/rails/rails/blob/main/activesupport/lib/active_support/core_ext/file/atomic.rb).

    Atomic write will write the files to a temporary file and then once
    created, sets permissions and renames the file. If the file is corrupted
    - ie on failed download, an error occurs, or for some other reason, the
    real file will not be created. The changes made here make `verify_gz`
    obsolete, we don't need to verify it if we have successfully created the
    file atomically. If it exists, it is not corrupt. If it is corrupt, the
    file won't exist on disk.

    While writing tests for this functionality I replaced the
    `RemoteFetcher` stub with `FakeFetcher` except for where we really do
    need to overwrite the `RemoteFetcher`. The new test implementation is much
    clearer on what it's trying to accomplish versus the prior test
    implementation.

    https://github.com/ruby/rubygems/commit/0cd4b54291

commit e7cf07ba3e6758e3e6d34754422505c75fdf9c80
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-15 07:28:41 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-15 07:35:26 +0900

    [DOC] Fix link in MakeMakefile

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15549

commit 490a03bad9d3c18f66ae004055145db34d8ba599
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-15 02:26:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 06:11:21 +0900

    [ruby/prism] Fix `sexp_processor` gem reference

    It's https://rubygems.org/gems/sexp_processor, not https://rubygems.org/gems/sexp

    https://github.com/ruby/prism/commit/b8a00a5f15

commit 3e5c4ebe4bab556af2dd5d1ea83fa6d16ac0578b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-15 03:32:27 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-15 03:37:36 +0900

    [DOC] Fix backticks in Numeric#ceil

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15546

commit cd27337d0b2141757d19d00e8f6bb86723b843e9
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-15 03:31:54 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-15 03:37:36 +0900

    [DOC] Fix backticks in Numeric#floor

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15546

commit 529b49144eaac5eb8deb5036e459bec9f7940175
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-15 01:59:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 02:14:16 +0900

    [ruby/prism] Only set location end when it is larger

    https://github.com/ruby/prism/commit/65595d6c2c

commit ca08351546602cc55f67739fb5c8f616ce8aa94e
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-15 01:48:23 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 02:14:02 +0900

    [ruby/prism] Unreference the block node before destroying it

    https://github.com/ruby/prism/commit/fc150b1588

commit 4a84fa1b39e1bcd8c62b2b5225535dabcdcfdac4
  Author:     Ryan Davis <ryand-github@zenspider.com>
  AuthorDate: 2025-12-13 06:08:53 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-15 01:42:51 +0900

    [ruby/prism] Define RubyParser::SyntaxError directly and drop require for ruby_parser.

    Had to add a require of sexp since that came in indirectly via ruby_parser.

    https://github.com/ruby/prism/commit/df677c324f

commit 674c3d73e0f92d730bd2e544be344585a638ab37
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-14 19:33:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-14 19:46:27 +0900

    [ruby/openssl] pkcs7: raise OpenSSL::PKCS7::PKCS7Error in #initialize

    When d2i_PKCS7_bio() and PEM_read_bio_PKCS7() fail to decode the input,
    OpenSSL::PKCS7.new currently raises ArgumentError. The usual practice
    in ruby/openssl where an error originates from the underlying OpenSSL
    library is to raise OpenSSL::OpenSSLError.

    Raise OpenSSL::PKCS7::PKCS7Error instead for consistency with
    OpenSSL::PKCS7.read_smime and all other existing #initialize methods
    that handle DER/PEM-encoded inputs.

    https://github.com/ruby/openssl/commit/67a608ce53

commit 7969b654181af13f547afb88834f017694881353
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-01-30 02:47:18 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-14 19:46:13 +0900

    [ruby/openssl] x509cert: update doc for OpenSSL::X509::Certificate#==

    Mention the underlying OpenSSL function. Add a note about the unreliable
    comparison when called on an incomplete object.

    Fixes https://github.com/ruby/openssl/issues/844

    https://github.com/ruby/openssl/commit/736af5b3c7

commit 9e22037eb50d7abe6385901c9b029347fd383305
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 11:58:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-14 11:59:10 +0900

    [ruby/io-console] bump up to 0.8.2

    https://github.com/ruby/io-console/commit/fbc7e1f31f

commit f6ef4efaa46cdd5a3cd4aa6e3918f5eec9358557
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-10 22:13:36 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-14 11:45:48 +0900

    ZJIT: Add a test for `--zjit-stats=<path>` option

    Fix up [ruby/ruby#15414](https://github.com/ruby/ruby/pull/15414), 29c29c2b7e972359ab83038c5dc27a7e53ae65c7

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15477

commit 3a4d534b5bf68c783aaea34d3f9e33bc96f49a85
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-10 22:04:43 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-14 11:45:48 +0900

    ZJIT: Fix tests about `--zjit-stats-quiet` option

    The `--zjit-stats-quiet` and `--zjit-stats=quiet` options differ.
    The latter option, `=quiet`, does print stats to the file "quiet", but
    does not suppress output like yjit option `--yjit-stats=quiet`.

    Fix up [ruby/ruby#15414](https://github.com/ruby/ruby/pull/15414), 29c29c2b7e972359ab83038c5dc27a7e53ae65c7

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15477

commit c26057ebafb23b063190d31d5b4d19a0e0a1306c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 00:41:02 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-14 11:11:52 +0900

    [Bug #21779] Do not export InitVM functions

    Fix ruby/io-console#105.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15539

commit bc2a8a002a6c41fc1b28e02e15e2fb2b72d1b66e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 00:32:50 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-14 11:11:27 +0900

    [Bug #21779] Uniquify `InitVM` functions as well as `Init`

    Avoid possible name conflict when `--with-static-linked-ext`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15539

commit 01db5d71a851ae79ed501eb64c1491b072d44f2c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 00:31:53 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-14 10:57:42 +0900

    Removed duplicate code

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15539

commit c198436f08801adb6e3f3dfdf50d47f4ebf5eab0
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 10:09:41 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-14 10:09:41 +0900

    Run omnibus compilations without git

commit 0159a98bc18641b3aa644e50b3d1081b1e447cf1
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 05:30:53 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-14 05:30:53 +0900

    [Feature #20925] Skip infinite loop test

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15541

commit b423204cb3851d1ad22d76578f7b516f1543c0dc
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-14 01:15:20 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-14 05:09:05 +0900

    Fix documentation of RB_PASS_CALLED_KEYWORDS in C API

commit e8d32dddc04b34e2454b1c37b271bc242dddb06e
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-04 23:15:57 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-14 01:57:53 +0900

    [ruby/openssl] ossl.c: implement OpenSSL::OpenSSLError#detailed_message

    An OpenSSL function sometimes puts more than one error entry into the
    thread-local OpenSSL error queue. Currently, we use the highest-level
    entry for generating the exception message and discard the rest.

    Let ossl_make_error() capture all current OpenSSL error queue contents
    into OpenSSL::OpenSSLError#errors and extend
    OpenSSL::OpenSSLError#detailed_message to include the information.

    An example:

        $ ruby -Ilib -ropenssl -e'OpenSSL::X509::ExtensionFactory.new.create_ext("a", "b")'
        -e:1:in 'OpenSSL::X509::ExtensionFactory#create_ext': a = b: error in extension (name=a, value=b) (OpenSSL::X509::ExtensionError)
        OpenSSL error queue reported 2 errors:
        error:11000082:X509 V3 routines:do_ext_nconf:unknown extension name
        error:11000080:X509 V3 routines:X509V3_EXT_nconf_int:error in extension (name=a, value=b)
                from -e:1:in '<main>'

    https://github.com/ruby/openssl/commit/d28f7a9a13

commit 6513cf9058978e06eb3433fa33c8f70bd1100352
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-14 00:30:34 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-14 00:43:14 +0900

    Export `GIT`

    Propagate the value given with `--with-git` configure option to
    tool/lib/vcs.rb.

commit 79a6ec74831cc47d022b86dfabe3c774eaaf91ca
  Author:     Akinori MUSHA <knu@idaemons.org>
  AuthorDate: 2025-11-20 23:36:21 +0900
  Commit:     Akinori MUSHA <knu@idaemons.org>
  CommitDate: 2025-12-13 23:33:09 +0900

    Enumerator.produce accepts an optional `size` keyword argument

    When not specified, the size is unknown (`nil`).  Previously, the size was always `Float::INFINITY` and not specifiable.

    [Feature #21701]

commit 0561eb94250f5f856ff2594f86f897295b680582
  Author:     Steven Johnstone <steven.james.johnstone@gmail.com>
  AuthorDate: 2025-11-19 18:30:57 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-13 23:29:47 +0900

    [ruby/prism] Prevent an infinite loop parsing a capture name

    Fixes https://github.com/ruby/prism/pull/3729.

    https://github.com/ruby/prism/commit/6e5347803c

commit 3a4ad76f9d63cf4773814d0a76e2e033207193fd
  Author:     YO4 <ysno@ac.auone-net.jp>
  AuthorDate: 2025-12-08 23:23:21 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-13 21:37:51 +0900

    [ruby/io-console] console_cursor_pos respects scroll position on windows

    https://github.com/ruby/io-console/commit/ae33785820

commit c8fd840599cbd312094247e772dc509656347c0d
  Author:     YO4 <ysno@ac.auone-net.jp>
  AuthorDate: 2025-12-08 21:10:14 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-13 21:37:51 +0900

    [ruby/io-console] console_goto respects scroll position on windows

    https://github.com/ruby/io-console/commit/d2a6c69697

commit 2912825829d8280cfc7862adaceb8ccf680dad69
  Author:     YO4 <ysno@ac.auone-net.jp>
  AuthorDate: 2025-12-08 21:10:14 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-13 21:37:51 +0900

    [ruby/io-console] avoid jumping scroll position when winsize changed

    On windows, IO.console.winsize= now respects the current view area and screen buffer size.

    https://github.com/ruby/io-console/commit/817aa65ea3

commit 9dbbdcc33fb8cafb0f85b3442d8be3d030acd711
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-13 20:31:49 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-13 20:34:11 +0900

    [ruby/io-console] Remove useless rb_check_arity() call

    https://github.com/ruby/io-console/commit/df444b93f1

commit 71dd272506a31f28d216f26b0568028ed600f6ed
  Author:     Shugo Maeda <shugo@ruby-lang.org>
  AuthorDate: 2025-12-13 13:52:13 +0900
  Commit:     Shugo Maeda <shugo@ruby-lang.org>
  CommitDate: 2025-12-13 13:52:13 +0900

    Remove useless rb_check_arity() calls

commit e1f5e61d6b1b9e937a58afcae644da0917f6dd49
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-13 08:00:18 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-13 11:23:24 +0900

    YJIT: Fix panic from overly loose filtering in identity method inlining

    Credits to @rwstauner for noticing this issue in GH-15533.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15534

commit 6ed5574b19ff2692aff0e3b6fbe2d69d3a202618
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-13 10:27:01 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-13 10:27:23 +0900

    Revert "ZJIT: Exclude failing ruby-bench benchmarks (#15479)"

    This reverts commit 1eb10ca3cb6cff98bb8c0946ed905921586c7d52.

    This should have been fixed by https://github.com/ruby/ruby/pull/15536.

commit eb7acd75e7ae28ef1a22a7cbf5a50f99667aa8a6
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-12-13 10:00:17 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-13 10:00:17 +0900

    ZJIT: Nil-fill locals in direct send (#15536)

    Avoid garbage reads from locals in eval.
    Before the fix the test fails with

        <"[\"x\", \"x\", \"x\", \"x\"]"> expected but was
        <"[\"x\", \"x\", \"x\", \"x286326928\"]">.

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 8f81d2b5c3d7e41a116b3b81a628b998d8e283be
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-12-13 06:35:41 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-13 08:55:18 +0900

    ZJIT: Don't inline non-parameter locals

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15533

commit 2f151e76b5dc578026706b31f054d5caf5374b05
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-12-13 08:29:02 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-13 08:29:02 +0900

    ZJIT: Allow ccalls above 7 arguments (#15312)

    ZJIT: Add stack support for CCalls

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 176e384bcffd9d3de5ca4b9e56781b3c2b7bdfdd
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-12 08:56:38 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-13 07:03:37 +0900

    Cache filesystem_encindex

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15515

commit e7a38b32e0516e6b7d74f6cd55480cb453486691
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-11 03:20:02 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-13 06:53:06 +0900

    Store Encoding#name as an attribute

    When debugging the fstring table, I found "UTF-8" to be the most common
    interned strings in many benchmarks.

    We have a fixed, limited number of these strings, so we might as well permanently
    cache their fstrings.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15489

commit 2884f53519c4b86072d5fc3b41a71cee697af8ba
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-13 03:42:00 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-13 05:29:04 +0900

    YJIT: Add missing local variable type update for fallback setlocal blocks

    Previously, the chain_depth>0 version of setlocal blocks did not
    update the type of the local variable in the context. This can leave
    the context with stale type information and trigger panics like in
    [Bug #21772] or lead to miscompilation.

    To trigger the issue, YJIT needs to see the same ISEQ before and after
    environment escape and have tracked type info before the escape. To
    trigger in ISEQs that do not send with a block, it probably requires
    Kernel#binding or the use of include/ruby/debug.h APIs.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15532

commit 3add3db797c4216423fdaa4bef6e2ee3c7630303
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-13 04:47:43 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-13 04:47:43 +0900

    Fewer calls to `GET_EC()` and `GET_THREAD()` (#15506)

    The changes are to `io.c` and `thread.c`.
    I changed the API of 2 exported thread functions from `internal/thread.h` that
    didn't look like they had any use in C extensions:

    * rb_thread_wait_for_single_fd
    * rb_thread_io_wait

    I didn't change the following exported internal function because it's
    used in C extensions:

    * rb_thread_fd_select

    I added a comment to note that this function, although internal, is used
    in C extensions.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 5903ed7ba9ca60546aa0dd97e92b3d381b7918d3
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-12 00:46:14 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-13 04:27:37 +0900

    Prevent ifunc procs from being made shareable

    [Bug #21775]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15503

commit 7909ce2a839ba1c3e134239189e6aa2de3b6b630
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-13 04:24:40 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-13 04:24:40 +0900

    move th->event_serial to rb_thread_sched_item (#15500)

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 6147b695870ce82ee3ad5305ce095b63889b8d9d
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-15 01:31:23 +0900
  Commit:     Kevin Newton <kddnewton@gmail.com>
  CommitDate: 2025-12-13 03:35:30 +0900

    Array#rfind

    Implement Array#rfind, which is the same as find except from the
    other side of the Array. Also implemented Array#find (as opposed to
    the generic one on Enumerable because it is significantly faster
    and to keep the implementations together.

    [Feature #21678]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15189

commit 4f900e3ce9cefa76bc2c94e0e591acd51bf0e638
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-12-13 02:42:40 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-12-13 03:26:31 +0900

    ZJIT: Only optimize `[]` and `[]=` for exact Hash, not Hash subclasses

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15505

commit 309d6ef9c3792d1116809620a01240c7b8f4406e
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-12-12 06:23:37 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-12-13 03:26:31 +0900

    ZJIT: Inline `Hash#[]=`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15505

commit 3a0596b9a51121ebb7d3db06c438bf4182507c2a
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-13 03:14:00 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-13 03:14:00 +0900

    ZJIT: Add Shape type to HIR (#15528)

    It's just a nicety (they fit fine as CUInt32) but this makes printing
    look nicer in real execution and also in tests (helps with #15489).

    Co-authored-by: Randy Stauner <randy@r4s6.net>

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit bb4a6f39519c101b6bdc847d11cad55f19e62e9a
  Author:     Ryan Davis <ryand-github@zenspider.com>
  AuthorDate: 2025-12-07 18:11:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-13 02:52:16 +0900

    [ruby/prism] Fixed Prism::Translation::RubyParser's comment processing

    Tests were failing in Flay under Prism.

    https://github.com/ruby/prism/commit/af9b3640a8

commit b8ba9cebb9472c125c946e36ea4455e7aae284a6
  Author:     tomoya ishida <tomoyapenguin@gmail.com>
  AuthorDate: 2025-12-13 01:40:49 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-13 01:40:49 +0900

    Fix binding.implicit_parameters_get/defined segfault when wrong name string is passed (#15530)

  Notes:
    Merged-By: tompng <tomoyapenguin@gmail.com>

commit f939cf40ba46f3a8136495702793748fa30c12c3
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-12 22:54:31 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-12 23:24:50 +0900

    Update NEWS about `Binding#implicit_parameters`, etc.

    [Bug #21049]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15525

commit 04422384ddf57159321f7fb214c457a378f65837
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-12 16:52:26 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-12 23:24:50 +0900

    Add docs to Binding#numbered_parameters, etc.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15525

commit 129d74c96b0b8f1b93704b34e66d2c18f4835e1b
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-12 16:43:25 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-12 23:24:50 +0900

    Binding#implicit_parameters, etc. support the implicit "it" parameter

    [Bug #21049]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15525

commit fa7cddc969f1eccbb377cfc752bbf82ee2887dde
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-12 14:53:17 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-12 23:24:50 +0900

    Add Binding#implicit_parameters, etc.

    This changeset introduces:

    * `Binding#implicit_parameters`
    * `Binding#implicit_parameter_get`
    * `Binding#implicit_parameter_defined?`

    [Bug #21049]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15525

commit d428d086c23219090d68eb2d027498c6ea999b89
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-12 18:14:50 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-12 18:46:06 +0900

    Simplify the code

    `thread_sched_to_waiting_common0` is no longer needed.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15527

commit e2fe0aae43fee4815c1fc0896a2f03de35bfd873
  Author:     Samuel Williams <samuel.williams@oriontransfer.co.nz>
  AuthorDate: 2025-12-12 18:12:41 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-12 18:12:41 +0900

    Avoid race condition in `test_without_handle_interrupt_signal_works`. (#15504)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit ff831eb0572b2d8f794acca478ea77c7bfefbc61
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-12 17:10:04 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-12 18:08:05 +0900

    thead_sync.c: directly pass the execution context to yield

    Saves one more call to GET_EC()

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15526

commit 7e7a1db579dad504a26e42d5f3efa5b2968389af
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-12 16:55:45 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-12 18:07:39 +0900

    Define Thread::ConditionVariable in thread_sync.rb

    It's more consistent with Mutex, but also the `#wait` method
    benefits from receiving the execution context instead of having
    to call `GET_EC`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15524

commit 175a0d5f1ad545d5f722e959a766eeed52e29ca1
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-12 17:35:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 17:39:02 +0900

    [ruby/timeout] Restore original signal handler in test_timeout_in_trap_handler

    https://github.com/ruby/timeout/commit/4ae8631acf

commit d9cc7621f39130c7c678af9eb72f7a28b539be9f
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-12-12 15:55:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 15:55:08 +0900

    Update bundled gems list as of 2025-12-12

commit 5ef4f88d5e0cea9a36702f8165a4d47a11c2a703
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-12 15:01:27 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-12 15:32:03 +0900

    use `ractor_sched_lock`

    instead of using `rb_native_mutex_lock` directly.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15522

commit 1794cfe12fe61dedebadead542927f9fef4104eb
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-12 14:44:09 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-12 15:21:29 +0900

    Binding#local_variable_defined? raises a NameError for numbered params.

    [Bug #21776]

commit 5541c0d896d220923e795aa4f87ceb6237d53c4b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-12 13:04:09 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-12 14:24:03 +0900

    Win32: Make `rb_w32_osid` return Windows NT always

    Since support for Windows 9x was dropped over a decade ago.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15520

commit f939f0433ab53bc1a8d567e0b52a09a95ce78bfb
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-12 12:54:24 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-12 14:24:03 +0900

    Win32: Deprecate Windows version info API

    `dwMajorVersion` alone has no meaning since Windows 7.  Use API in
    VersionHelper.h instead.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15520

commit 50e5c542cc0541fb38e52766d88d87bd8a96b072
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-12 12:39:59 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-12 14:24:03 +0900

    Win32: Remove the workaround for console reading bug

    It has been fixed at Windows 8, and we already have dropped the
    support Windows 8 and olders.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15520

commit 04494d9e4064a57accc8309da9b35754a3d24973
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-12 12:00:35 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-12 13:16:52 +0900

    `Binding#local_variable_defined?` must not handle numbered parameters

    [Bug #21776]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15519

commit be43ad37b7fe7dbeaec653c4ec3dfcf5999e2824
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 10:57:37 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 10:57:38 +0900

    release.yml: Fix tag conversion for Ruby 4.0

    and PREVIOUS_RELEASE_TAG for any .0 releases

commit 8fba4b0f6008b68845be89861ddb73190d53511e
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 10:54:48 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 10:54:48 +0900

    tool/format-release: Fix a wrong method reference

commit ec4c46709b74ae11a1d90ad3b2e8c9c79ee4afee
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 10:43:46 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 10:50:29 +0900

    tool/format-release: Carve out the version format logic

    to share it with tool/releng/update-www-meta.rb and another place I'm
    going to modify next.

commit faac344d1698b3f6b7e2bd8afbca1b7fbc46b9df
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 10:45:07 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 10:45:14 +0900

    make-snapshot: Fix Psych::DisallowedClass with newer psych

    ```
    $ tool/format-release ../www.ruby-lang.org 4.0.0-preview2 .
    /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/class_loader.rb:99:in 'Psych::ClassLoader::Restricted#find': Tried to load unspecified class: Date (Psych::DisallowedClass)
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/class_loader.rb:28:in 'Psych::ClassLoader#load'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/class_loader.rb:40:in 'Psych::ClassLoader#date'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/scalar_scanner.rb:65:in 'Psych::ScalarScanner#tokenize'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:65:in 'Psych::Visitors::ToRuby#deserialize'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:129:in 'Psych::Visitors::ToRuby#visit_Psych_Nodes_Scalar'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:30:in 'Psych::Visitors::Visitor#visit'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:6:in 'Psych::Visitors::Visitor#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:35:in 'Psych::Visitors::ToRuby#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:346:in 'block in Psych::Visitors::ToRuby#revive_hash'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:344:in 'Array#each'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:344:in 'Enumerable#each_slice'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:344:in 'Psych::Visitors::ToRuby#revive_hash'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:168:in 'Psych::Visitors::ToRuby#visit_Psych_Nodes_Mapping'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:30:in 'Psych::Visitors::Visitor#visit'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:6:in 'Psych::Visitors::Visitor#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:35:in 'Psych::Visitors::ToRuby#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:339:in 'block in Psych::Visitors::ToRuby#register_empty'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:339:in 'Array#each'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:339:in 'Psych::Visitors::ToRuby#register_empty'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:147:in 'Psych::Visitors::ToRuby#visit_Psych_Nodes_Sequence'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:30:in 'Psych::Visitors::Visitor#visit'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:6:in 'Psych::Visitors::Visitor#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:35:in 'Psych::Visitors::ToRuby#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:319:in 'Psych::Visitors::ToRuby#visit_Psych_Nodes_Document'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:30:in 'Psych::Visitors::Visitor#visit'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/visitor.rb:6:in 'Psych::Visitors::Visitor#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych/visitors/to_ruby.rb:35:in 'Psych::Visitors::ToRuby#accept'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych.rb:336:in 'Psych.safe_load'
            from /opt/rubies/3.4.6/lib/ruby/3.4.0/psych.rb:371:in 'Psych.load'
            from tool/format-release:80:in 'Tarball.parse'
            from tool/format-release:269:in 'Object#main'
            from tool/format-release:272:in '<main>'
    ```

commit 3a76625915e57eb328d23ae5dd621d8bf45b30e0
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-12-12 10:28:11 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-12 10:28:11 +0900

    ZJIT: Don't specialize calls with kwsplat (#15513)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 1f0ca55750413603057fabef39550feb9e7fc3c8
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 09:59:26 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-12 09:59:26 +0900

    make-snapshot: Update the tag format for Ruby 4.0+ (#15514)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 06a6ad44f6faf35542e0bd1e15658340d449c2cf
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 09:42:23 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 09:45:04 +0900

    make-snapshot: Remove an unnecessary variable

    This is a refactoring change, which should have no impact on behaviors.

    Now, if patchlevel is true, tag is empty. So `if patchlevel` always does
    nothing. Given that prerelease is false and tag is not nil, removing
    `if patchlevel` should have no impact.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15512

commit 6601640c68b02f0bf1ad58d9122e76c84b735f91
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 09:37:49 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 09:45:04 +0900

    make-snapshot: Branch if it's X.Y.Z or X.Y using when

    It just seems like a completely different input, so it makes more sense
    to me to have it as a separate case.

    Also, we don't need to support Ruby 2.0 or older.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15512

commit 0ecf68963571b70103f7fa35b7403585585d032c
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 09:35:12 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 09:45:04 +0900

    make-snapshot: Make preview/rc match stricter

    to make it a bit more consistent with the other branch

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15512

commit 58f9aca0ccc51a1f9c02280438518c9be8047dbd
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 09:33:49 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 09:45:04 +0900

    make-snapshot: Drop X.Y.Z-pN support

    We no longer make patchlevel releases.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15512

commit 12bf3a99d72f5f6f0a7633863e285029aa407c57
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 09:18:37 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 09:18:37 +0900

    update-www-meta.rb: Update the tag format for Ruby 4.0+

    Just copied format-release fixes in
    a973526c050fec044ffd7ceeba0ac8e8a1fed299 to this file.

commit aff0c6dad2486e939e7f6678c519314925dad866
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 08:52:46 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 08:52:46 +0900

    tool/merger.rb: Support the new format in remove_tag

commit 04299ca184daa836b143eabb7835540928076595
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-12 07:54:22 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-12 08:29:21 +0900

    monitor.c: skip GET_EC() on exit

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15510

commit a973526c050fec044ffd7ceeba0ac8e8a1fed299
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 07:41:36 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 07:49:17 +0900

    tool/format-release: Fix the tag format for Ruby 4.0+

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15508

commit 0564214a00450371527c7bd69fc13618e5f25f30
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 07:27:44 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-12-12 07:49:17 +0900

    tool/merger.rb: Update the tag format for Ruby 4.0+

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15508

commit 8210a117814662e5ad405d5824c5f1d100f450a5
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-12 06:05:16 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-12 07:25:57 +0900

    test_ractor.rb: old object while calling _id2ref

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15476

commit 07b2356a6ad314b9a7b2bb9fc0527b440f004faa
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-10 19:44:27 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-12 07:25:57 +0900

    Mutex: avoid repeated calls to `GET_EC`

    That call is surprisingly expensive, so trying doing it once
    in `#synchronize` and then passing the EC to lock and unlock
    saves quite a few cycles.

    Before:

    ```
    ruby 4.0.0dev (2025-12-10T09:30:18Z master c5608ab4d7) +YJIT +PRISM [arm64-darwin25]
    Warming up --------------------------------------
                   Mutex     1.888M i/100ms
                 Monitor     1.633M i/100ms
    Calculating -------------------------------------
                   Mutex     22.610M (± 0.2%) i/s   (44.23 ns/i) -    113.258M in   5.009097s
                 Monitor     19.148M (± 0.3%) i/s   (52.22 ns/i) -     96.366M in   5.032755s
    ```

    After:
    ```
    ruby 4.0.0dev (2025-12-10T10:40:07Z speedup-mutex 1c901cd4f8) +YJIT +PRISM [arm64-darwin25]
    Warming up --------------------------------------
                   Mutex     2.095M i/100ms
                 Monitor     1.578M i/100ms
    Calculating -------------------------------------
                   Mutex     24.456M (± 0.4%) i/s   (40.89 ns/i) -    123.584M in   5.053418s
                 Monitor     19.176M (± 0.1%) i/s   (52.15 ns/i) -     96.243M in   5.018977s
    ```

    Bench:

    ```
    require 'bundler/inline'

    gemfile do
      gem "benchmark-ips"
    end

    mutex = Mutex.new
    require "monitor"
    monitor = Monitor.new

    Benchmark.ips do |x|
      x.report("Mutex") { mutex.synchronize { } }
      x.report("Monitor") { monitor.synchronize { } }
    end
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15476

commit dc58d58a723cf56d2a59db52252b82755248b539
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-12 07:12:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 07:21:26 +0900

    [ruby/timeout] Fix failing timeout test

    ```
    Run options:
      "--ruby=./miniruby -I../ruby/lib -I. -I.ext/common  ../ruby/tool/runruby.rb --extout=.ext  -- --disable-gems"
      --excludes-dir=../ruby/test/.excludes
      --name=!/memory_leak/
      --seed=9843

    [ 1/31] TestTimeout#test_timeout_in_trap_handler = 0.00 s
    1) Error:
    TestTimeout#test_timeout_in_trap_handler:
    NoMethodError: undefined method 'kill' for nil
        /Users/luke/workspace/ruby-dev/ruby/test/test_timeout.rb:9:in 'TestTimeout#kill_timeout_thread'
        /Users/luke/workspace/ruby-dev/ruby/test/test_timeout.rb:424:in 'TestTimeout#test_timeout_in_trap_handler'

    Finished tests in 2.715032s, 11.4179 tests/s, 52.3014 assertions/s.
    31 tests, 142 assertions, 0 failures, 1 errors, 0 skips

    ruby -v: ruby 4.0.0dev (2025-12-11T21:56:23Z fix_timeout_test https://github.com/ruby/timeout/commit/1c5eacbf9a) +PRISM [arm64-darwin24]
    make: *** [yes-test-all] Error 1
    ```

    https://github.com/ruby/timeout/commit/e5bc1de901

commit 64062792c61d13d1eca9f637db3ed7da12a61154
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-12 06:12:00 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-12 06:12:00 +0900

    ZJIT: Check method visibility when optimizing sends (#15501)

    Fix https://github.com/Shopify/ruby/issues/874

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit fb80587f88e2cb1d52098fe967aed6c43d74a82e
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-12 05:24:19 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 05:45:58 +0900

    [ruby/timeout] Add windows to CI matrix

    https://github.com/ruby/timeout/commit/c8d63ce3fe

commit f8f8ff61062080887ad26a36bd58b51e631eee80
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-11 17:06:54 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-12 05:45:56 +0900

    auto_request_review.yml: Update path for jit related docs

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15493

commit eb889e474d02f79565f5d8cf001d86bd8aeb737d
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-11 16:55:05 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-12 05:45:56 +0900

    ZJIT: s/checking possible to build ZJIT/checking prerequisites for ZJIT/

    Reads better to me:

    > checking prerequisites for ZJIT... yes

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15493

commit c092c294d4ef08135c5d63db00824b3ec27274d2
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-11 16:41:55 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-12 05:45:56 +0900

    ZJIT: [DOC] Mention build prerequisites

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15493

commit 832aac6c283c59a1bcd3dc81badd380d0fc4dc2f
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-11 16:15:11 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-12 05:45:56 +0900

    Tune AS_CASE indentation style and remove `[*]` for default case

    There are many indentation styles for AS_CASE in this file but no one
    uses `[*]` for the default case.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15493

commit 1b7c8b7993c596cba7251dad16ff8e7234fd976f
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-12 05:19:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 05:21:21 +0900

    [ruby/timeout] Skip signal test on windows

    Windows has no SIGUSR1.

    There might be another usable signal, but this is breaking ruby master
    so I just want a quick fix for now.

    https://github.com/ruby/timeout/commit/b19043e8d0

commit d02c97157476bbd9774f2bf6425a69166b99da1b
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-12 03:57:06 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-12 03:57:06 +0900

    Stop bumping RUBY_PATCHLEVEL in release versions (#15502)

    [[Misc #21770]](https://bugs.ruby-lang.org/issues/21770)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 89e09e4daf1b27c94dbf326c8f5b0b5f864a6e72
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-06 19:16:59 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-12 02:53:18 +0900

    Add assumption to free_vm_weak_references

    Help the compiler know that we always get a heap object here.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15491

commit 32e6dc0f31b98cf17dd9ace46561d74a55966b20
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-06 16:31:33 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-12 02:53:10 +0900

    Speed up class allocator search

    This rewrites the class allocator search to be faster. Instead of using
    RCLASS_SUPER, which is now even slower due to Box, we can scan the
    superclasses list to find a class where the allocator is defined.

    This also disallows allocating from an ICLASS. Previously I believe that
    was only done for FrozenCore, and that was changed in
    e596cf6e93dbf121e197cccfec8a69902e00eda3.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15490

commit 459c377222e746a5e39756bf5d648d16893e831c
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-06 16:32:15 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-12 02:53:10 +0900

    Assume result from allocator will be valid

    This adds a fastpath in class_call_alloc_func to simply return if the
    class matches the one expected.

    I think we could probably just remove this check, or move it to the debug
    build.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15490

commit b5604833a37bf8cac132906fbf8297d6d4ae9976
  Author:     Gil Desmarais <gildesmarais@users.noreply.github.com>
  AuthorDate: 2025-12-12 01:38:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-12 01:38:39 +0900

    Fix Set#^ to not mutate its argument (#15296)

    * test(set): add test Set#xor does not mutate other_set

    * Fix Set#^ to not mutate its argument

  Notes:
    Merged-By: knu <knu@idaemons.org>

commit 3831a82d1916025f7dcdebcb9b66a0cd4fc98f00
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-12 00:12:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 00:32:48 +0900

    [ruby/json] Revert "Skip test failing with JRuby in CI"

    This reverts commit https://github.com/ruby/json/commit/b7e1734d9ca0.

    https://github.com/ruby/json/commit/5793694ee6

commit 4ab45e8f0cdf008db89c54c14a8214b915b80ab9
  Author:     kares <self@kares.org>
  AuthorDate: 2025-12-11 18:53:31 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-12 00:01:04 +0900

    [ruby/psych] bump snakeyaml-engine to 2.10 (jruby)

    https://github.com/ruby/psych/commit/506bf75ab2

commit 965ae7f386d7b403c4cc32d260beab4acce31856
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-11 23:58:23 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-11 23:58:23 +0900

    Fix typo in Fiber.[] docs

commit b49ff7cc700ffdba26fabaaf8167eee189797edf
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-11 22:16:49 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-11 22:38:35 +0900

    [ruby/timeout] Make Timeout.timeout work in a trap handler on CRuby

    * Fixes https://github.com/ruby/timeout/issues/17

    https://github.com/ruby/timeout/commit/1a499a8f96

commit 9865048a345a466b935226fa24515b32be664582
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-11 22:26:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-11 22:38:35 +0900

    [ruby/timeout] Encapsulate adding a timeout Request

    https://github.com/ruby/timeout/commit/cb2ba88fed

commit c678e1bdd3e43814814bb8ab44420de412f6235d
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-11 20:29:09 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-11 22:05:40 +0900

    [ruby/timeout] Revise Timeout.timeout docs and add a section about `ensure`

    https://github.com/ruby/timeout/commit/7cfa5a6778

commit 46d8e6d99321b764c4ce529ca1b0c39670193e67
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-11 19:20:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-11 22:05:39 +0900

    [ruby/timeout] Reset the interrupt mask when creating the Timeout thread

    * Add tests related to Thread.handle_interrupt
    * Fixes https://github.com/ruby/timeout/issues/41

    https://github.com/ruby/timeout/commit/a52720e82a

commit d6b40320b2cfecf9802e664a4869353d195fcc6d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-11 19:34:01 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-11 20:56:20 +0900

    Append found lib/<file> entries to spec.files to support out-of-place builds

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15497

commit 6b469b7e40f94f25b50463de2190d540d646e3f1
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-11 19:55:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-11 19:58:31 +0900

    [ruby/json] Release 2.18.0

    https://github.com/ruby/json/commit/1cdd2122d5

commit 6ad4e6a298e7b5d0f925aacecc5d375968ebde15
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-11 19:09:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-11 19:53:15 +0900

    [ruby/json] Add `allow_control_characters` parsing option

    While it's not allowed by the spec, some parsers like Oj do
    accept it, and it can be blocking a transition.

    Having this feature can help people migrate.

    https://github.com/ruby/json/commit/3459499cb3

commit 281a000d6669d3fbb1c0a2f940cbb9c7c01732e6
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2023-03-31 01:09:22 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-11 19:20:12 +0900

    [Bug #19558] Allow ASCII range to mix with Unicode dump

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15488

commit dc41cf332613db24af512bc7e959fc9a17d85d59
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-11 18:42:07 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-11 18:42:07 +0900

    [Misc #21690] Sync parser_bits.h from internal/bits.h

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15496

commit c5b51bdd8c69ae038daf80cb227df854ca0110f1
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-12-02 11:03:02 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-12-11 18:35:39 +0900

    [Bug #21712] Allow `.()` call for command with block

    This commit allows codes like `a b do end.()` and `a b do end&.()`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15495

commit 278a93a1bb721427ab1a2fa8d68c6f916c39de1d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-11 18:18:09 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-11 18:18:13 +0900

    This change didn't fix the original issue.

    Revert "Use base: with Dir.glob for bundler.gemspec"

    This reverts commit 87f0701b6106569a8486c9623dc6b0b32438355c.

commit 240e7999de6f6293a577528972dbc220c6d2cc5a
  Author:     Shugo Maeda <shugo@ruby-lang.org>
  AuthorDate: 2025-12-11 17:57:49 +0900
  Commit:     Shugo Maeda <shugo@ruby-lang.org>
  CommitDate: 2025-12-11 18:00:32 +0900

    [DOC] Update NEWS for `*selectors` arguments added to `String#strip` etc.

commit 87f0701b6106569a8486c9623dc6b0b32438355c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-11 17:06:28 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-11 17:57:14 +0900

    Use base: with Dir.glob for bundler.gemspec

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15494

commit c76ba839b153805f0498229284fea1a809308dbc
  Author:     Shugo Maeda <shugo@ruby-lang.org>
  AuthorDate: 2025-12-11 17:34:57 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 17:34:57 +0900

    Allow String#strip etc. to take optional character selectors

    [Feature #21552]

    Co-Authored-By: Claude <noreply@anthropic.com>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15400

    Merged-By: shugo <shugo@ruby-lang.org>

commit 83e080705cc7aba4571b23e7034a3edd84cc26a6
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-11 10:28:03 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-11 10:28:03 +0900

    Remove an excess closing bracket

commit c7d56e90d381f0bf115a5c76cbef9df6ae19f4c9
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-11 09:07:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 09:07:39 +0900

    ZJIT: Re-compile ISEQs invalidated by PatchPoint (#15459)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 1c29fbeca00d4be63e3f537609b88a8f10115ae4
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-11 05:58:23 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-11 09:02:01 +0900

    GC_DEBUG_STRESS_TO_CLASS should only be for debug

    I believe this was accidentally left in as part of
    2beb3798bac52624c3170138f8ef65869f1da6c0

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15485

commit 5828872ec4814a5a07f5f4c7686c543127619197
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-11 06:13:21 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-11 09:01:27 +0900

    Update Ractor warning message

    Although the Ractor API is still experimental and may change, and there
    may be some implementation issues, we should no longer say that there
    are many.

    Hopefully we can remove this warning entirely for Ruby 4.1

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15486

commit b208f46f48f88cf4d0b813edbfab07214d085e89
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-11 06:26:22 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-11 07:03:26 +0900

    ZJIT: Don't fold LoadField with negative offsets and use byte_add

    No point doing the manual size unit conversion for add. Sorry, no new
    tests since there is no way to generate a LoadField with a negative
    offset from ruby code AFAICT. Careful with the `as` casts.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15487

commit 029a48176cf9fd367d52d8c9f87cb9f77d425a43
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-09 12:25:05 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-11 06:35:00 +0900

    JITs: Drop cargo and use just rustc for release combo build

    So we don't expose builders to network flakiness which cannot be worked
    around using cargo's --offline flag.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15456

commit 121d0da02580693ac5f872578284e26e2668b577
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-09 12:30:22 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-11 06:35:00 +0900

    JITs: Move cargo-specific variables into conditional

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15456

commit 1bab216062e94e8856ddf3760806b189b4ac5b09
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-09 12:12:12 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-11 06:35:00 +0900

    ZJIT: For rustc build, remove cargo touch(1) workaround

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15456

commit b0ea9070d4f42f1844af7eac347ddfb9b4760439
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-09 12:09:38 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-11 06:35:00 +0900

    YJIT: For rustc build, remove cargo touch(1) workaround

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15456

commit 96c804de1f6a495c339f85069a648d37dadfbc80
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-09 12:08:04 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-11 06:35:00 +0900

    ZJIT: Remove unused includes from zjit.c

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15456

commit c8909030974772b4f19742bac55875e32674d27f
  Author:     Tobias Lütke <tobi@shopify.com>
  AuthorDate: 2025-12-11 06:18:08 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 06:18:08 +0900

    ZJIT: Fold LoadField on frozen objects to constants (#15483)

    * ZJIT: Fold LoadField on frozen objects to constants

    When accessing instance variables from frozen objects via attr_reader/
    attr_accessor, fold the LoadField instruction to a constant at compile
    time. This enables further optimizations like constant propagation.

    - Add fold_getinstancevariable_frozen optimization in Function::optimize
    - Check if receiver type has a known ruby_object() that is frozen
    - Read the field value at compile time and replace with Const instruction
    - Add 10 unit tests covering various value types (fixnum, string, symbol,
      nil, true/false) and negative cases (unfrozen, dynamic receiver)

    * Run zjit-test-update

    * Add a test that we don't fold non-BasicObject

    * Small cleanups

    ---------

    Co-authored-by: Max Bernstein <ruby@bernsteinbear.com>
    Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit ccfd31162a8455ac2502ebaf90873b966a866216
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-11 05:23:08 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-11 05:56:40 +0900

    Remove object_id in NEWOBJ tracepoint test

    Generating an object_id for any type other than T_OBJECT (and T_CLASS)
    will inevitably allocate an IMEMO/fields objects, which isn't supported
    in a NEWOBJ tracepoint.

    See: https://bugs.ruby-lang.org/issues/21710#note-23

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15484

commit 3640cfe5e0f3ed30f90ae622ef92e6c154213a09
  Author:     Alex Rocha <9896751+alexcrocha@users.noreply.github.com>
  AuthorDate: 2025-12-11 05:30:04 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 05:30:04 +0900

    ZJIT: Use inline format args (#15482)

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit 330ddccfee1c986add758384b31b0677935bfa3a
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-11 03:10:54 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 03:10:54 +0900

    ubuntu.yml: Add a ruby-bench job without ZJIT (#15480)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 41ee65899a7a6c6abca9701957bc84f598d2491a
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-09 08:54:26 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-11 02:49:18 +0900

    Always treat encoding as TYPEDDATA

    Encodings are RTypedData, not the deprecated RData. Although the
    structures are compatible we should use the correct API.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15472

commit 1eb10ca3cb6cff98bb8c0946ed905921586c7d52
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-11 02:45:09 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 02:45:09 +0900

    ZJIT: Exclude failing ruby-bench benchmarks (#15479)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit ed18a212abe2d92feb441db2b6f084c0c77a65e4
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-11 01:08:55 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-11 01:08:55 +0900

    ZJIT: Check if shape is too complex before reading ivar by index (#15478)

    This fixes a crash when the new shape after a transition  is too complex;
    we need to check that it's not complex before trying to read by index.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 2b66fc763a6657c9a25719c5f70ae7b66abc2232
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-10 20:42:33 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-10 20:42:33 +0900

    Fix typos in comment of rb_current_execution_context()

commit 023c6d808a85bd8fb711ac3986972618037f12ad
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-10 18:54:18 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 19:14:39 +0900

    [ruby/json] Add a specific error for unescaped newlines

    It's the most likely control character so it's worth
    giving a better error message for it.

    https://github.com/ruby/json/commit/1da3fd9233

commit 6777d1012d24b4dd3585809030333ccfb1c46799
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-10 18:35:37 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-10 19:06:35 +0900

    Modernize Monitor TypedData

    Make it embedded and compaction aware.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15475

commit c5608ab4d79f409aaa469b4f4a20962a0ba4a688
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-03 23:35:03 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-10 18:30:18 +0900

    Monitor: avoid repeated calls to `rb_fiber_current()`

    That call is surprisingly expensive, so trying doing it once
    in `#synchronize` and then passing the fiber to enter and exit
    saves quite a few cycles.

commit e8a55274f202df1cfddc25aa14da34ba5a0e538d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 16:07:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 16:08:05 +0900

    [ruby/forwardable] v1.4.0

    https://github.com/ruby/forwardable/commit/0257b590c2

commit 14ff851185bb8ff399e98b74cc107302a4e08e18
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-24 16:48:19 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 16:05:06 +0900

    [ruby/forwardable] Simpler and faster check for the delegation fastpath

    Fix: https://github.com/ruby/forwardable/issues/35
    [Bug #21708]

    Trying to compile code to check if a method can use the delegation
    fastpath is a bit wasteful and cause `RUPYOPT=-d` to be full of
    misleading errors.

    It's simpler and faster to use a simple regexp to do the same check.

    https://github.com/ruby/forwardable/commit/de1fbd182e

commit 375025a3864fc944dc9f42909a6c5386c749d5fd
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-10 08:42:04 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-10 15:48:06 +0900

    Fix typo and shadowing

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15358

commit 462df17f8689e9ee87a45b88bb3283fd339e1247
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-09 19:17:38 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-10 15:48:06 +0900

    Attempt to reuse garbage slots in concurrent hash

    This removes all allocations from the find_or_insert loop, which
    requires us to start the search over after calling the provided create
    function.

    In exchange that allows us to assume that all concurrent threads insert
    will get the same view of the GC state, and so should all be attempting
    to clear and reuse a slot containing a garbage object.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15358

commit 81fbdff8fdf2ae7afb2fa19319ff7d40379521fe
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-25 09:50:29 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-10 15:48:06 +0900

    Use continuation bit in concurrent set

    This refactors the concurrent set to examine and reserve a slot via CAS
    with the hash, before then doing the same with the key.

    This allows us to use an extra bit from the hash as a "continuation bit"
    which marks whether we have ever probed past this key while inserting.
    When that bit isn't set on deletion we can clear the field instead of
    placing a tombstone.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15358

commit 8e87f201cf54b112642ed0421ddabd57336d672e
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 15:42:31 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 15:43:06 +0900

    [ruby/optparse] v0.8.1

    https://github.com/ruby/optparse/commit/f2e31e81a5

commit 254653db8521618e08aaccaa63efdb42bd6ee84b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 15:38:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 15:39:36 +0900

    [ruby/win32-registry] v0.1.2

    https://github.com/ruby/win32-registry/commit/2a6ab00f67

commit 6ec5c5f1c8ac438752b53061d0cdd68a7e4ca8f9
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-15 22:48:35 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:18:21 +0900

    [ruby/stringio] [DOC] Doc for StringIO.size
    (https://github.com/ruby/stringio/pull/171)

    https://github.com/ruby/stringio/commit/95a111017a

commit b4a1f170583eb5553814261c311b183cbb390ba2
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-15 22:47:46 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:18:15 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#each_line
    (https://github.com/ruby/stringio/pull/165)

    Adds to "Position":  pos inside a character.

    Makes a couple of minor corrections.

    ---------

    https://github.com/ruby/stringio/commit/ff332abafa

    Co-authored-by: Sutou Kouhei <kou@cozmixng.org>

commit 5bc65db5550719a808858af361d5152931469c88
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 08:20:13 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:17:09 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#gets
    (https://github.com/ruby/stringio/pull/190)

    https://github.com/ruby/stringio/commit/77209fac20

commit f623fcc7d069cdfcaf25285c986ed995530a686f
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 08:18:18 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:16:53 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO.getbyte
    (https://github.com/ruby/stringio/pull/188)

    https://github.com/ruby/stringio/commit/66360ee5f1

commit 668fe01182df185c3592061e22087b6454132fec
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-06 01:07:45 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:16:39 +0900

    [ruby/stringio] [DOC] Fix link

    https://github.com/ruby/stringio/commit/e2d24ae8d7

commit 842f91aec09e419481af6358657e06973f2410c2
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 14:15:47 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:13:28 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#getc
    (https://github.com/ruby/stringio/pull/189)

    https://github.com/ruby/stringio/commit/e3d16d30ed

commit bbee62abbd26e3bf526dbbfddd17d72b81402a72
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 14:48:32 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-10 15:04:02 +0900

    We don't need to check the latest release of pathname

    Pathname is now embedded class of Ruby

commit 4523a905327d8438f845f5a75822225ccd041beb
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 14:28:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 14:28:49 +0900

    [ruby/date] v3.5.1

    https://github.com/ruby/date/commit/1d0aadc295

commit 5f444cba4741b2ff0e1e95f4a179329b1ebc74a2
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 14:21:59 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 14:22:25 +0900

    [ruby/ipaddr] v1.2.8

    https://github.com/ruby/ipaddr/commit/93ef50bc04

commit ec862b41dc9aaa2a22d80961b62417a347bc84ec
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-10 14:18:03 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-10 14:18:03 +0900

    ZJIT: Prohibit ZJIT support with USE_FLONUM=0 (#15471)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 814f23747b5fd7b0d5fb6cd8e45833ec39482858
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 14:11:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 14:12:32 +0900

    [ruby/resolv] v0.7.0

    https://github.com/ruby/resolv/commit/a0e89bbe48

commit df4fc0f7fcda6c552084ea0638c7185b4a98c939
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-10 14:07:11 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 14:08:04 +0900

    [ruby/psych] v5.3.0

    https://github.com/ruby/psych/commit/d8053b0d16

commit 3636277dc5837bcedcd5ef43d49423194064a676
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-10 12:09:50 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-10 12:09:50 +0900

    Add `NUM2PTR` and `PTR2NUM` macros

    These macros have been defined here and there, so collect them.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15470

commit 3bb97e7707a0be8c371cb9c704cb1e21062e1fc6
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-10 04:32:34 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-10 10:23:37 +0900

    `_RUBY_DEBUG_LOG` usable anywhere

    even if `USE_RUBY_DEBUG_LOG=0`.
    It becomes `fprintf(stderr, ...)`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15469

commit f9eb0d8da2cb570c6cf7754e4078ed0de266a52c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-10 09:22:09 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-10 09:22:09 +0900

    Use `ruby_version_is`

    As the markers for spec/mspec/tool/remove_old_guards.rb.

commit 29c29c2b7e972359ab83038c5dc27a7e53ae65c7
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-12-10 08:14:49 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-10 08:14:49 +0900

    ZJIT: Add dump to file for --zjit-stats (#15414)

    * ZJIT: Add dump to file for --zjit-stats

    * ZJIT: Rename --zjit-stats=quiet to --zjit-stats-quiet

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit e436dba9fee4c75104212ad0fd16ab7f753985c4
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-23 12:58:43 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-10 07:35:50 +0900

    Use rb_error_frozen_object in rb_class_modify_check

    This provides information on the class of the frozen object. It also
    results in a much simpler implementation.

    Fixes [Bug #21374]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15303

commit 76fb0d244b95a23116bfe72bb2422395c3a76477
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-23 12:51:46 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-10 07:35:50 +0900

    Use actual class instead of singleton class in frozen error message

    With the following code:

    ```ruby
    object = []
    object.singleton_class
    object.freeze
    object.instance_variable_set(:@a, 42)
    ```

    The previous error message was:

    ```
    can't modify frozen #<Class:#<Array:0x00000631d1308f78>>: []
    ```

    With this change, the error message is:

    ```
    can't modify frozen Array: []
    ```

    Since we show the inspect value of the affected object, I think
    including the singleton class instead of the actual class if it
    exists makes the error message harder to understand.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15303

commit 1e7cf7b2bc1f9b356b2e980e1e18548618da6363
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-10-11 08:32:43 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-10 06:19:52 +0900

    Fix refinement modification of method visibility in superclass

    Previously, this didn't work correctly, resulting in a
    SystemStackError. This fixes the issue by finding the related
    superclass method entry, and updating the orig_me in the
    refinement method to point to the superclass method.

    Fixes [Bug #21446]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/14817

commit 6409715212d22699bd2751a363b050a5d8b94b83
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-12-03 10:34:36 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-10 05:44:50 +0900

    Fix allocationless anonymous splat keyword argument check

    Previously, if an argument splat and keywords are provided by
    the caller, it did not check whether the method/proc accepted
    keywords before avoiding the allocation. This is incorrect,
    because if the method/proc does not accept keywords, the
    keywords passed by the caller are added as a positional
    argument, so there must be an allocation to avoid mutating
    the positional splat argument.

    Add a check that if the caller passes keywords, the
    method/proc must accept keywords in order to optimize.
    If the caller passes a keyword splat, either the
    method/proc must accept keywords, or the keyword splat must
    be empty in order to optimize.

    If keywords are explicitly disallowed via `**nil`, the
    optimization should be skipped, because the array is mutated
    before the ArgumentError exception is raised.

    In addition to a test for the correct behavior, add an
    allocation test for a method that accepts an anonymous splat
    without keywords.

    Fixes [Bug #21757]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15383

commit bd0d08b6d20e4145e472578d47164fcce14c0abf
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-12-10 05:29:58 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-10 05:29:58 +0900

    ZJIT: Show send fallback reason in HIR dump (#15454)

    This adds comments to the hir dump output like this:

      v13:BasicObject = SendWithoutBlock v6, :test, v11 # SendFallbackReason: Complex argument passing

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 98390d9360b8b8c82f798f51567587882c4e5c00
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-10 01:39:15 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-10 02:08:00 +0900

    Don't declare `rbimpl_check_typeddata` as pure

    [Bug #21771]

    It may raise so it's incorrect and can lead to the compiler
    optimizing the call out.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15467

commit f0b288adf7b3550dc5be6a02316c5822ff47ca82
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-12-06 11:57:08 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-10 00:19:38 +0900

    ZJIT: Put keyword bits in callee frame rather than c_args

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15241

commit c42f4d80eabc6b9b4117253a2ba2ee0b9526f253
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-15 06:50:39 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-10 00:19:38 +0900

    ZJIT: Handle caller_kwarg in direct send when all keyword params are required

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15241

commit 76d845aa7a0fa07aa3e733528cbd7e48feccfd59
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-19 08:19:49 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-10 00:19:38 +0900

    ZJIT: Test additional arg passing scenarios

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15241

commit 7ecfb1b2324d9488d4bd94801ed8a694d3c1ee0b
  Author:     YO4 <ysno@ac.auone-net.jp>
  AuthorDate: 2025-12-08 21:41:02 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-10 00:04:41 +0900

    [ruby/resolv] use domain suffix from 'Domain' instead of 'NV Domain'

    'NV Domain' does not change results of `powershell -command Get-DnsClientGlobalSetting`.
    'Domain' do this.

    https://github.com/ruby/resolv/commit/d49e3d5b84

commit 1933f1291a788369b252be80b0d452716d35831a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-09 23:44:06 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-09 23:44:06 +0900

    [DOC] Clear one of known issues of Ruby Box

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15464

commit 1e6a479520cb13f927399c97d363558b3beeaea7
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-03 10:41:39 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-09 23:41:50 +0900

    Box: relax the condition of clean up

    It is impossible to delete DLLs being loaded on Windows.  I guess that
    unnamed (no accessible path on the filesystem) files are not allowed
    essentially.  The only way is to relax the condition, such as no files
    are left after the process terminated, probably.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15107

commit 07e85e1dba3e15c714044660f731a90ce86c8c24
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-02 22:22:01 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-09 23:41:50 +0900

    Box: add a test case about deleting .so/.dll files

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15107

commit 573896a40ac25bd9febb2bbc0502b43ef36f9b9b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-08 11:05:17 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-09 23:41:50 +0900

    Box: remove copied extension files

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15107

commit e8568bbcf20fafcb82d8b537b99762528dfbdc3e
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-09 23:03:41 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-09 23:08:33 +0900

    [DOC] Update Ruby Box documents (known issues)

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15463

commit cb9510f539e12f7c58bf2e74186c6a48b62fec3c
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-04 11:16:27 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-09 22:52:05 +0900

    ZJIT: Support opt_newarray_send with PACK_BUFFER

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15407

commit c8441e8db52fe260545b83ffbe5278aff242bd14
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-04 10:53:50 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-09 22:52:05 +0900

    ZJIT: Clean up opt_newarray_send

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15407

commit edca81a1bb72a9dc54a37766d2c80790dec13884
  Author:     Abrar Habib <86024593+dddictionary@users.noreply.github.com>
  AuthorDate: 2025-12-09 21:41:09 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-09 21:41:09 +0900

    ZJIT: Add codegen for FixnumDiv (#15452)

    Fixes https://github.com/Shopify/ruby/issues/902

    This pull request adds code generation for dividing fixnums.
    Testing confirms the normal case, flooring, and side-exiting on division by zero.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 5ae2bd240f0adea46358f0a95bc26276d9f0cc31
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-09 21:29:36 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-09 21:36:26 +0900

    [DOC] Add Ruby::Box on NEWS

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15462

commit 0da74e0aa0189b1d2ec9dadf7b580f9bcd6adee7
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-09 13:51:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 21:09:53 +0900

    [ruby/rubygems] Bump Rubygems version to 4.0.1

    (cherry picked from commit https://github.com/ruby/rubygems/commit/f3e5ebf5afe7)

    https://github.com/ruby/rubygems/commit/583b0222ad

commit 875c4c7dfdf9f9271fde47d6616249724af4d014
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-09 13:51:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 21:09:52 +0900

    [ruby/rubygems] Bump Bundler version to 4.0.1

    (cherry picked from commit https://github.com/ruby/rubygems/commit/26c1db5a65a8)

    https://github.com/ruby/rubygems/commit/bbb5b767d0

commit 8d1eafa7a7289141338a6ace6570e6850e529347
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 00:37:27 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-09 20:50:35 +0900

    Remove duplicate path names in error message

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15430

commit ee6784f2899364f9bfd8d605b1bea7d78777a116
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-10-20 13:30:46 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-09 20:50:35 +0900

    Refine `copy_ext_file`

    - Define the error constants.
    - Use system calls to copy files if available.
    - Simplify fallback copying.
    - Copy without stdio buffering.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15430

commit 99133a66f3e5c64c2c2f5dbca0d1be816254f636
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 21:11:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 19:37:15 +0900

    [ruby/net-http] Check whether TCPSocket#initialize supports open_timeout once and without exceptions

    * See discussion in https://github.com/ruby/net-http/pull/224
    * This check is known to work on at least CRuby, TruffleRuby and JRuby.
    * Exceptions show up with `ruby -d`/`$DEBUG == true` and would show for every Net::HTTP instance.

    https://github.com/ruby/net-http/commit/8c76f92779

commit 79c57d747f7d1e6253a6df7b624a9930cb8a523c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-09 17:22:03 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-09 17:48:57 +0900

    Fixed by `misspell -w -error -source=text`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15460

commit 25f277abe481b9109d59d28a2eee3f9998a9ad3a
  Author:     hi <hi@localhost>
  AuthorDate: 2025-12-05 23:56:32 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-09 16:45:38 +0900

    Fix typos in gc.c and gc.rb

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15420

commit 59314911a13d10eab2afbca62081311d702a1373
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-09 00:18:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 11:43:51 +0900

    [ruby/prism] Nested heredoc with newline terminator

    When you have a heredoc interpolated into another heredoc where
    the inner heredoc is terminated by a newline, you need to avoid
    adding the newline character a second time.

    https://github.com/ruby/prism/commit/8eeb5f358b

commit 268cbb29c7f69ea5a6d45973091a6e5f5aa89403
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-09 00:07:39 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 11:43:33 +0900

    [ruby/prism] Fully handle unreferencing a block exit

    If a block exit has a further block exit in its subtree, we need to
    keep recursing.

    https://github.com/ruby/prism/commit/855d81a4a8

commit cbf39c3be5b71b7321cfba768417427e7c3bf4ad
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-08 22:37:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 11:43:24 +0900

    [ruby/prism] Fix up call target node when invalid

    When there is an invalid syntax tree, we need to make sure to fill
    in the required call operator location.

    https://github.com/ruby/prism/commit/937313d7f0

commit 71354a9879c5e68b215469ef1b17eeb1ba308ada
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-08 22:26:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 11:43:05 +0900

    [ruby/prism] Fix hash pattern location when missing nodes

    https://github.com/ruby/prism/commit/0ad30561e2

commit 12c16f9dedb38af8111809229495e28e8d37b569
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-12-09 01:39:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 11:01:59 +0900

    [ruby/rubygems] Fix Bundler removing executables after creating them

    When running a fresh `bundle install` with gems that contains
    executables, Bundler will generate binstubs but soon after will remove
    them. This is a regression introduced in https://github.com/ruby/rubygems/commit/573ffad3ea4a.

    This results in doing `bundle install && bundle exec foo` to raise an
    error saying `foo` couldn't be found.

    This issue only appears if `BUNDLE_CLEAN` is set.

    At the end of the installation process, when Bundler has installed
    gems and generated binstubs, it runs the cleanup.

    1. It [detects](https://github.com/ruby/rubygems/blob/4f8aa3b40cded3465bb2cd761e9ce7f8673b7fcb/bundler/lib/bundler/runtime.rb#L182) the executable for the current specs
    2. Any existing executables not detected is then removed https://github.com/ruby/rubygems/blob/4f8aa3b40cded3465bb2cd761e9ce7f8673b7fcb/bundler/lib/bundler/runtime.rb#L194.

    The issue being that 1. now returns an empty array where as it should
    return the executables of the gems from the current bundle.

    The problem is in https://github.com/ruby/rubygems/commit/573ffad3ea4a where we
    removed the `executables` method from the `EndpointSpecification`.
    When Bundler reads the lockfile, it creates a `EndpointSpecification`
    object for each spec. At this point, the EndpointSpecification doesn't
    know about the `executables` of a gem. Once Bundler fetches the
    `gemspec` from the remote, it swaps the the "spec" with the real one
    and from here knows what executables the gem has.

    Reintroduce the `executables` method and the `bindir` in the
    EndpointSpecification class. From what I'm seeing, the removal
    of those wasn't needed to resolve the issue where Bundler remembers
    CLI flags. This is probably an oversight.

    https://github.com/ruby/rubygems/commit/b47f6b0247

commit 19172d64ebe909f185e28b1d8368a8a920f94a8b
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 20:24:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 10:37:51 +0900

    [ruby/rubygems] Fix indentation of the info message for default_cli_command

    * It looked like:
                In a future version of Bundler, running `bundle` without argument will no longer run `bundle install`.
                Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly for scripts like CI/CD.
                You can use the future behavior now with `bundle config set default_cli_command cli_help --global`,
                or you can continue to use the current behavior with `bundle config set default_cli_command install --global`.
                This message will be removed after a default_cli_command value is set.
      Bundler version 4.0.0 (2025-12-08 commit https://github.com/ruby/rubygems/commit/9b4819ae18)
    * And now looks like:
      In a future version of Bundler, running `bundle` without argument will no longer run `bundle install`.
      Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly for scripts like CI/CD.
      You can use the future behavior now with `bundle config set default_cli_command cli_help --global`,
      or you can continue to use the current behavior with `bundle config set default_cli_command install --global`.
      This message will be removed after a default_cli_command value is set.

      Bundler version 4.0.0 (2025-12-08 commit https://github.com/ruby/rubygems/commit/9b4819ae18)

    https://github.com/ruby/rubygems/commit/979dada8f3

commit fab94ecd344b5804f9a1e6b38082049f37bacbd3
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-05 21:04:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 10:37:50 +0900

    [ruby/rubygems] Fix the config suggestion in the warning for `$ bundle`

    * `install_or_cli_help` does not exist for older Bundler like Bundler 2
      and so results in a confusing error on Bundler 2:
      ```
      $ bundle
      Could not find command "".
      ```
    * See https://github.com/ruby/rubygems/pull/9136/files#r2592366837
    * Merge the behavior of `install_or_cli_help` in `install`.

    https://github.com/ruby/rubygems/commit/9b4819ae18

commit 056997cbcdd38b062518fe54e311c964f8bfd98f
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-12-09 09:05:45 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-12-09 10:09:00 +0900

    Remove needless `ruby2_keywords` field from `struct rb_args_info`

    `ruby2_keywords` is set only to be `0` in parse.y.
    However `args->ruby2_keywords` is initialized with `0` by `MEMZERO`
    in `rb_node_args_new` function and `body->param.flags.ruby2_keywords`
    is initialized with `0` by `ZALLOC` in `rb_iseq_constant_body_alloc` function,
    so `args->ruby2_keywords` does nothing for `body->param.flags.ruby2_keywords`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15441

commit 576acb950232a8d979b94117050f577505d8a167
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-12-06 16:02:49 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-12-09 10:09:00 +0900

    Remove `FORWARD_ARGS_WITH_RUBY2_KEYWORDS` check

    Because `FORWARD_ARGS_WITH_RUBY2_KEYWORDS` definition was removed
    by 4f77d8d3289ece0e3537d9273a5c745120bff59a.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15441

commit de94f88c6820c94b69df3343c6050cdb8cc0610e
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-03 17:06:03 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-09 09:38:45 +0900

    Register internal tracepoints globally

    Internal tracepoints only make sense to run globally, and they already
    took completely different paths.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15396

commit 55668d748457e7d9db4db93c050e80afe2e9bb47
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-06 09:13:23 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-09 09:38:45 +0900

    Only globally clear the flag being cleared

    This solution is not quite correct because it doesn't solve multiple
    Ractors subscribing to the same event, but this will avoid unrelated
    events clobbering the flags for other events.

    This however will work corretly for subscribing to global ObjectSpace GC
    events.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15396

commit 007a70a15c2911845f83872b83d39eeca7f0f607
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 20:03:44 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-09 08:54:24 +0900

    Test that Ractor.make_shareable mutates the original Proc

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15446

commit 4cb3a61b5ec7714f57a7f43409ccc74746e7df6e
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 19:47:03 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-09 08:54:24 +0900

    Fix Ractor test to not depend on the previous test

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15446

commit 39a3b88659a04729a7eec30bbc5ea804a565b9eb
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 19:42:12 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-09 08:54:24 +0900

    Fix some descriptions in bootstraptest/test_ractor.rb

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15446

commit 09f8b8e3ad46683f1166b5dc1d5ef01cacfae3e4
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 19:40:32 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-09 08:54:24 +0900

    Test that Ractor.shareable_proc keeps the original Proc intact

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15446

commit ca8630b6363a706a43bfdb5a3359addcfb616d19
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-08 15:33:54 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 08:52:15 +0900

    [ruby/rubygems] Extract and generate only bundler bin files instead of full installation.

    https://github.com/ruby/rubygems/commit/a70e573973

commit 55ea3ec00f5166423cd7dcd67e220cd264a766f6
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-08 02:43:44 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-09 08:01:05 +0900

    Fix strict aliasing warning in rb_int128_to_numeric

    If we don't have uint128, then rb_int128_to_numeric emits a strict
    aliasing warning:

        numeric.c:3641:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
        3641 |         return rb_uint128_to_numeric(*(rb_uint128_t*)&n);
             |                                       ^~~~~~~~~~~~~~~~~

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15440

commit 66bda731901d4588c9df1a671022231ea0d03216
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-09 06:58:35 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-09 06:58:35 +0900

    Remove unused local variables in test/ruby/test_io_buffer.rb (#15451)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 90a9b64238eca659df9d59d35f6cf59fa3851119
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-05 09:13:59 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-09 04:48:20 +0900

    Use rb_current_ec_noinline in ractor_{lock,unlock}

    We're seeing an occasional crash on CI because this ends up inlined all
    the way into ractor_wait_receive. On llvm (possibly other compilers) the
    thread local address of ec ends up cached (not the value of ec, the
    address ec is read from). So if we are migrated to another native
    thread, that may be invalid.

    Using rb_current_ec_noinline avoids this problems. It would be good to
    adjust this code so that ec (or current ractor) is calculated once and
    then passed through to both lock and unlock.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15415

commit e61b79b384307ae3358c13d015be3550db7c0b53
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 14:02:08 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-09 02:16:45 +0900

    Fix a typo in the deprecation warning message

commit bd752290e743e3465286b3c656c8e31869f1c4fc
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-09 00:50:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-09 02:06:19 +0900

    [ruby/timeout] Revert "Exclude constantly-failing test on x86_64-darwin"

    This reverts commit https://github.com/ruby/timeout/commit/45816b1b2602.

    https://github.com/ruby/timeout/commit/b54f91e9dd

commit fd45496f919f202dd30a6a76e7e24fc07abbedc0
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-09 01:59:27 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-09 01:59:27 +0900

    Update ZJIT docs (#15449)

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 956f8d490cde0bb6941f21d263287bd3a141348c
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-12-09 01:36:45 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-09 01:36:45 +0900

    ZJIT: Avoid redundant SP save in codegen (#15448)

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit 66b2cc3dabbedca1331507f8b4f2b274d0a47570
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 18:29:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-08 20:28:52 +0900

    [ruby/resolv] Check the second RegGetValue type

    https://github.com/ruby/resolv/commit/3678de9e30

commit 27d60e29845cce3159856ef25d8be533ef402e3c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 17:59:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-08 20:28:52 +0900

    [ruby/resolv] Fix warnings on cygwin

    https://github.com/ruby/resolv/commit/075e76f997

commit 159430e8b6a2c6b5a5a9c926676082fcaef7535e
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-08 17:59:57 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-08 18:41:06 +0900

    ignore Thread creation error

    on resource limited environment.

    ```
    stderr output is not empty
       bootstraptest.test_ractor.rb_2446_1412.rb:23:in 'Ractor.new': can't create Thread: Cannot allocate memory (ThreadError)
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15445

commit ced333677fb97f2fc720dfb86213ea416b3ebcf4
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-08 17:47:07 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-08 18:21:37 +0900

    fix SEGV on clang-16/18

    Maybe because of TLS/coroutine problem, CI fails on clang-16/18

    ```
      1) Failure:
    TestTimeout#test_ractor [/tmp/ruby/src/trunk_clang_18/test/test_timeout.rb:288]:
    pid 307341 killed by SIGSEGV (signal 11) (core dumped)
    | /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:98: [BUG] Segmentation fault at 0x0000000000000030
    | ruby 4.0.0dev (2025-12-07T16:51:02Z master 4f900c35bc) +PRISM [x86_64-linux]
    |
    | -- Control frame information -----------------------------------------------
    | c:0006 p:---- s:0026 e:000025 l:y b:---- CFUNC  :sleep
    | c:0005 p:---- s:0023 e:000022 l:y b:---- CFUNC  :wait
    | c:0004 p:0020 s:0017 e:000016 l:n b:---- BLOCK  /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:98 [FINISH]
    | c:0003 p:---- s:0014 e:000013 l:y b:---- CFUNC  :synchronize
    | c:0002 p:0072 s:0010 e:000009 l:n b:---- BLOCK  /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:96 [FINISH]
    | c:0001 p:---- s:0003 e:000002 l:y b:---- DUMMY  [FINISH]
    |
    | -- Ruby level backtrace information ----------------------------------------
    | /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:96:in 'block in create_timeout_thread'
    | /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:96:in 'synchronize'
    | /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:98:in 'block (2 levels) in create_timeout_thread'
    | /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:98:in 'wait'
    | /tmp/ruby/src/trunk_clang_18/lib/timeout.rb:98:in 'sleep'
    |
    | -- Threading information ---------------------------------------------------
    | Total ractor count: 3
    | Ruby thread count for this ractor: 2
    |
    | -- Machine register context ------------------------------------------------
    |  RIP: 0x0000602b1e08a5b5 RBP: 0x000071c65facd130 RSP: 0x000071c6258842e0
    |  RAX: 0x0000000000000000 RBX: 0x000000006935f7c4 RCX: 0x0000000000000000
    |  RDX: 0x0000602b1e520c20 RDI: 0x000071c620012480 RSI: 0x000071c620012480
    |   R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
    |  R11: 0x0000000000000000 R12: 0x000071c65fa2f640 R13: 0x000071c65fb66e48
    |  R14: 0x0000000000000000 R15: 0xfdccaa3270000002 EFL: 0x0000000000010202
    |
    | -- C level backtrace information -------------------------------------------
    | /tmp/ruby/build/trunk_clang_18/ruby(rb_print_backtrace+0x14) [0x602b1e31a6ea] /tmp/ruby/src/trunk_clang_18/vm_dump.c:1105
    | /tmp/ruby/build/trunk_clang_18/ruby(rb_vm_bugreport) /tmp/ruby/src/trunk_clang_18/vm_dump.c:1450
    | /tmp/ruby/build/trunk_clang_18/ruby(rb_bug_for_fatal_signal+0x15c) [0x602b1e2d960c] /tmp/ruby/src/trunk_clang_18/error.c:1131
    | /tmp/ruby/build/trunk_clang_18/ruby(sigsegv+0x5a) [0x602b1e05528a] /tmp/ruby/src/trunk_clang_18/signal.c:948
    | /lib/x86_64-linux-gnu/libc.so.6(0x71c65fd46320) [0x71c65fd46320]
    | /tmp/ruby/build/trunk_clang_18/ruby(vm_check_ints_blocking+0x0) [0x602b1e08a5b5] /tmp/ruby/src/trunk_clang_18/vm_core.h:2097
    | /tmp/ruby/build/trunk_clang_18/ruby(rb_current_execution_context) /tmp/ruby/src/trunk_clang_18/thread_sync.c:617
    | /tmp/ruby/build/trunk_clang_18/ruby(rb_mutex_sleep) /tmp/ruby/src/trunk_clang_18/thread_sync.c:617
    ```

    This patch introduces workaround by acquiring EC before swithcing coroutine.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15444

commit 1de15815a8b85f02ba73d9f7c30322530b471b5f
  Author:     yoshoku <yoshoku@outlook.com>
  AuthorDate: 2025-12-04 09:04:11 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-08 16:03:32 +0900

    [ruby/rubygems] Fix native extension loading in newgem template for RHEL-based systems

    Add fallback to `require` when `require_relative` fails to load native
    extensions. This addresses an issue on RHEL-based Linux distributions
    where Ruby scripts and built native extension shared libraries are
    installed in separate directories.

    https://github.com/ruby/rubygems/commit/68599bd107

commit a82aa08fe0112aefd35e28dc5ca3f9ea9238ae17
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 12:04:11 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-08 12:11:58 +0900

    Make `ruby_reset_leap_second_info` internal

    It is exported only for the extension library to test, but the method
    is no longer used since 29e31e72fb5a14194a78ec974c4ba56c33ad8d45.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15442

commit 6a1f5b68cbd90031d849265b663986c5b8dd39dd
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 11:57:24 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-08 12:11:58 +0900

    Make `ruby_reset_timezone` internal

    It is used only in hash.c, when `ENV['TZ']` is set.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15442

commit 4655b174d5fa71b69781c56701be63a02215b12f
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-08 12:05:54 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-08 12:06:40 +0900

    [ruby/timeout] v0.5.0

    https://github.com/ruby/timeout/commit/837d5aac73

commit be882278f22444e7d27db091bbd5f8bf63e882c2
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-07 14:51:38 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-08 11:47:39 +0900

    Move RBIMPL_ATTR_DEPRECATED_* macros to the appropriate header file

    Move these macros from include/ruby/backward.h to
    include/ruby/internal/attr/deprecated.h, alongside the other similar
    macros.

    include/ruby/internal/intern/vm.h cannot currently use them because
    include/ruby/backward.h is included too late.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15435

commit f2eece71990fd79a5d7e24999f8df5c1121253c6
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-07 14:58:28 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-08 11:47:39 +0900

    Remove the internal-only attribute from ruby_reset_timezone()

    The #ifdef is currently not taken because include/ruby/backward.h is
    not included at this point. The attribute is unnecessary in an internal
    header, so remove it.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15435

commit 4f900c35bc01e12b948703b9e4b4f5d0e803f073
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-08 00:24:08 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-08 01:51:02 +0900

    Output ivar length for T_OBJECT in obj_info

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15438

commit a4d142137332e449c2e037fa123a9d477d22093a
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-12-08 01:35:47 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-08 01:35:47 +0900

    [DOC] Update bundled gems list at 379d22ce8418448ade3d410e5c76dd

commit 379d22ce8418448ade3d410e5c76dd2ca0c7a8cf
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-12-08 01:35:04 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-08 01:35:04 +0900

    Bump RDoc version to 6.17.0 (#15439)

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit db6071b5216ac58976f8ab8181ff6eab02dfa8be
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 12:31:42 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 23:20:25 +0900

    [ruby/pathname] Raise the previous message

    Fix ruby/pathname#75.

    https://github.com/ruby/pathname/commit/5ba967b274

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15437

commit a8a188e1fc8568185c2ca460b5a2e800e9cac4bd
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 12:29:41 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 23:20:24 +0900

    [ruby/pathname] Add more tests for `Pathname#initialize`

    https://github.com/ruby/pathname/commit/a2edd25bc1

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15437

commit 806f2d3533ec5bbf6b4d598b36b1c9de7e786659
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 11:34:11 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 22:51:22 +0900

    [ruby/pathname] [DOC] Pathname#freeze

    https://github.com/ruby/pathname/commit/4580540a2b

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15437

commit f2b250c150b947c3b2341796b2ce44dd94002055
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 00:06:21 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 22:51:22 +0900

    [ruby/pathname] Define private method `same_paths?` for Ractor-safety

    https://github.com/ruby/pathname/commit/d33d18e5e2

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15437

commit 4080abecd6f7b2ce6f7e6a6d1801d3d9fcfa9a58
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 18:16:02 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 21:18:00 +0900

    Ignore distclean failures

    Just clean the directory if it exists and is empty.

commit eafaff9443daebba1f4e1a5b2a217b993f066360
  Author:     Samuel Williams <samuel.williams@shopify.com>
  AuthorDate: 2025-12-07 20:55:13 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-07 20:55:13 +0900

    Re-introduce support for `io_close` hook. (#15434)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 941e70ab38d01d067b7bbbcdf8553893a9ca8b49
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-06 12:09:00 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2025-12-07 17:34:45 +0900

    Sync doc/stringio in sync_default_gems.rb

commit 68eab91b147dee98873b54e97296a36301191d72
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 13:44:19 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 13:44:19 +0900

    Allow to sync pathname manually

    Still development of the gem continues, sync as possible manually.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15436

commit fb80f84fc7aac043db63e27948a54ce94fcf0da3
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-03 11:43:29 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-07 10:59:50 +0900

    [DOC] Fix formatting in docs for String#[]=

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15381

commit 33837abb81510d25088375bbfd74baba16ea2ed1
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 08:21:38 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 08:22:04 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#pos=
    (https://github.com/ruby/stringio/pull/194)

    https://github.com/ruby/stringio/commit/3cef1e0e5f

commit 82577ac09005cf949e125ebe9bb4561002768e5a
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 08:21:26 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 08:22:00 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#pos
    (https://github.com/ruby/stringio/pull/193)

    https://github.com/ruby/stringio/commit/90728bbbca

commit c9fe3cba39fda954e532424c2c082da915320da9
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 08:21:14 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 08:21:38 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#lineno=
    (https://github.com/ruby/stringio/pull/192)

    https://github.com/ruby/stringio/commit/8b1ee03cbe

commit f298beb2d973debe7ac080aecd28df543678adcf
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-07 08:20:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 08:21:17 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#lineno
    (https://github.com/ruby/stringio/pull/191)

    https://github.com/ruby/stringio/commit/f2a2a5a99e

commit 588347a088625b5c16eedbc5f3a7a1189a427e25
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-07 01:47:34 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-07 03:08:24 +0900

    Fix id2ref for multi-Ractor

    The id2ref table needs to be under a VM lock to ensure there are no race
    conditions. The following script crashes:

        o = Object.new

        ObjectSpace._id2ref(o.object_id)

        10.times.map do
          Ractor.new do
            10_000.times do
              a = Object.new
              a.object_id
            end
          end
        end.map(&:value)

    With:

        [BUG] Object ID seen, but not in _id2ref table: object_id=2800 object=T_OBJECT
        ruby 4.0.0dev (2025-12-06T15:15:43Z ractor-id2ref-fix e7f9abdc91) +PRISM [x86_64-linux]

        -- Control frame information -----------------------------------------------
        c:0001 p:---- s:0003 e:000002 l:y b:---- DUMMY  [FINISH]

        -- Threading information ---------------------------------------------------
        Total ractor count: 5
        Ruby thread count for this ractor: 1

        -- C level backtrace information -------------------------------------------
        miniruby(rb_print_backtrace+0x14) [0x6047d09b2dff] vm_dump.c:1105
        miniruby(rb_vm_bugreport) vm_dump.c:1450
        miniruby(rb_bug_without_die_internal+0x5f) [0x6047d066bf57] error.c:1098
        miniruby(rb_bug) error.c:1116
        miniruby(rb_gc_get_ractor_newobj_cache+0x0) [0x6047d066c8dd] gc.c:2052
        miniruby(gc_sweep_plane+0xad) [0x6047d079276d] gc/default/default.c:3513
        miniruby(gc_sweep_page) gc/default/default.c:3605
        miniruby(gc_sweep_step) gc/default/default.c:3886
        miniruby(gc_sweep+0x1ba) [0x6047d0794cfa] gc/default/default.c:4154
        miniruby(gc_start+0xbf2) [0x6047d0796742] gc/default/default.c:6519
        miniruby(heap_prepare+0xcc) [0x6047d079748c] gc/default/default.c:2090
        miniruby(heap_next_free_page) gc/default/default.c:2305
        miniruby(newobj_cache_miss) gc/default/default.c:2412
        miniruby(newobj_alloc+0xd) [0x6047d0798ff5] gc/default/default.c:2436
        miniruby(rb_gc_impl_new_obj) gc/default/default.c:2515
        miniruby(newobj_of) gc.c:996
        miniruby(rb_wb_protected_newobj_of) gc.c:1046
        miniruby(str_alloc_embed+0x28) [0x6047d08fda18] string.c:1019
        miniruby(str_enc_new) string.c:1069
        miniruby(prep_io+0x5) [0x6047d07cda14] io.c:9305
        miniruby(prep_stdio) io.c:9347
        miniruby(rb_io_prep_stdin) io.c:9365
        miniruby(thread_start_func_2+0x77c) [0x6047d093a55c] thread.c:679
        miniruby(thread_sched_lock_+0x0) [0x6047d093aacd] thread_pthread.c:2241
        miniruby(co_start) thread_pthread_mn.c:469

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15433

commit 87bc106b8790d5beaccc46555538424fccb1f50f
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-07 02:37:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 02:49:13 +0900

    [ruby/stringio] [DOC] Change link to on-page

    https://github.com/ruby/stringio/commit/a7c118d786

commit 47c0dae188162798c50fdb2580d852ceec89f2ec
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-07 01:58:56 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 02:26:32 +0900

    [ruby/openssl] asn1integer_to_num: don't cast away const

    ASN1_ENUMERATED_to_BN() has been const-correct for a long time in all
    supported libcrytos, so we can remove this workaround.

    https://github.com/ruby/openssl/commit/d0f36a7c65

commit 1f0d41aa4d1a3b36e9640e5e8e64c030c71ed613
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-07 02:07:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 02:13:32 +0900

    [ruby/date] Call rb_gc_register_mark_object after object allocation

    It's possible that both half_days_in_day and day_in_nanoseconds are Ruby
    objects, which means that creating day_in_nanoseconds may trigger GC.
    Since half_days_in_day is not registered as a mark object until after
    day_in_nanoseconds is allocated, the GC may reclaim half_days_in_day.

    We can see this crash:

        ruby(rb_print_backtrace+0xb) [0x63a373c0] vm_dump.c:1105
        ruby(rb_vm_bugreport) vm_dump.c:1450
        ruby(rb_assert_failure_detail+0xdb) [0x6371d3a2] error.c:1216
        ruby(RB_FL_TEST_RAW+0x0) [0x6371d3d5] error.c:1192
        ruby(rb_assert_failure) (null):0
        ruby(rb_gc_impl_writebarrier+0xb4) [0x636f01e4] gc/default/default.c:6103
        ruby(pin_array_list_append+0x72) [0x638f9787] include/ruby/internal/gc.h:788
        ruby(rb_vm_register_global_object) vm.c:4713
        ruby(rb_gc_register_mark_object+0x3a) [0x6374144a] gc.c:3449
        .ext/i686-linux-gnu/date_core.so(Init_date_core+0x204) [0xdbec86c4] ext/date/date_core.c:9511
        .ext/i686-linux-gnu/date_core.so(Init_date_core) (null):0
        ruby(dln_load_and_init+0x71) [0x6392c541] dln.c:521
        ruby(dln_load_feature+0xd2) [0x6392c7d2] dln.c:566
        ruby(load_ext+0xc3) [0x637931b3] load.c:1210
        ruby(rb_vm_pop_frame+0x0) [0x638f80cd] vm.c:3120
        ruby(rb_vm_call_cfunc_in_box) vm.c:3122
        ruby(rb_long2num_inline+0x0) [0x637956f8] load.c:1353
        ruby(require_internal) load.c:1354
        ruby(rb_require_string_internal+0x60) [0x63795fa1] load.c:1457
        ruby(rb_require_string) load.c:1443

    https://github.com/ruby/date/commit/cbec5948e0

commit 8d3da814c03e06ce331e7022b87500943b57fa4e
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-05 22:15:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 01:50:17 +0900

    [ruby/openssl] Convert ossl_x509ext.c to opaque ASN1_STRING

    https://github.com/ruby/openssl/commit/a41cf28bab

commit 38ad0806d7270926ff6fc5c23092aa3e822f386b
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-05 21:54:49 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 01:50:17 +0900

    [ruby/openssl] Convert ossl_ts.c to opaque ASN1_STRING

    https://github.com/ruby/openssl/commit/8945f379b3

commit a07997bf8124b8aac516f8f70388e86fd24f4a2b
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-05 21:52:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 01:50:17 +0900

    [ruby/openssl] Convert ossl_ns_spki.c to opaque ASN1_STRING

    https://github.com/ruby/openssl/commit/0941ebbda5

commit 98c151b0e55e25217334a94c17102ea8382027f2
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-05 21:44:18 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 01:50:16 +0900

    [ruby/openssl] Convert some of ossl_asn1.c to opaque ASN1_STRING

    This uses the normal accessors but leaves out BIT STRINGS, which will
    need compat implementations for ASN1_BIT_STRING_get_length() and
    ASN1_BIT_STRING_set1() for older libcryptos.

    https://github.com/openssl/openssl/issues/29184
    https://github.com/openssl/openssl/issues/29185

    https://github.com/ruby/openssl/commit/ba3d1cc5c2

commit d3aa7b889f572237467156f3c6bc3c68ef45e9c4
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-05 21:29:59 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 01:50:16 +0900

    [ruby/openssl] Convert ossl_ocsp.c to opaque ASN1_STRING

    OpenSSL plans to make asn1_string_st opaque, the struct underlying most
    ASN.1 types such as ASN1_*STRING, ASN1_ENUMERATED, ASN1_INTEGER, etc.
    Most of ruby/openssl's C code can be straigtforwardly converted to use
    accessors available since OpenSS

    https://github.com/ruby/openssl/commit/374262435a

commit 9dfb7bd7d44ac99bc4d7233cef00e0e6e0743905
  Author:     Theo Buehler <tb@openbsd.org>
  AuthorDate: 2025-12-05 21:14:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-07 01:50:16 +0900

    [ruby/openssl] const correct ossl_bin2hex()

    This helper only reads from its in parameter. Making that const
    avoids a couple of casts in an upcoming change.

    https://github.com/ruby/openssl/commit/970d5764e3

commit 2e828dd98feeec5bab5ea85f0661638524004a01
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-07 00:37:56 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-07 01:31:41 +0900

    Fix strict aliasing warning in ruby_swap128_int

    The following warnings are emitted. We can use type punning to prevent
    strict aliasing violations.

        io_buffer.c:1935:23: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
        1935 |     rb_uint128_t u = *(rb_uint128_t*)&x;
             |                       ^~~~~~~~~~~~~~~~~
        io_buffer.c:1937:13: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
        1937 |     return *(rb_int128_t*)&swapped;
             |

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15431

commit da3b7d5ee3afb5ae8e97a906d114b56242a5ff27
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-06 18:13:58 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 00:44:30 +0900

    [ruby/pathname] Freeze and hide internal constants

    https://github.com/ruby/pathname/commit/60f5d58d73

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15432

commit b675deeeb175b6434bf6abaa747ca3a471eb18ad
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-06 18:10:44 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 00:44:30 +0900

    [ruby/pathname] Use `File.path` for conversion to path name

    This method has been defined since 1.9, as the standard conversion
    procedure.

    https://github.com/ruby/pathname/commit/8f582dc65d

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15432

commit 7319db44fc835d04616369b7b61c33e57960dcde
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-06 17:53:54 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 00:44:30 +0900

    [ruby/pathname] Define `to_path` alias directly

    The constant `TO_PATH` was defined for 1.9 compatibility but the code
    for it was dropped 10 years ago.

    https://github.com/ruby/pathname/commit/95ad4ceb19

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15432

commit 240afe50a1d3790d1570ad7bbc16f03bc8512b47
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-07 00:38:25 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-07 00:38:25 +0900

    Suppress noisy outputs

    Fix up [ruby/ruby#14700](https://github.com/ruby/ruby/pull/14700).

commit e7f9abdc910bbb37d04e8e65e9bad5f36fa074e1
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-06 12:09:00 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-07 00:15:43 +0900

    Sync doc/stringio in sync_default_gems.rb

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15427

commit 0346206d3eab2a8e659be0dd52aea6fc7b0ebb06
  Author:     Steven Johnstone <steven.james.johnstone@gmail.com>
  AuthorDate: 2025-12-06 09:37:53 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 20:11:40 +0900

    [ruby/prism] Avoid out-of-bounds reads

    Fixes https://github.com/ruby/prism/pull/3790.

    https://github.com/ruby/prism/commit/173ccb84ad

commit f4f5f0a009f6335ad13b8651bf43a216442c49a7
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-06 19:32:14 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-06 19:32:14 +0900

    Add error case tests for `File.path`

    - for non-String argument
    - for NUL-contained argument
    - for ASCII-incompatible argument

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15429

commit aae85926504e448637c336aaf41b2c1ed1a6b78b
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-06 19:09:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 19:11:45 +0900

    [ruby/timeout] Test that Timeout does not expose extra constants

    https://github.com/ruby/timeout/commit/4de4b4759c

commit 42f5654b69244b5892ff2c2eba8d838064d2cd9f
  Author:     Samuel Williams <samuel.williams@oriontransfer.co.nz>
  AuthorDate: 2025-12-06 17:44:14 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-06 17:44:14 +0900

    Yield to scheduler if interrupts are pending. (#14700)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 180020e1e53b96a3080f3ac731cb32bbbdee31d5
  Author:     Samuel Williams <samuel.williams@shopify.com>
  AuthorDate: 2025-12-06 16:35:08 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-06 16:35:08 +0900

    Fix `io_pwrite` fiber scheduler hook. (#15428)

    Fix io_pwrite fiber scheduler hook.

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 7259c18c3aa89ce282a5f7ebad68c62980c605d5
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-12-06 16:00:13 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-06 16:00:13 +0900

    [DOC] Update NEWS about ZJIT (#15426)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit d490247df22fc1e800a6590fba52c5801b94302e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-05 17:30:14 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-06 14:39:47 +0900

    [DOC] Link global variables to command line options

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15419

commit 21f9a647fb7405e0a22656ed6405f86811a22a1f
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-05 06:57:46 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 12:08:29 +0900

    [ruby/stringio] [DOC] Class doc for StringIO
    (https://github.com/ruby/stringio/pull/178)

    https://github.com/ruby/stringio/commit/6449251678

commit bd64cf00a2e9c295b854c8a4bbb79672bfa1654a
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-21 23:23:04 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 12:05:55 +0900

    [DOC] Tweaks for String#capitalize

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15280

commit 2491a504ffd73e8fabad49fce020fcda484f0be2
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-22 02:16:37 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 12:05:18 +0900

    [DOC] Tweaks for String#downcase

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15287

commit e5e4175dbddb83eb5a53ec0d0cf3a5d0026c7bb9
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-22 03:01:35 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 12:04:59 +0900

    [DOC] Tweaks for String#upcase

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15288

commit da2c67388ab7db8102bd8fba6f8ed43df713ad66
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-22 03:22:34 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 12:04:23 +0900

    [DOC] Tweaks for String#swapcase

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15289

commit bbef73b2ff1fba2d72d16f5ee582063e6b6e8a1f
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-23 06:23:25 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 12:03:22 +0900

    [DOC] Better multibyte-character data

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15299

commit 734dab5ec885107b9d1da81d5d071927e59fddee
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-06 01:21:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 12:02:45 +0900

    [ruby/stringio] [DOC] Link to on-page section, not class File doc

    https://github.com/ruby/stringio/commit/dc93aa51d2

commit a7dc53b91c8475323b34d5a332fdb25d190e277d
  Author:     Samuel Williams <samuel.williams@shopify.com>
  AuthorDate: 2025-12-06 11:55:32 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-06 11:55:32 +0900

    Add support for `u128`, `U128`, `s128` and `S128` integers to `IO::Buffer`. (#15399)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 8f9838476dc8cc857859a0a93da285d792be7d3b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-06 07:58:11 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 08:40:39 +0900

    Fix fields object in embedded struct

    We don't set RSTRUCT_GEN_FIELDS when RCLASS_MAX_IV_COUNT(klass) != 0, so
    we need to set RSTRUCT_SET_FIELDS_OBJ to 0 otherwise it may have an
    invalid value and crash.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15425

commit 791acc5697afc8f256e652169f7c85a3d90b3f06
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-06 07:08:20 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-06 08:40:39 +0900

    Revert "gc.c: Pass shape_id to `newobj_init`"

    This reverts commit 228d13f6ed914d1e7f6bd2416e3f5be8283be865.

    This commit makes default.c and mmtk.c depend on shape.h, which prevents
    them from building independently.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15425

commit 65995c22f892e103fdf2601fdccd0202483a4fca
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-06 07:08:48 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 07:09:52 +0900

    [ruby/timeout] Exclude constantly-failing test on x86_64-darwin

    * https://github.com/ruby/ruby-dev-builder/actions/runs/19973218359/job/57293388626

    https://github.com/ruby/timeout/commit/45816b1b26

commit c4c909b538a2114491be0785ec4aa3d26d2916c4
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-12-06 07:00:24 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-06 07:00:24 +0900

    ZJIT: Include local variable names in `Get|SetLocal` insn's print value (#15423)

    ZJIT: Print local variable names GetLocal and SetLocal instructions

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit d396a66a82992d4ff3f4d52a6e7c493b560ae9b2
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-05 12:43:28 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Build by default when build environment allows

    "Default" means when `--enable-zjit` is absent from `./configure`
    arguments.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit f559a9106c703c3ecadefa2f2eb26290b9ffa7fe
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 06:55:55 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: configure.ac: Look for GNU make when detecting build environment

    Building ZJIT requires GNU make at the moment.
    To get access to `$gnumake`, lift the `make` flavour detection up to the
    environment section, before the JIT section runs.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit ffe99a56de887bbc24e6ff63cd93f6a88fdd1cf4
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-02 12:57:04 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: configure.ac logic to detect suitable build environment

    This runs the detection, but does nothing with the result.

     * Fixed version requirement in messages -- ZJIT requires >= 1.85 unlike
      YJIT.
     * New: Detect when rust 1.85 is available, and neither --enable-yjit nor
      --enable-zjit is passed to ./configure, include both YJIT and ZJIT
      in the build

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 9a2710013c52d81174fa289b9002df1be379d39d
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 11:16:23 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    YJIT: Fix unused_unsafe warning in `StatsAlloc`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit dce716e25b5101cc57ab0699db9265d961d59d82
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 10:26:51 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Update `depend` for zjit.o

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit addeafdd5b9e2404eef555f523bc92a6c373d294
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 07:20:44 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    YJIT: Fix duplicate make rule warning in combo build

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 8296524fd6cf2fb9ae1eca4be722fe9ee2c26f37
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 07:16:27 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Fix duplicate make rule warning in combo build

        ~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-default/'
        ~/yjit/yjit.mk:26: warning: ignoring old commands for target `~/build-default/'
        ~/zjit/zjit.mk:30: warning: overriding commands for target `~/build-default/'
        ~/yjit/yjit.mk:26: warning: ignoring old commands for target `~/build-default/'

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 2bc9b5a85454d2536d18be32e0302842bde18a3f
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 06:55:26 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    tool/update-deps: Skip ZJIT and YJIT+ZJIT build objects

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit fb72ff7be0b927cdad518da4eca041c191a91404
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 06:14:40 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    CI: Avoid building ZJIT when LLVM is too old

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 109ddd291ebc4f07f786e7b4ed277b20e3faaa8a
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 06:03:23 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Avoid binding to `rb_iseq_constant_body`

    Its definition changes depending on e.g. whether there is YJIT in the
    build.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 8132b3d1d8abbe38810a1e268c59b6d49e46d9a1
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 11:15:04 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    YJIT: Fix including stats for ZJIT instructions when ZJIT not in build

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit f01fd2bde2c79dd4f3e23154c953baca623b6460
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 05:41:21 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    JITs: Update bindings to include interpreter zjit_ opcodes

    Mostly YJIT. ZJIT already has the right bindings and this just tweaks
    the CI configuration.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 02ca507aa3fe45640ace494e5440d9e8bfd5a517
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 05:05:01 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    JITs: rb_iseq_opcode_at_pc(): Accommodate switch-case interpreter

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 7ecd369a87d65879f98d95d726772238c1dabc16
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-04 04:31:48 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Account for when YJIT is on by default in test_zjit_enable

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 3269ae1b0d1aaa78d12b1527a2f6b095e148c5d3
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-03 12:11:20 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Fix -Wpedantic warning in C99 mode when built with YJIT

    > insns.def:857:5: error: assigning to 'rb_zjit_func_t' (aka 'unsigned
    > long (*)(struct rb_execution_context_struct *, struct
    > rb_control_frame_struct *, unsigned long (*)(struct
    > rb_execution_context_struct *, struct rb_control_frame_struct *))') from
    > 'void *' converts between void pointer and function pointer
    > [-Werror,-Wpedantic]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit ee7923288fd4915199954f615980e516750cb8bb
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-12-03 11:50:06 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-12-06 05:49:25 +0900

    ZJIT: Skip GC.auto_compact test when unsupported

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15368

commit 786f67393875b0a5089da73504ac57179e8ef829
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-06 05:17:09 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 05:35:31 +0900

    [ruby/prism] Correct constant pool bucket type logic

    When replacing an owned constant by a different type (constant or
    shared) replace with the correct type instead of defaulting to
    shared.

    https://github.com/ruby/prism/commit/fbe9b131a1

commit be12e19856c95ac722efa944af74122a9b2a6bef
  Author:     Steven Johnstone <steven.james.johnstone@gmail.com>
  AuthorDate: 2025-12-06 02:44:00 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 05:21:28 +0900

    [ruby/prism] Avoid undefined int overflow behaviour

    Fixes https://github.com/ruby/prism/pull/3786.

    https://github.com/ruby/prism/commit/b72b664675

commit 834adc358ae967dfa52890a9abba551a070ab75e
  Author:     Steven Johnstone <steven.james.johnstone@gmail.com>
  AuthorDate: 2025-12-06 01:07:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 05:20:18 +0900

    [ruby/prism] Avoid out-of-bounds reads

    Fixes https://github.com/ruby/prism/pull/3784.

    https://github.com/ruby/prism/commit/3fe862534b

commit 2b057859414d1ccfa4d88a898d27defc8c74dc1c
  Author:     Keenan Brock <keenan@thebrocks.net>
  AuthorDate: 2024-09-27 05:34:39 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-06 04:50:00 +0900

    Allow rb_thread_call_with_gvl() to work when thread already has GVL

    [Feature #20750]

    Co-authored-by: Benoit Daloze <eregontp@gmail.com>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/11649

commit 8c4f79d5f30fb2fe647c4f3fd262a5fdeacaeca2
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-06 03:33:12 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 03:40:02 +0900

    [ruby/openssl] x509cert: handle invalid validity periods in Certificate#inspect

    In a newly allocated OpenSSL X509 object, the notBefore and notAfter
    fields contain an ASN1_STRING object with type V_ASN1_UNDEF rather than
    an ASN1_TIME.

    Commit https://github.com/ruby/openssl/commit/73484f67949a made asn1time_to_time() stricter and it now raises
    an exception if the argument is not an ASN1_TIME. Previously, it would
    print a verbose-mode warning and return nil.

    OpenSSL::X509::Certificate#inspect should work even when the certificate
    is invalid. Let's handle this.

    https://github.com/ruby/openssl/commit/18c283f2b6

commit 00b91c727fdd0dd3bcd970dd4bc6c2b598cf4e1b
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-06 03:25:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 03:32:14 +0900

    [ruby/timeout] Simplify logic to make GET_TIME shareable

    https://github.com/ruby/timeout/commit/281b2507e7

commit 3e189ddb9db486d1bc7d5c15f395017b4fb0c136
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-06 03:21:37 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 03:32:13 +0900

    [ruby/timeout] Fix logic for Ractor support

    * Fix indentation to stay a multiple of 2 spaces.

    https://github.com/ruby/timeout/commit/a1d784cb66

commit dc406af9cb9a269ae550483fa1278eedf297fb92
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-06 03:19:13 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 03:32:13 +0900

    [ruby/timeout] Fix condition and fix test to catch that broken condition

    https://github.com/ruby/timeout/commit/82fb6f6925

commit a523e9d872d51e64eecbf3feeaa8d4d8769f72bd
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-06 03:14:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 03:32:13 +0900

    [ruby/timeout] Minor tweaks

    https://github.com/ruby/timeout/commit/daab9a2193

commit ec28bd75a869c2e525388582370239a9ff8c19e7
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-05 01:49:31 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 03:32:13 +0900

    [ruby/timeout] support Ractor

    1. Introduce State to store all status.
    2. Store State instance to the Ractor local storage if possible
    3. Make `GET_TIME` (Method object) shareable if possible

    3 is supporeted Ruby 4.0 and later, so the Rator support is works
    only on Ruby 4.0 and later.

    https://github.com/ruby/timeout/commit/54ff671c6c

commit 65dbd571c1e0aae3b0919ae6e64704726f18b265
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-05 23:33:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-06 02:14:30 +0900

    [ruby/psych] Use Node#to_ruby parse_symbols option

    https://github.com/ruby/psych/commit/907fd4fa97

commit 930afa1c7ba747658cc4253c2cb6a367d7a6a36b
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-04 08:48:28 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-05 23:21:17 +0900

    Never shrink bignum on realloc

    As far as I can tell, this only ever shrinks by one, and it's really not
    worth the expensive realloc for that.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15255

commit b0c9286d98929db56514d8009040fe206b3d310f
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-03 14:13:37 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-05 23:21:17 +0900

    Use VWA for bignum

    Previously we only allocated bignums from the 40 byte sizepool, and
    embedded bignum used a fixed size.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15255

commit ea415e9636d3be8890d5dc97cf0b67fc95403a46
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-04 21:52:53 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 21:34:14 +0900

    [ruby/net-http] open: Never call Timeout.timeout in rescue clause

    The try-open_timeout-then-fallback-to-timeout introduced in
    https://github.com/ruby/net-http/commit/1903cedd8cd0 works well, but when it errors
    due to any reason in Rubies which do not support `open_timeout`, it
    spits the rescued ArgumentError that is unrelated to user code and not
    actionable.

        Net::HTTP.start('foo.bar', 80)

        /.../net-http-0.8.0/lib/net/http.rb:1691:in 'TCPSocket#initialize': Failed to open TCP connection to foo.bar:80 (getaddrinfo(3): nodename nor servname provided, or not known) (Socket::ResolutionError)
                from /.../net-http-0.8.0/lib/net/http.rb:1691:in 'IO.open'
                from /.../net-http-0.8.0/lib/net/http.rb:1691:in 'block in Net::HTTP#connect'
                from /.../timeout-0.4.4/lib/timeout.rb:188:in 'block in Timeout.timeout'
                from /.../timeout-0.4.4/lib/timeout.rb:195:in 'Timeout.timeout'
                from /.../net-http-0.8.0/lib/net/http.rb:1690:in 'Net::HTTP#connect'
                from /.../net-http-0.8.0/lib/net/http.rb:1655:in 'Net::HTTP#do_start'
                from /.../net-http-0.8.0/lib/net/http.rb:1635:in 'Net::HTTP#start'
                from /.../net-http-0.8.0/lib/net/http.rb:1064:in 'Net::HTTP.start'
                (snip)
        /.../net-http-0.8.0/lib/net/http.rb:1682:in 'TCPSocket#initialize': unknown keyword: :open_timeout (ArgumentError)

                  sock = TCPSocket.open(conn_addr, conn_port, @local_host, @local_port, open_timeout: @open_timeout)
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                from /.../net-http-0.8.0/lib/net/http.rb:1682:in 'IO.open'
                from /.../net-http-0.8.0/lib/net/http.rb:1682:in 'Net::HTTP#connect'
                from /.../net-http-0.8.0/lib/net/http.rb:1655:in 'Net::HTTP#do_start'
                from /.../net-http-0.8.0/lib/net/http.rb:1635:in 'Net::HTTP#start'
                from /.../net-http-0.8.0/lib/net/http.rb:1064:in 'Net::HTTP.start'
                (snip)
                ... 8 levels...

    This patch suppresses the ArgumentError by moving the retry out of the
    rescue clause.

    https://github.com/ruby/net-http/commit/86232d62f5

commit f179885d3c454c6a98c23b2a977480657bb0f676
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-02-28 03:10:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 21:24:54 +0900

    [ruby/openssl] asn1: use ASN1_TIME_to_tm() to decode UTCTime and GeneralizedTime

    The current logic relies on sscanf() and error checks are almost
    entirely missing. It also assumes that ASN1_STRING contents are NUL
    terminated, which is undocumented and not guaranteed for all valid
    ASN1_TIME objects.

    Switch to using ASN1_TIME_to_tm() added in OpenSSL 1.1.1. It is also
    supported by LibreSSL and AWS-LC.

    In the long term, we may want to replace ASN1_TIME_to_tm() with a
    hand-rolled decoder, since the function is intended for a specific
    use-case. It is too permissive for strict DER, yet still does not
    support all valid DER inputs and silently drops information such as
    fractional seconds. However, it handles everything that the current
    sscanf() code could handle.

    https://github.com/ruby/openssl/commit/73484f6794

commit bf2b9c09473ee1a49766c6d7c6e1d683236a13ee
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-05 02:52:38 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 21:24:54 +0900

    [ruby/openssl] asn1: reorder declarations

    Move variable declarations for OpenSSL::ASN1 classes to the top of the
    file. asn1time_to_time() will need eASN1Error in the next patch.

    https://github.com/ruby/openssl/commit/6c0ef87897

commit 95ea3bd5ee9abc9e32c68e6a4fe2d795d853d907
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-05 20:32:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 20:35:21 +0900

    [ruby/timeout] Only the timeout method should be public on the Timeout module

    https://github.com/ruby/timeout/commit/cd51eac3ca

commit 1cad20e2d5179b283cbb1aabe2496449f8edcbcb
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-05 16:12:49 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-05 16:47:39 +0900

    [DOC] Describe `$F`

    This variation is used when `-a` option is given.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15418

commit 1e7373ef3061a3e0f3010ee580e5d4f80baf2e1a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-05 13:02:22 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-05 16:31:36 +0900

    [DOC] Describe the global variables set by command line options

    These variables are set by command line options, but it is deprecated
    to assign them any value other than nil in ruby code.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15418

commit b35aff5813193a1f676bb1ff7b390797a892ad4e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-05 12:33:03 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-05 16:14:15 +0900

    [DOC] Centerize Variable, English, and Constant columns

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15418

commit 479185daa140f9d5894e9c254f2f881d36df1ddc
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-12-05 14:52:55 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-05 15:31:40 +0900

    Add Set C API to news

    Also, don't use backticks around Set in the top level of the
    Core classes updates section, as other classes/modules do not use
    that format.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15416

commit 5f6b31c23ff1eefdf3cd5807ce5f80abf24eb1b2
  Author:     Sharon Rosner <sharon@noteflakes.com>
  AuthorDate: 2025-12-05 14:20:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-05 14:20:39 +0900

    Correctly handle `Process.fork` with an active `Fiber.scheduler`. (#15385)

    In the child process, nullify the current fiber scheduler and set the current fiber to blocking.

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit e822209d3e3dfde39a7d6818951869606ae8cbf0
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-05 14:16:25 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-05 14:16:25 +0900

    Update NEWS.md for Ruby 4.0.0 (#15369)

    I extracted the relevant descriptions from the draft NEWS.md that
    hsbt-san had Gemini generate by analyzing `git log`.

    Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
    Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
    Co-authored-by: Jeremy Evans <code@jeremyevans.net>
    Co-Authored-By: Earlopain <14981592+Earlopain@users.noreply.github.com>

  Notes:
    Merged-By: mame <mame@ruby-lang.org>

commit d3a9a17b6f908a64d8cf7b35c5e7337be3fc7cc5
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-05 11:00:17 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-05 11:00:40 +0900

    Skip Windows runner group warning under ruby/ruby repo

commit 02cddcc2be3150fad1da37ebdeb6e2d9ec29306c
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-05 02:48:05 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-05 10:45:03 +0900

    Ractor.shareable_proc(&pr) should copy pr

    `pr` should not change on this method.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15413

commit d105709f2b989c03261371306b08f8fc5ccaa680
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-05 06:33:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 08:01:22 +0900

    [ruby/rubygems] Add before(:context) hook to warn when spec files are not assigned to any Windows runner group

    https://github.com/ruby/rubygems/commit/3ddb740969

commit 412895ae84c204466f085d1aae6ca90db88e255a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-04 14:19:00 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 08:01:22 +0900

    [ruby/rubygems] Try to split and run three runners for Windows

    I organized all examples the followings:

    ```
    Total test time: 2468.41 seconds
    Total files: 168

    Group A: 42 files, 617.08 seconds
    Group B: 42 files, 617.05 seconds
    Group C: 42 files, 617.14 seconds
    Group D: 42 files, 617.14 seconds
    ```

    https://github.com/ruby/rubygems/commit/94d41e6c7c

commit 6d0c9598f5c62901e0bd9c39e34f0aa2fc7846ed
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-03 04:59:15 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-05 06:58:26 +0900

    [DOC] Cross-link between README pages

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15377

commit 8d8159e7d87e4fd1594ce2fad3d2653e47fb1026
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-05 06:51:11 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-05 06:51:11 +0900

    Fix thread scheduler issue with thread_sched_wait_events (#15392)

    Fix race between timer thread dequeuing waiting thread and thread
    skipping sleeping due to being dequeued. We now use `th->event_serial` which
    is protected by `thread_sched_lock`. When a thread is put on timer thread's waiting
    list, the event serial is saved on the item. The timer thread checks
    that the saved serial is the same as current thread's serial before
    calling `thread_sched_to_ready`.

    The following script (taken from a test in `test_thread.rb` used to crash on
    scheduler debug assertions. It would likely crash in non-debug mode as well.

    ```ruby
    def assert_nil(val)
      if val != nil
        raise "Expected #{val} to be nil"
      end
    end

    def assert_equal(expected, actual)
      if expected != actual
        raise "Expected #{expected} to be #{actual}"
      end
    end

    def test_join2
      ok = false
      t1 = Thread.new { ok = true; sleep }
      Thread.pass until ok
      Thread.pass until t1.stop?
      t2 = Thread.new do
        Thread.pass while ok
        t1.join(0.01)
      end
      t3 = Thread.new do
        ok = false
        t1.join
      end
      assert_nil(t2.value)
      t1.wakeup
      assert_equal(t1, t3.value)
    ensure
      t1&.kill&.join
      t2&.kill&.join
      t3&.kill&.join
    end

    rs = 30.times.map do
      Ractor.new do
        test_join2
      end
    end
    rs.each(&:join)
    ```

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 7d9558f99b5bb8279c138860670b56735a28a3e4
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-02 12:31:38 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-05 06:25:45 +0900

    Adjust test to avoid bug

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15086

commit 1d3fe2c382fd543bf12b2e12c2633162ea4b3a0a
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-10-31 04:05:25 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-05 06:25:45 +0900

    Change bmethod defined_ractor to use id instead

    When defining a bmethod, we recorded the current Ractor's object in the
    method. However that was never marked and so could be GC'd and reused by
    a future Ractor. Instead we can use the Ractor's id, which we expect to
    be unique forever.

    Co-authored-by: Luke Gruber <luke.gru@gmail.com>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15086

commit de2c2bd60fdce52cc7ba38a25f3e9436442af604
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-05 06:10:21 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-05 06:10:21 +0900

    Take VM lock in `class_switch_superclass` (#15356)

    Safe multi-ractor subclass list mutation

    We need to lock around mutation and accesses of a class's subclasses
    list. Unfortunately we also need to do this when creating singleton
    classes, as the singleton class does need to go into `super`'s
    subclasses list for CC invalidation purposes.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 2aaea665bb19be8ed64605ec9aa5c990fddbd2ce
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-05 02:40:59 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-05 03:10:50 +0900

    fix typo s/sharable/shareable/

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15412

commit 6fe1c1591106ef428f42cd5601be1cab994dae9a
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-11-18 22:40:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-05 02:32:37 +0900

    [ruby/openssl] Revert "rewriting most of the asn1 init code in ruby"

    This reverts commit https://github.com/ruby/openssl/commit/830505172882.

    The commit is part of the bigger effort to rewrite OpenSSL::ASN1 in
    Ruby. OpenSSL::ASN1 is relatively isolated from the rest of ruby/openssl
    and is not tightly bound to the OpenSSL API. The current implementation
    also needs a major refactor for several reasons, so this remains a
    long-term goal.

    However, the work is not yet complete. We are close to releasing v4.0.0,
    and we want to avoid shipping fragmented code in a stable branch. The
    changes can be reapplied when the rest is ready.

    https://github.com/ruby/openssl/commit/362942dcbf

commit 4c893e2ff1077b977483da14c0540e9247b87c7e
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-05 01:19:55 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-05 02:28:30 +0900

    Method and UnboundMethod can be sharable

    with `RUBY_TYPED_FROZEN_SHAREABLE_NO_REC`,
    if the receiver object is shareable on Method objects.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15411

commit f2cd772329b8d07e29ed114480ff99ad36acbd75
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-05 01:13:55 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-05 02:28:30 +0900

    (experimental) RUBY_TYPED_FROZEN_SHAREABLE_NO_REC

    `T_DATA` has a flag `RUBY_TYPED_FROZEN_SHAREABLE` which means
    if the `T_DATA` object is frozen, it can be sharable.
    On the `Ractor.make_sharable(obj)`, rechable objects from the
    `T_DATA` object will be apply `Ractor.make_shareable` recursively.

    `RUBY_TYPED_FROZEN_SHAREABLE_NO_REC` is similar to the
    `RUBY_TYPED_FROZEN_SHAREABLE`, but doesn't apply `Ractor.make_sharable`
    recursively for children.
    If it refers to unshareable objects, it will simply raise an error.

    I'm not sure this pattern is common or not, so it is not in public.
    If we find more cases, we can discuss publication.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15411

commit 3730022787086852fa2fbc94ffda6ec8c8fbc0b3
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-05 01:25:45 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-05 01:25:45 +0900

    Remove mismatched indentations warning (#15410)

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 29a12297c3594ed24102d62e16dfd6d4e5e328f3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-05 01:04:08 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-05 01:04:08 +0900

    Refine non-nil warnings for the deprecated variables

commit cf12aff0593a0aa70d957b96f03df8288c025938
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-05 00:27:45 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-05 00:27:45 +0900

    [Bug #21764] Propagate the encoding of ID to warning

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15409

commit 465a86c3417d2936c311d9571aa9b6494a83eed8
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-04 19:58:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 23:50:46 +0900

    [ruby/prism] Fix `%Q` with newline delimiter and heredoc interpolation

    The lexer did not jump to the `heredoc_end`, causing the heredoc end delimiter
    to be parsed twice.

    Normally the heredocs get flushed when a newline is encountered. But because
    the newline is part of the string delimiter, that codepath is not taken.

    Fixes [Bug #21758]

    https://github.com/ruby/prism/commit/7440eb4b11

commit 8099e9d2d1b47ef4ce2fa184bea079a270ceb466
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-04 18:08:23 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-04 18:08:23 +0900

    [DOC] Fix a macro name

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15404

commit b872fbe3dd3fe2601e4cddfd3179b5166dc121d4
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-04 18:07:32 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-04 18:07:49 +0900

    Deprecate `rb_eval_cmd_kw`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15404

commit 7f41c3e7b1373f35cc073241b3773289be9be03e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-04 17:35:38 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-04 18:07:49 +0900

    Add `rb_eval_cmd_call_kw` to shortcut

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15404

commit f8231dacd570e8c96c385fb9691719756b1dbc7d
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-12-04 14:29:35 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-12-04 17:15:42 +0900

    Ractor.store_if_absent should not warn

    ```ruby
    $VERBOSE = true

    Ractor.store_if_absent :key do
    end #=> warning: the block passed to 'Ractor.store_if_absent' defined at <internal:ractor>:474 may be ignored
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15402

commit d343968ec3a899a29ff4e330dc914d67972ebe85
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-04 17:12:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 17:13:03 +0900

    [ruby/json] Release 2.17.1

    https://github.com/ruby/json/commit/e5e4fd558e

commit d58a45d32ffe8afed1685e54017fb81cea898867
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-04 17:06:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 17:10:41 +0900

    [ruby/json] Fix a regression in parsing of unicode surogate pairs

    Fix: https://github.com/ruby/json/issues/912

    In the case of surogate pairs we consume two backslashes, so
    `json_next_backslash` need to ensure it's not sending us back in the
    stream.

    https://github.com/ruby/json/commit/0fce370c41

commit 932762f29457ad1def6fbab7eca7bcbeeb58ea5c
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-17 08:18:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 15:47:46 +0900

    [ruby/rubygems] Increase connection pool to allow for up to 70% speed increase:

    - ### TL;DR

      Bundler is heavily limited by the connection pool which manages a
      single connection. By increasing the number of connection, we can
      drastiscally speed up the installation process when many gems need
      to be downloaded and installed.

      ### Benchmark

      There are various factors that are hard to control such as
      compilation time and network speed but after dozens of tests I
      can consistently get aroud 70% speed increase when downloading and
      installing 472 gems, most having no native extensions (on purpose).

      ```
      # Before
      bundle install  28.60s user 12.70s system 179% cpu 23.014 total

      # After
      bundle install  30.09s user 15.90s system 281% cpu 16.317 total
      ```

      You can find on this gist how this was benchmarked and the Gemfile
      used https://gist.github.com/Edouard-chin/c8e39148c0cdf324dae827716fbe24a0

      ### Context

      A while ago in #869, Aaron introduced a connection pool which
      greatly improved Bundler speed. It was noted in the PR description
      that managing one connection was already good enough and it wasn't
      clear whether we needed more connections. Aaron also had the
      intuition that we may need to increase the pool for downloading
      gems and he was right.

      > We need to study how RubyGems uses connections and make a decision
      > based on request usage (e.g. only use one connection for many small
      > requests like bundler API, and maybe many connections for
      > downloading gems)

      When bundler downloads and installs gem in parallel https://github.com/ruby/rubygems/blob/4f85e02fdd89ee28852722dfed42a13c9f5c9193/bundler/lib/bundler/installer/parallel_installer.rb#L128
      most threads have to wait for the only connection in the pool to be
      available which is not efficient.

      ### Solution

      This commit modifies the pool size for the fetcher that Bundler
      uses. RubyGems fetcher will continue to use a single connection.

      The bundler fetcher is used in 2 places.

      1. When downloading gems https://github.com/ruby/rubygems/blob/4f85e02fdd89ee28852722dfed42a13c9f5c9193/bundler/lib/bundler/source/rubygems.rb#L481-L484
      2. When grabing the index (not the compact index) using the
        `bundle install --full-index` flag.
        https://github.com/ruby/rubygems/blob/4f85e02fdd89ee28852722dfed42a13c9f5c9193/bundler/lib/bundler/fetcher/index.rb#L9

      Having more connections in 2) is not any useful but tweaking the
      size based on where the fetcher is used is a bit tricky so I opted
      to modify it at the class level.
      I fiddle with the pool size and found that 5 seems to be the sweet
      spot at least for my environment.

    https://github.com/ruby/rubygems/commit/6063fd9963

commit 0af85a1fe291856d6b3d2b3bb68e6edb8cb44b4f
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-04 11:27:56 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-04 11:27:56 +0900

    ZJIT: Optimize setivar with shape transition (#15375)

    Since we do a decent job of pre-sizing objects, don't handle the case where we would need to re-size an object. Also don't handle too-complex shapes.

    lobsters stats before:

    ```
    Top-20 calls to C functions from JIT code (79.4% of total 90,051,140):
                                 rb_vm_opt_send_without_block: 19,762,433 (21.9%)
                                    rb_vm_setinstancevariable:  7,698,314 ( 8.5%)
                                                 rb_hash_aref:  6,767,461 ( 7.5%)
                                              rb_vm_env_write:  5,373,080 ( 6.0%)
                                                   rb_vm_send:  5,049,229 ( 5.6%)
                                    rb_vm_getinstancevariable:  4,535,259 ( 5.0%)
                                            rb_obj_is_kind_of:  3,746,306 ( 4.2%)
                               rb_ivar_get_at_no_ractor_check:  3,745,237 ( 4.2%)
                                            rb_vm_invokesuper:  3,037,467 ( 3.4%)
                                                 rb_ary_entry:  2,351,983 ( 2.6%)
                                   rb_vm_opt_getconstant_path:  1,344,740 ( 1.5%)
                                            rb_vm_invokeblock:  1,184,474 ( 1.3%)
                                                     Hash#[]=:  1,064,288 ( 1.2%)
                                           rb_gc_writebarrier:  1,006,972 ( 1.1%)
                                    rb_ec_ary_new_from_values:    902,687 ( 1.0%)
                                                        fetch:    898,667 ( 1.0%)
                                            rb_str_buf_append:    833,787 ( 0.9%)
                                   rb_class_allocate_instance:    822,024 ( 0.9%)
                                                   Hash#fetch:    699,580 ( 0.8%)
                                                        _bi20:    682,068 ( 0.8%)
    Top-4 setivar fallback reasons (100.0% of total 7,732,326):
      shape_transition: 6,032,109 (78.0%)
       not_monomorphic: 1,469,300 (19.0%)
          not_t_object:   172,636 ( 2.2%)
           too_complex:    58,281 ( 0.8%)
    ```

    lobsters stats after:

    ```
    Top-20 calls to C functions from JIT code (79.0% of total 88,322,656):
                                 rb_vm_opt_send_without_block: 19,777,880 (22.4%)
                                                 rb_hash_aref:  6,771,589 ( 7.7%)
                                              rb_vm_env_write:  5,372,789 ( 6.1%)
                                           rb_gc_writebarrier:  5,195,527 ( 5.9%)
                                                   rb_vm_send:  5,049,145 ( 5.7%)
                                    rb_vm_getinstancevariable:  4,538,485 ( 5.1%)
                                            rb_obj_is_kind_of:  3,746,241 ( 4.2%)
                               rb_ivar_get_at_no_ractor_check:  3,745,172 ( 4.2%)
                                            rb_vm_invokesuper:  3,037,157 ( 3.4%)
                                                 rb_ary_entry:  2,351,968 ( 2.7%)
                                    rb_vm_setinstancevariable:  1,703,337 ( 1.9%)
                                   rb_vm_opt_getconstant_path:  1,344,730 ( 1.5%)
                                            rb_vm_invokeblock:  1,184,290 ( 1.3%)
                                                     Hash#[]=:  1,061,868 ( 1.2%)
                                    rb_ec_ary_new_from_values:    902,666 ( 1.0%)
                                                        fetch:    898,666 ( 1.0%)
                                            rb_str_buf_append:    833,784 ( 0.9%)
                                   rb_class_allocate_instance:    821,778 ( 0.9%)
                                                   Hash#fetch:    755,913 ( 0.9%)
    Top-4 setivar fallback reasons (100.0% of total 1,703,337):
                not_monomorphic: 1,472,405 (86.4%)
                   not_t_object:   172,629 (10.1%)
                    too_complex:    58,281 ( 3.4%)
      new_shape_needs_extension:        22 ( 0.0%)
    ```

    I also noticed that primitive printing in HIR was broken so I fixed that.

    Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 3efd8c6764a5b324b7d04a12443c2f18dd74181b
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-04 10:25:52 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-04 10:25:52 +0900

    ZJIT: Inline Kernel#class (#15397)

    We generally know the receiver's class from profile info. I see 600k of these when running lobsters.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 19f0df04ff733f687bf33ebd9c85285c5e733253
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-03 03:28:41 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-04 10:13:02 +0900

    ZJIT: Fix definite assignment to work with multiple entry blocks

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15395

commit c764269fbc4e2e58cea7c3880fa1485c7d2db123
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-03 03:11:09 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-04 10:13:02 +0900

    ZJIT: Only use make_equal_to for instructions with output

    It's used as an alternative to find-and-replace, so we should have
    nothing to replace.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15395

commit 0e7e6858e3a3689708371028cb1553317b905bb0
  Author:     Caleb Stewart <caleb.stewart94@gmail.com>
  AuthorDate: 2025-08-05 10:52:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 09:42:17 +0900

    [ruby/psych] Add option to disable symbol parsing

    https://github.com/ruby/psych/commit/4e9d08c285

commit 8f7d821dbae8bba00e1e905bbda1b639998288aa
  Author:     Rune Philosof <rune.git@philosof.dk>
  AuthorDate: 2025-10-28 21:55:59 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 09:40:11 +0900

    [ruby/psych] Remove y Object extension in IRB

    Fixes: ruby#685

    This feature can easily break how you use other gems like factory_bot or prawn.

    https://github.com/ruby/psych/pull/747#issuecomment-3413139525
    > But I kind of think we should leave `psych/y` around. If people really want to use it they could require the file.

    If you miss the function in Kernel, you can require it interactively or add it to `.irbrc`:
    ```ruby
    require 'psych/y'
    ```

    https://github.com/ruby/psych/commit/f1610b3f05

commit e96bbd718e4aef81c749080016a44364a2b8e8c9
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-12-03 15:52:30 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-12-04 09:39:54 +0900

    Remove needless parse.y `new_nil` macro

    In the past parse.y and ripper had different `new_nil` definition
    so that `new_nil` returns `nil` for ripper.

    ```c
    // parse.y
    #define new_nil(loc) NEW_NIL(loc)

    // ripper
    #define new_nil(loc) Qnil
    ```

    However Rearchitect Ripper (89cfc1520717257073012ec07105c551e4b8af7c)
    removed `new_nil` definition for ripper then this commit removes
    needless parse.y macro and uses `NEW_NIL` directly.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15398

commit b79ef73a3bb911c8d5ac9016092eab08b146fb3a
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-12-03 11:27:06 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-12-04 09:39:54 +0900

    Remove needless parse.y `value_expr` macro

    In the past parse.y and ripper had different `value_expr` definition
    so that `value_expr` does nothing for ripper.

    ```c
    // parse.y
    #define value_expr(node) value_expr_gen(p, (node))

    // ripper
    #define value_expr(node) ((void)(node))
    ```

    However Rearchitect Ripper (89cfc1520717257073012ec07105c551e4b8af7c)
    removed `value_expr` definition for ripper then this commit removes
    needless parse.y macro and uses `value_expr_gen` directly.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15398

commit b43e66d3b37d4bd029a90dbee376e475aed79d2a
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-04 06:11:30 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-04 06:59:05 +0900

    YJIT: Pass class and shape ID directly instead of object

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15394

commit f1670733249fb30d755bad1f88c0e54b26bdf49e
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-04 06:06:41 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-04 06:59:05 +0900

    Move imemo fields check out of shape_get_next

    Not every caller (for example, YJIT) actually needs to pass the object.
    YJIT (and, in the future, ZJIT) only need to pass the class.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15394

commit 612a66805f35b2c732ec843d78f1dcad5c6456cd
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-04 06:02:31 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-04 06:59:05 +0900

    Remove spurious obj != klass check in shape_get_next

    This should never be true. I added an `rb_bug` in case it was and it
    wasn't true in any of btest or test-all.

    Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15394

commit d7e55f84f2bd62d302b29513d4c4dc8ae9aef96f
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-26 09:51:54 +0900
  Commit:     Aaron Patterson <aaron.patterson@gmail.com>
  CommitDate: 2025-12-04 06:37:40 +0900

    ZJIT: Use the custom iterator

    This commit uses the custom instruction iterator in arm64 / x86_64
    instruction splitting.  Once we introduce basic blocks to LIR, the
    custom iterator will ensure that instructions are added to the correct
    place.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15363

commit 2b23b05bf2c0f30f2c4ee9bb3030fa58f2cba3a6
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-25 09:16:08 +0900
  Commit:     Aaron Patterson <aaron.patterson@gmail.com>
  CommitDate: 2025-12-04 06:37:40 +0900

    ZJIT: Add a specialized instruction iterator to the assembler

    This commit adds a specialized instruction iterator to the assembler
    with a custom "peek" method.  The reason is that we want to add basic
    blocks to LIR.  When we split instructions, we need to add any new
    instructions to the correct basic block.  The custom iterator will
    maintain the correct basic block inside the assembler, that way when we
    push any new instructions they will be appended to the correct place.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15363

commit a773bbf0cc35cd4b73509edd58a0757d06abaca6
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-03 02:46:10 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-04 05:37:07 +0900

    Track small malloc/free changes in thread local

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15372

commit 9913d8da1ffcd00e8c648ac52abefdc086662797
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-02 16:19:14 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-04 05:37:07 +0900

    Group malloc counters together

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15372

commit 8d1a6bc48b1a45cacd8b1f1c42f71d5967a27bba
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-04 04:40:22 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-04 05:15:10 +0900

    gc.c: check if the struct has fields before marking the fields_obj

    If GC trigger in the middle of `struct_alloc`, and the struct has more
    than 3 elements, then `fields_obj` reference is garbage.

    We must first check the shape to know if it was actually initialized.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15393

commit 228d13f6ed914d1e7f6bd2416e3f5be8283be865
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-04 02:08:14 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-04 03:51:48 +0900

    gc.c: Pass shape_id to `newobj_init`

    Attempt to fix the following SEGV:

    ```
    ruby(gc_mark) ../src/gc/default/default.c:4429
    ruby(gc_mark_children+0x45) [0x560b380bf8b5] ../src/gc/default/default.c:4625
    ruby(gc_mark_stacked_objects) ../src/gc/default/default.c:4647
    ruby(gc_mark_stacked_objects_all) ../src/gc/default/default.c:4685
    ruby(gc_marks_rest) ../src/gc/default/default.c:5707
    ruby(gc_marks+0x4e7) [0x560b380c41c1] ../src/gc/default/default.c:5821
    ruby(gc_start) ../src/gc/default/default.c:6502
    ruby(heap_prepare+0xa4) [0x560b380c4efc] ../src/gc/default/default.c:2074
    ruby(heap_next_free_page) ../src/gc/default/default.c:2289
    ruby(newobj_cache_miss) ../src/gc/default/default.c:2396
    ruby(RB_SPECIAL_CONST_P+0x0) [0x560b380c5df4] ../src/gc/default/default.c:2420
    ruby(RB_BUILTIN_TYPE) ../src/include/ruby/internal/value_type.h:184
    ruby(newobj_init) ../src/gc/default/default.c:2136
    ruby(rb_gc_impl_new_obj) ../src/gc/default/default.c:2500
    ruby(newobj_of) ../src/gc.c:996
    ruby(rb_imemo_new+0x37) [0x560b380d8bed] ../src/imemo.c:46
    ruby(imemo_fields_new) ../src/imemo.c:105
    ruby(rb_imemo_fields_new) ../src/imemo.c:120
    ```

    I have no reproduction, but my understanding based on the backtrace
    and error is that GC is triggered inside `newobj_init` causing the
    new object to be marked while in a incomplete state.

    I believe the fix is to pass the `shape_id` down to `newobj_init`
    so it can be set before the GC has a chance to trigger.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15388

commit fd02356e36198b5bb0bb64f303a716a4ada9ed15
  Author:     Goshanraj Govindaraj <govindag@mcmaster.ca>
  AuthorDate: 2025-12-04 03:37:43 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-04 03:37:43 +0900

    ZJIT: Optimize NewArray to use rb_ec_ary_new_from_values (#15391)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit d5c7cf0a1a1d2a72421b9a166e19442f89b99868
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-03 17:06:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 03:24:14 +0900

    [ruby/prism] Fix wrong error message for lower percent i arrays

    Not so sure how to trigger it but this is definitly more correct.

    https://github.com/ruby/prism/commit/1bc8ec5e5d

commit ed31a0caa88006afa507fd387e3f84ad8b8ddb00
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-03 17:05:13 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 03:24:14 +0900

    [ruby/prism] Correctly handle line continuations in %w/i% interrupted by heredocs

    See https://bugs.ruby-lang.org/issues/21756. Ripper fails to parse this,
    but prism actually also doesn't handle it correctly.

    When heredocs are used, even in lowercase percent arays there can be
    multiple `STRING_CONTENT` tokens. We need to concat them.

    Luckily we don't need to handle as many cases as in uppercase arrays where interpolation is allowed.

    https://github.com/ruby/prism/commit/211677000e

commit f9cd94f17d6fef49f1ee5cbb8f66839f0d7a5db9
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-02 08:15:42 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-04 03:13:36 +0900

    wb-protect autoload_const

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15366

commit fcf3939780972d587b18afc26c4abd2da2c0b7ec
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-03 22:50:35 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-04 01:54:27 +0900

    Speedup TypedData_Get_Struct

    While profiling `Monitor#synchronize` and `Mutex#synchronize`
    I noticed a fairly significant amount of time spent in
    `rb_check_typeddata`.

    By implementing a fast path that assumes the object is valid
    and that can be inlined, it does make a significant difference:

    Before:

    ```
      Mutex     13.548M (± 3.6%) i/s   (73.81 ns/i) -     68.566M in   5.067444
    Monitor     10.497M (± 6.5%) i/s   (95.27 ns/i) -     52.529M in   5.032698s
    ```

    After:

    ```
      Mutex     20.887M (± 0.3%) i/s   (47.88 ns/i) -    106.021M in   5.075989s
    Monitor     16.245M (±13.3%) i/s   (61.56 ns/i) -     80.705M in   5.099680s
    ```

    ```ruby
    require 'bundler/inline'

    gemfile do
      gem "benchmark-ips"
    end

    mutex = Mutex.new
    require "monitor"
    monitor = Monitor.new

    Benchmark.ips do |x|
      x.report("Mutex") { mutex.synchronize { } }
      x.report("Monitor") { monitor.synchronize { } }
    end
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15387

commit d7dffcdbeeee81bb3bbe63b86620cb682eb3ab23
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-03 23:41:23 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 01:34:51 +0900

    [ruby/prism] Follow repo move from oracle/truffleruby to truffleruby/truffleruby

    https://github.com/ruby/prism/commit/c8e1b11120

commit 94581b1ffde5e2afeba4631152955c18ec52ccf0
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-04 00:23:14 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 00:25:29 +0900

    [ruby/json] Release 2.17.0

    https://github.com/ruby/json/commit/4bdb2d14fe

commit 208271e3723653cd4cb9cd2eb4a6c631eee0b09c
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-03 23:43:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-04 00:21:08 +0900

    [ruby/json] Fix handling of depth

    https://github.com/ruby/json/commit/ccca602274

commit b78db63be4d078b7ac29c8e9fcb40cb20d232265
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-03 18:47:28 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-03 23:57:26 +0900

    fstring_concurrent_set_create: only assert the string has no ivars

    The NEWOBJ tracepoint can generate an object_id, that's alright,
    what we don't want is actual instance variables.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15386

commit 5770c186d1e9d8e7202c83763c9619faa1f4c97c
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-03 18:42:50 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-03 23:57:26 +0900

    Rename `rb_obj_exivar_p` -> `rb_obj_gen_fields_p`

    The "EXIVAR" terminology has been replaced by "gen fields"
    AKA "generic fields".

    Exivar implies variable, but generic fields include more than
    just variables, e.g. `object_id`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15386

commit 05383a1de2f2afe263ab894e851eca51e40bb543
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-03 23:13:00 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 23:13:39 +0900

    [ruby/json] Fix duplicated test_unsafe_load_with_options test case

    https://github.com/ruby/json/commit/7b62fac525

commit 32c7c3c19aa7c9c3fda10a9520d29e244baeaa6d
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-28 23:53:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 22:49:05 +0900

    [ruby/json] Reproduce C ext behavior of ignoring mutated depth in arrays

    https://github.com/ruby/json/commit/e0257b9f82

commit 54a73a57a292d8d7e88cadd3fd8454a3084a60e9
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-28 00:12:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 22:49:05 +0900

    [ruby/json] Test and restore behavior around to_json changing depth

    When serializing an Array, and one of the elements of the Array requires
    calling `to_json`, if the depth is changed, it will be used for the next
    entries, which wasn't the case before
    https://github.com/ruby/json/commit/5abd43490714, and is not the case with
    TruffleRuby and JRuby.

    Additionally, with TruffleRuby and JRuby the state's depth after the
    `to_json` call is used to close the Array, which isn't the case with
    CRuby.

    https://github.com/ruby/json/commit/386b36fde5

commit 4d377c8c2eedc42f274b3b2a841fa24d5b4c5541
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-03 22:41:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 22:48:31 +0900

    [ruby/json] Improve `JSON.load` and `JSON.unsafe_load` to allow passing options as second argument

    Otherwise it's very error prone.

    https://github.com/ruby/json/commit/c54de70f90

commit 706d80830b9f0a5a2eac66251d1417abb2ff143c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-03 17:38:23 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 18:46:42 +0900

    [ruby/rubygems] Silence Bundler UI in plugin installer specs

    https://github.com/ruby/rubygems/commit/90a0af8204

commit 8c3909935e2ba9f79bf3492772c77c305a0d370b
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-25 23:06:33 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-03 16:14:56 +0900

    Handle NEWOBJ tracepoints settings fields

    [Bug #21710]

    - struct.c: `struct_alloc`

    It is possible for a `NEWOBJ` tracepoint call back to write fields
    into a newly allocated object before `struct_alloc` had the time
    to set the `RSTRUCT_GEN_FIELDS` flags and such.

    Hence we can't blindly initialize the `fields_obj` reference to `0`
    we first need to check no fields were added yet.

    - object.c: `rb_class_allocate_instance`

    Similarly, if a `NEWOBJ` tracepoint tries to set fields on the object,
    the `shape_id` must already be set, as it's required on T_OBJECT to
    know where to write fields.

    `NEWOBJ_OF` had to be refactored to accept a `shape_id`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15320

commit 4762f429f4c26ce838bd3810dc709d08a207716a
  Author:     B. Burt <162539390+beeburrt@users.noreply.github.com>
  AuthorDate: 2025-12-03 14:02:06 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-03 14:16:03 +0900

    [DOC] typo fix in ruby/file.c

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15382

commit b8a7988478bfa8faff7a6f36e5dd22f6f98872b7
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-12-03 09:37:43 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-03 11:53:10 +0900

    Avoid leaking fd in uminus_no_embed test

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15380

commit 1af7550114a0401229eda42de24a829611ffacec
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-03 08:11:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 11:42:32 +0900

    [ruby/rubygems] Bump Rubygems version to 4.0.0

    https://github.com/ruby/rubygems/commit/9d744beb56

commit d6107f4ae96ef526918847c566eef8f59cfc0bdd
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-03 08:11:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 11:42:31 +0900

    [ruby/rubygems] Bump Bundler version to 4.0.0

    https://github.com/ruby/rubygems/commit/a55c485226

commit 6e723bee45fedaffa5ea382c9ace628b58c0c70d
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-03 11:41:21 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-03 11:41:21 +0900

    [DOC] About Float Imprecision (#15293)

  Notes:
    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit b2f110651c0ab1c3991dd89dc2529a6f21e17170
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-03 11:39:25 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-03 11:39:25 +0900

    [DOC] Harmonize #+ methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15291

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 28d9493b98c7fef39845393ea00ef5eb6947091b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-03 10:56:53 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 11:19:06 +0900

    [ruby/json] Fix macro arguments

    `ALWAYS_INLINE()` and `NOINLINE()` are defined with one argument.

    https://github.com/ruby/json/commit/8fb727901e

commit dfdc5d40ec25e42ff63982958c43d425bee909fb
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-11-26 14:11:23 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-12-03 10:18:22 +0900

    Check and raise semantics errors on nested variables captures in patterns

    This commit makes these codes to be invalid.

    ```ruby
    case 0
    in [a] | 1
    end

    case 0
    in { a: b } | 1
    end

    case 0
    in [{ a: [{ b: [{ c: }] }] }] | 1
    end
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15329

commit a211abbcbd87f6d59a99cfcf2cb63a39d61b16ea
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-03 07:35:53 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-03 07:35:53 +0900

    Cache array length in `rb_ary_join` (#15362)

    When all elements are strings, we never have to recalculate the length
    of the array because there are no conversion methods that are called, so
    the length will never change. This speeds up the fast path by ~10%.

    ```ruby
    a = ["1"*10, "2"*10, "3"*10, "4"*10, "5"*10] * 10
    10_000_000.times do
      a.join
    end
    ```

    ```
    hyperfine --warmup 1 'ruby ../ruby2/test.rb' './exe/ruby ../ruby2/test.rb'
    Benchmark 1: ruby ../ruby2/test.rb
      Time (mean ± σ):      3.779 s ±  0.053 s    [User: 3.754 s, System: 0.017 s]
      Range (min … max):    3.715 s …  3.874 s    10 runs

    Benchmark 2: ./exe/ruby ../ruby2/test.rb
      Time (mean ± σ):      3.411 s ±  0.038 s    [User: 3.387 s, System: 0.017 s]
      Range (min … max):    3.360 s …  3.472 s    10 runs

    Summary
      ./exe/ruby ../ruby2/test.rb ran
        1.11 ± 0.02 times faster than ruby ../ruby2/test.rb
    ```

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit a63147eed1184cb812664d5917d6687635a23ab6
  Author:     Yuki Kurihara <co000ri@gmail.com>
  AuthorDate: 2025-12-03 07:24:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:24:29 +0900

    [ruby/strscan] [DOC] Avoid being interpreted as a link
    (https://github.com/ruby/strscan/pull/180)

    Since `[](n)` is being interpreted as a Markdown link, it cannot be
    displayed as a method call.
    I have corrected this by escaping the brackets so that they are
    interpreted as strings rather than links.

    ### Before

    ri

    ```
        #{}[n]     |   <tt>n</tt>th captured substring.    |       +nil+.
    ```

    html

    <img width="424" height="217" alt="image"
    src="https://github.com/user-attachments/assets/b45601ab-ed1c-4b82-b112-325f12bde197"
    />

    ### After

    ri

    ```
        #[](n)     |   <tt>n</tt>th captured substring.    |       +nil+.
    ```

    html

    <img width="489" height="217" alt="image"
    src="https://github.com/user-attachments/assets/1212c147-42a5-4f62-8667-a279ccff67a3"
    />

    https://github.com/ruby/strscan/commit/b3d56867fd

commit e0746cc443dfe948fa8d0eac5ecaa36e7eb6c972
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-03 05:51:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:14:51 +0900

    [ruby/prism] Consolidate macro definitions

    https://github.com/ruby/prism/commit/cc0ca08757

commit a1ea824b8550f214ecc501536eed3468cbfd11ae
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-03 05:44:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:14:51 +0900

    [ruby/prism] Remove PM_OPTIONAL_LOCATION_NOT_PROVIDED_VALUE macro

    https://github.com/ruby/prism/commit/1988615ce1

commit a55040cac5b91b2d197fd604251f60f4bff289e8
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-03 05:21:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:14:51 +0900

    [ruby/prism] Further specialize PM_NODE_INIT

    https://github.com/ruby/prism/commit/7ab6d9df47

commit 56ee55b162088a3b6d2e3a5fc9326b17fc65eac6
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-03 05:09:59 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:14:51 +0900

    [ruby/prism] Introduce PM_NODE_FLAGS macro

    https://github.com/ruby/prism/commit/a20afe1674

commit 68617fb62b943b9d2cb67f177a55b63b7508f504
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-03 05:05:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:14:50 +0900

    [ruby/prism] Specialize PM_NODE_INIT to reduce calls to location

    https://github.com/ruby/prism/commit/3e0b5c9eb7

commit 8d2f73d70a6f99335c2fc7ebb49fb9d95e431047
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-03 04:28:36 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 07:14:50 +0900

    [ruby/prism] Introduce PM_NODE_UPCAST macro for readability

    https://github.com/ruby/prism/commit/7eb169513a

commit 3aa674ad9923a4a362a29840fad8421a6be7131f
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-05 20:01:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 02:27:38 +0900

    [ruby/psych] Properly set the message of Exceptions on TruffleRuby

    * From https://github.com/truffleruby/truffleruby/commit/1f81db82d2969ff7c5de0dacdecb38252664f42c

    https://github.com/ruby/psych/commit/dbabe7aac6

commit d3907245d7928279fcffd1af2903d16b2dbb2d29
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-05 19:13:09 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 02:27:38 +0900

    [ruby/psych] Fix usage of rb_struct_initialize() to pass an Array of members values and not a Hash

    * rb_struct_initialize() does not accept a Hash, and it's very brittle
      to pass `[{...}]` and to rely on that C function using rb_keyword_given_p().
      It basically worked accidentally, by having **members in the caller of the caller.
      Such logic when Struct#initialize is defined in Ruby (as in TruffleRuby) is basically impossible to implement,
      because it's incorrectly treating positional arguments as keyword arguments.
    * rb_struct_initialize() is used in CRuby to set members of Data instances in marshal.c (there is no rb_data_initialize() yet).
      There, the code passes an Array of members values for Data (and for Struct which are not `keyword_init: true`):
      https://github.com/ruby/ruby/blob/48c7f349f68846e10d60ae77ad299a38ee014479/marshal.c#L2150-L2176
      So we should do the same in psych.
    * Rename to init_data since it's only used for Data.
    * See https://github.com/ruby/psych/pull/692#discussion_r2483947279.

    https://github.com/ruby/psych/commit/3550148378

commit 17bcd71e4218994bfb6c2d398fa784ccd74d2f2c
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-02 22:41:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 01:20:43 +0900

    [ruby/prism] Clean up test excludes

    Mostly not having to list version-specific excludes when testing against ripper/parse.y

    Also don't test new syntax additions against the parser gems. The version support
    for them may (or may not) be expanded but we shouldn't bother while the ruby version
    hasn't even released yet.
    (ruby_parser translation is not versioned, so let as is for now)

    I also removed excludes that have since been implemented by parse.y

    https://github.com/ruby/prism/commit/e5a0221c37

commit c06c2203ed14e67dc12486c815b246395ef711e1
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-02 18:54:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 01:20:43 +0900

    [ruby/prism] Fix the ripper translator to parse as the current ruby

    Otherwise, it uses the latest prism version

    https://github.com/ruby/prism/commit/86406f63aa

commit cc929bff7ddfeccf320c621a6ae0f106e76a52f0
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-12-02 23:45:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-03 00:59:25 +0900

    [ruby/json] Don't call to_json on the return value of as_json for Float::NAN

    https://github.com/ruby/json/commit/28c57df8f7

commit 9eafeaed67903bbf2f2dca5eb473c1bf774712f6
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-11-30 17:50:50 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-02 23:49:49 +0900

    Box: Free rb_classext_t struct for a box when the box is GCed

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15371

commit 84bc1f038a4df63ff09490c981753d7234a52ce4
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-11-30 17:36:17 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-02 23:49:49 +0900

    Box: Mark boxes when a class/module is originally defined in it.

    When a class/module defined by extension libraries in a box, checking
    types of instances of the class needs to access its data type (rb_data_type_t).
    So if a class still exists (not GCed), the box must exist too (to be marked).

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15371

commit 75f8a116c94f538ae18cf3c6921c3b0d2724dee7
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-11-30 17:33:05 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-02 23:49:49 +0900

    Box: Fix data type name

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15371

commit 03ed220cb0581d36606e13b1709d5ad133a45dc0
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-11-22 17:48:41 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-02 23:49:49 +0900

    Box: load_wrapping is not needed now

    Top level constants are defined on the Object class's constant table,
    and those constants can be referred as box::CONST_NAME from outside box.
    So load_wrapping() is not needed now.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15371

commit e515fa7ab1981df439a3a6b3635a0389f4216cce
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-26 21:28:44 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-02 18:35:16 +0900

    ZJIT: Improve documentation and make it easy to generate the types graph

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15330

commit 456ba321a84d34e76c8837ac96f47a11457480cb
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-12-01 12:16:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-02 17:25:17 +0900

    [ruby/rubygems] Make BUNDLE_LOCKFILE environment variable have precedence over lockfile method in Gemfile

    It would be simpler to do `options[:lockfile] ||= ENV["BUNDLE_LOCKFILE"]`,
    but that doesn't work as `options` is frozen.

    Fixes https://github.com/ruby/rubygems/pull/9117

    https://github.com/ruby/rubygems/commit/6e3603a0e9

commit 0e22108d60fbd0e338fb6e110ddd81a93b45b592
  Author:     Sam Westerman <sam@sampersand.me>
  AuthorDate: 2025-12-02 16:00:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-02 16:00:53 +0900

    [ruby/optparse] Remove `const_set` and instead use explicit assignments

    https://github.com/ruby/optparse/commit/6e2709a5fd

commit 7df97983be41e893afee6d0012c6dced55ff98f8
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-02 11:39:29 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-02 12:39:58 +0900

    [ruby/rubygems] Improve banner message for the default command.

    Co-authored-by: Benoit Daloze <eregontp@gmail.com>

    https://github.com/ruby/rubygems/commit/463488b439

    Co-authored-by: Patrik Ragnarsson <patrik@starkast.net>

commit e2d176556e36ae7911af3ff6163420a48b82af92
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-02 08:12:45 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    CI: Distclean mswin

    Use the given `make-command` instead of the hard-coded `make` command.

    TODO: Use it for `make up` as well, in the future.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit b563be302f635116e30e3d80812962650f5564ef
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-29 17:13:56 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Clean empty directories

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit 0be626e7551f9e9ed201b9c4a66aab5fcf3e6fbb
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-29 17:13:21 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Clean timestamp directory for platform

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit a9961701582d842bb5866d57d8e22cf4aa46eba8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-12 17:24:06 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Remove bundled gems directories

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit b17f6a2aae96bb0faf0d379dc54eda9878541f77
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 23:11:08 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Clean miniprelude

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit 0e222991bf11e28457819d42d751b517686c71e9
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 18:28:53 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Remove DLL files linked by `prepare-vcpkg`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit b2b674562db8e922fa6a6bd0469f20f4caf0954e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 18:26:52 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Support removing wildcards in middle of path

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit c4fb79caa72d667512d1ca7647ac0443b22a3d47
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 18:25:24 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Clean generated sources

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit ec80e92a4789533a2ae0be3aa3709c6d6ab229d2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 11:53:03 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Refine outputs

    - Suppress logos from sub makes.
    - Set the prompt for `for` command when `echo` is on.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit fa513886410a85c2229acfa558c5375e5fad278b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 01:14:23 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Append `-p` option to `RMDIRS`

    `rmdirs.bat` may require this option explicitly to remove parent
    directories, in the future.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit a6c5d290abaa232a60c21fa2a48ac0228de8270b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 01:06:34 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Clean prism

    - intermediate source files
    - timestamp files
    - build directories

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit 00d05dfca5584537d4581420c26ce0864d3eff96
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-10 21:19:36 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Remove extra suffix for sub-make

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit b0b8eb6a31fbe484319c9fd042433094e0e69c93
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-10 21:17:02 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Fix removing symlink

    Try `rd` first for symlink to a directory; `del` attemps to remove all
    files under the target directory, instead of the symlink itself.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit bb76e65f5696e936f72aa2ee0d17b5087f4a26ad
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-10 13:21:48 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Add `DLEXT` for clean-spec

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit 9cdee9db9b3bfc58f773912c072ce7ab78a7d724
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-10 11:55:09 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Fix rm.bat removing non existent file

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit 01fd348847a22cee75426373799ebc2b1b797209
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-12 22:42:06 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 09:55:01 +0900

    Win32: Fix @ in middle of commands

    `@` is not a command, and cannot be placed after `||`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12558

commit 07ea9a38097c088efd6c2872f2a563dbc69a544a
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-26 07:26:02 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-02 09:42:14 +0900

    ZJIT: Optimize GetIvar for non-T_OBJECT

    * All Invariant::SingleRactorMode PatchPoint are replaced by
      assume_single_ractor_mode() to fix https://github.com/Shopify/ruby/issues/875
      for SingleRactorMode patchpoints.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15327

commit 2dfb8149d58694cd578dbe2222640499ac021231
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-01-11 18:26:09 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-02 08:56:21 +0900

    Clean generated transcoders

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15364

commit d0bb505a04bcd6a3d86c01d7c402c1f6205e69b4
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-12-02 04:57:11 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Split Lea memory reads on x86_64

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit b9f1976f2334b4d9f55be5607de408eb7973c188
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 13:37:24 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Add HIR test for VM_OPT_NEWARRAY_SEND_PACK_BUFFER

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 985a4d977f1c1a5051c88b0c2f8af8913bd93008
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 13:30:05 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Open-code String#getbyte

    Don't call a C function.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 74e9f717200106be553e954e8ac354b54acf1c60
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 13:18:13 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Mark String#ascii_only? as leaf

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 6db83a00a4272eb1089d67da83e1cd9d4e10227b
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 12:44:53 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Specialize Integer#>>

    Same as Integer#>>. Also add more strict type checks for both Integer#>>
    and Integer#<<.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit a25196395e7502e4d6faad0856c697690d8a202e
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 12:44:15 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    Add BOP_GTGT

    This will help JITs (and maybe later the interpreter) optimize
    Integer#>>.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 8aed31103874524395912fb7ffaee88b5e59a9c3
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 12:24:45 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Specialize String#<< with Fixnum

    Append a codepoint.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 91432a6bad7c52859e2920e780d578adcf4ac3f3
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 12:19:15 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Add late pass to fold AnyToString

    This otherwise would miss annotations of C methods.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit fd7d17abde4943edaefac7840f7258c8283d1d8e
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 12:18:43 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Don't use GuardTypeNot

    Use actual receiver type. This gives us better method lookup.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 8ce78821cd8713d149ff27d9fbed38799e983349
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-25 12:18:16 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-12-02 08:19:26 +0900

    ZJIT: Mark Integer#to_s as returning StringExact

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15326

commit 4161c78a9d0c84f5afe6eb40b2cea6266cd59987
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-29 08:01:37 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-12-02 08:02:26 +0900

    Add remembered flag to heap dump

    This should be less common than than many of the other flags, so should
    not inflate the heap too much. This is desirable because reducing the
    number of remembered objects will improve minor GC speeds.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15347

commit e68fcf111b48a25ccf465e7acef13e4e145bcfb6
  Author:     Berkan Ünal <32255826+brkn@users.noreply.github.com>
  AuthorDate: 2025-12-02 07:02:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-02 07:02:40 +0900

    [ruby/strscan] [DOC] Fix broken link to helper methods
    (https://github.com/ruby/strscan/pull/179)

    ### Helper methods link is broken at master branch

    To reproduce
    1. go to [StringScanner
    docs](https://docs.ruby-lang.org/en/master/StringScanner.html)
    2. Click to link at line
       > See examples at **helper_methods**
    3. Resolved url gives 404:
    https://docs.ruby-lang.org/en/master/strscan/helper_methods_md.html

    ### Fix

    Currently link resolves as `href="doc/strscan/helper_methods_md.html"`
    Correct link should be resolved as `href="helper_methods_md.html"`

    https://github.com/ruby/strscan/commit/adb8678aa6

commit a8b49ab48703dfb8862ca28a443da0e764d692c6
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-02 06:51:29 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-02 06:51:29 +0900

    Test CC invalidation for singleton classes of objects (#15360)

    I made a recent change where all the tests passed but it turns out it
    was still wrong. We didn't have any tests for CC invalidation on
    singletons of objects that aren't classes or modules.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit f92001344d0595bb6ef3a9576853edf1fa7588ca
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-12-02 03:02:35 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-02 03:02:35 +0900

    ZJIT: Fix erroneous version number for Iongraph (#15357)

    As per
    https://github.com/mozilla-spidermonkey/iongraph/blob/8d5e531305320216f86a24bfc9bc136a3627e832/src/iongraph.ts#L147,
    correct version number for the web-based tool is 1, rather than 2.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 5f92d6da1e48ce62205858cdcc7e60108e585f5f
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-12-02 03:01:12 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-02 03:01:12 +0900

    ZJIT: Standardize method dispatch insns' `recv` field (#15334)

    ZJIT: Standardize C call related insn fields

    - Add `recv` field to `CCall` and `CCallWithFrame` so now all method dispatch
      related instructions have `recv` field, separate from `args` field.
      This ensures consistent pointer arithmetic when generating code for these
      instructions.
    - Standardize `recv` field's display position in send related instructions.

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit e02eda194f1d1ff6998b5eb462dd2a2afc54281c
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-12-02 02:55:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-02 02:55:39 +0900

    Speedup RBASIC_FIELDS_COUNT (#15273)

    We know the argument is not a class, module or special const, so we can
    skip these checks.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit c58970b57a91a10eb75f933258643d0393ce0ba8
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-12-02 02:14:08 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-02 02:14:08 +0900

    ZJIT: Optimize variadic cfunc `Send` calls into `CCallVariadic` (#14898)

    ZJIT: Optimize variadic cfunc Send calls into CCallVariadic

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit 8dc5822b007937f75eb0b156c9d9dcc7b16f9de8
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-01 23:22:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-01 23:46:36 +0900

    [ruby/prism] PM_NODE_INIT

    Hide the initialization of the base node inside the node
    initializer lists by a macro. As such, consistently enforce flags
    are set properly.

    https://github.com/ruby/prism/commit/c7b3d66d84

commit bc9ea585bee075480b4f12f84c8ab99315766595
  Author:     Samuel Williams <samuel.williams@shopify.com>
  AuthorDate: 2025-12-01 13:49:31 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-01 13:49:31 +0900

    Add `rb_ec_close` function to manage execution context cleanup. (#15253)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 8eea9a502031e866f210accc7d02347fc55f65c9
  Author:     Samuel Williams <samuel.williams@shopify.com>
  AuthorDate: 2025-12-01 13:19:42 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-01 13:19:42 +0900

    Nullify scheduler during `terminate_atfork_i`. (#15354)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 4c56001d27c4b2431fee65e6e9426319c475c45d
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-01 10:45:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-01 11:35:13 +0900

    [ruby/prism] Fix up newlines in newline-delimited-literals

    When you have a %-literal that is delimited by newlines, and you
    are also interpolating a heredoc into that literal, then both
    concepts will attempt to add the same newline to the newline list.

    https://github.com/ruby/prism/commit/c831abb888

commit bcdad7f2867c5955ce06cd6fabd3b3c06361eb47
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-12-01 10:25:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-01 10:44:25 +0900

    [ruby/prism] Properly remove references

    https://github.com/ruby/prism/commit/17b246fd6a

commit f92ff9a86b4de5cd6e368be62077741aa40abc64
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-01 07:15:36 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-01 07:15:36 +0900

    Remove an excess semicolon in a macro

commit a0cd81e005d185be37b3a0323e4ee61b7b4360a6
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-30 21:07:33 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-30 21:39:26 +0900

    Remove stale check

    Any objects with `call` method can be accepted as trap handlers, and
    the check for `Proc` type is useless since [ruby/ruby@29f5911cf545](https://github.com/ruby/ruby/commit/29f5911cf545).

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15353

commit 9aa9cf8ea02f9860d735103b0e3ccfde62c68f95
  Author:     Daisuke Fujimura (fd0) <booleanlabel@gmail.com>
  AuthorDate: 2025-11-30 12:01:44 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-11-30 21:03:00 +0900

    Fix switch fall-through in copy_ext_file_error

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15350

commit d7cfd275f881bbd29d95dfdba585f055dd89ba44
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-30 14:31:34 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-30 14:31:34 +0900

    Set DESTDIR if relative loading

    When relative loading, `prefix` makes no sense actually.  Use the
    given (or default) path as `DESTDIR` instead.

    This change affects only when the relative loading is enabled and the
    destdir is not given, and does not change the final installation path,
    but makes the configuration options simpler a little.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15351

commit 806e554cc027b71cf0970fd4eb8f9ee5f1ccf128
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-30 14:14:03 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-30 14:14:03 +0900

    Compare with the upper bound of the loop variable

    Fix sign-compare warning

commit 3bd9583a52e9c3f55adb2097a84c4adb09cf74a3
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 05:58:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 13:24:06 +0900

    [ruby/prism] Update unicode tables to match that of CRuby

    The unicode version has been updated upstream, which means new
    codepoints mapped to alpha/alnum/isupper flags. We need to update
    our tables to match.

    I'm purposefully not adding a version check here, since that is
    such a large amount of code. It's possible that we could include
    different tables depending on a macro (like UNICODE_VERSION) or
    something to that effect, but it's such a minimal impact on the
    running of the actual parser that I don't think it's necessary.

    https://github.com/ruby/prism/commit/78925fe5b6

commit c4b5fa419ee266c973be9b676caa2cfad0400d58
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 05:25:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 11:08:52 +0900

    [ruby/prism] Ensure implicit parameter nodes are destroyed.

    When we are about to destroy a node because of a syntax error, we
    need to check if it is potentially containing an implicit
    parameter in its subtree.

    https://github.com/ruby/prism/commit/1531433e02

commit b1314f159ec501f4fdc1c055293799b33c9ad134
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 05:36:53 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 11:08:41 +0900

    [ruby/prism] Fully destroy call operator write arguments

    If we are about to delete a call operator write argument, it needs
    to be removed from the list of block exits as well.

    https://github.com/ruby/prism/commit/ebc91c2e39

commit e3bc1852b3a7bcacf3e18d1644fbea7839abe019
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 05:51:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 06:00:53 +0900

    [ruby/prism] Revert "Fix invalid Ruby code example in ClassNode comment"

    https://github.com/ruby/prism/commit/b960079559

commit 748dc9ac8d68b7979936f171179c475c7f174953
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 04:31:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 04:48:37 +0900

    [ruby/prism] Fix out-of-bounds read in parser_lex_magic_comment

    https://github.com/ruby/prism/commit/e24e701f3a

    Co-authored-by: Steven Johnstone <steven.james.johnstone@gmail.com>

commit 7c2eb946e04940901ee1957c3fb43897c661568e
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 04:28:36 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 04:48:30 +0900

    [ruby/prism] Fix label interpolated string

    https://github.com/ruby/prism/commit/e3e2b1ed04

commit f0f2a45f2d46fa4a0323ba5f29fba895b9e78f4b
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 04:20:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 04:48:08 +0900

    [ruby/prism] Fix out-of-bounds read after utf-8 BOM

    https://github.com/ruby/prism/commit/198080c106

    Co-authored-by: Steven Johnstone <steven.james.johnstone@gmail.com>

commit f2a6cb2dc88ca12938b45f35bc6e64d72060a959
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-30 04:14:48 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 04:47:45 +0900

    [ruby/prism] Handle invalid string pattern key

    When a pattern match is using a string as a hash pattern key and is
    using it incorrectly, we were previously assuming it was a symbol.
    In the case of an error, that's not the case. So we need to add a
    missing node in this case.

    https://github.com/ruby/prism/commit/f0b06d6269

commit 48a73303e45b1dbaa3422e14e35c7834db98be4d
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-27 00:13:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 04:01:11 +0900

    [ruby/prism] Optimize `Prism::Source#find_line`

    This is more concise and ruby does a better job performance-wise.

    This used to be `bsearch_index` already but https://github.com/ruby/prism/commit/6d8358c08395438d5924777c1fc3001a5ebf0aa3 changed it.
    https://github.com/ruby/prism/pull/1733#discussion_r1373702087 said:
    > Yeah the edge case was that the value matched an element exactly

    But surely there would be a test to show this behaviour?

    Gets called as part of pretty-printing nodes.
    Further reduces the time for `SnapshotsTest` by ~16% for me.

    https://github.com/ruby/prism/commit/f448e2b995

commit 8a0ae3a71a8b12a5e5929a565ba98fdf7c16233b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-30 03:42:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 03:53:59 +0900

    [ruby/tempfile] [DOC] Monofont some text in Tempfile.create

    https://github.com/ruby/tempfile/commit/7fa7436baa

commit d9093eab625c7a7029888e538c5474430fb1c110
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-30 03:40:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 03:53:59 +0900

    [ruby/tempfile] [DOC] Fix monofont for Tempfile.create

    https://github.com/ruby/tempfile/commit/96361e9e42

commit bae06ce22c5ab6a4a3085300274f258d55858e90
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-11-30 01:47:26 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 02:05:19 +0900

    [ruby/openssl] Remove dummy declarations for mOSSL and eOSSLError

    These declarations were added to every source file because older
    versions of RDoc did not resolve ancestor tree across files. Since
    RDoc 6.9.0 supports this, this workaround is no longer needed.

        https://redirect.github.com/ruby/rdoc/pull/1217

    https://github.com/ruby/openssl/commit/6491ce63be

commit c8bfbd5700bc00ab06e715235818c099a0063436
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-11-30 01:29:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-30 01:41:54 +0900

    [ruby/openssl] ts: fix docs for attrs on OpenSSL::Timestamp::Factory

    Move attribute documentation out of the class-level section and into
    the appropriate sections so that they attach correctly.

    https://github.com/ruby/openssl/commit/61410acc50

commit e13ad22274ff2432f705536832f03f360a5b4af5
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-29 10:28:42 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-30 00:15:57 +0900

    Re-enable clang-18

    The issue might have been fixed in 8bf333a.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15348

commit 82b91ec7e55cb5ef4acd61213843614542bea3b3
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-29 10:06:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 11:06:53 +0900

    [ruby/rubygems] Also use String#include? for RUBY_PLATFORM

    https://github.com/ruby/rubygems/commit/5fd95f38d3

commit 0f80d0ee05a2cb9daad426a7aa9aad7c4f2c3401
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-29 10:39:24 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-29 10:43:26 +0900

    [DOC] Fix backticks in InstructionSequence docs

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15349

commit 005fba0713947a8241b7560ec4a6f052f49067c0
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-29 10:27:35 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-29 10:27:35 +0900

    [DOC] Tweaks for Module#<=>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15298

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 688350dacc4bab436043bd2435fc64633a1408ce
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-25 14:11:52 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-29 10:24:13 +0900

    [DOC] Avoid term 'derived'; use 'subclass'

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15317

commit 34290048be4a480437bbfff3dc5d8bf93e495d9b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-29 09:05:14 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-29 10:02:25 +0900

    Fixup with mswin and nmake build for -j flag

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15346

commit a9d2a46d64ead4dae8491c2f93b9e86416006fd4
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-28 19:23:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 08:50:00 +0900

    [ruby/rubygems] Add informational message when default_cli_command is unset.

    https://github.com/ruby/rubygems/commit/9e44b5ebc4

commit 69293f52550032cbda8d92188407b8700f4c3bb1
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-27 04:03:13 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 08:50:00 +0900

    [ruby/rubygems] Print help summary when the default command fail

    As mentioned in https://github.com/ruby/rubygems/issues/9124,
    the intent for changing the default command was to be more welcoming.

    I think we can acheive that by attempting to install, but to print
    that same help message if there is no Gemfile.

    That should address both concerns.

    https://github.com/ruby/rubygems/commit/f3f505c02a

commit 7dae2a1f488afc4133dfbd6ea243aaeb71107f71
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-27 02:58:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 08:49:59 +0900

    [ruby/rubygems] Restore `install` as default command

    Fix: https://github.com/ruby/rubygems/issues/9124

    This behavior is a deeply entrenched convention and changing it
    will annoy lots of developers with unclear gains.

    https://github.com/ruby/rubygems/commit/628e0ede46

commit f18bedaf96d950a69ae18df9a7eeea6754224c20
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-29 07:18:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 08:43:24 +0900

    [ruby/rubygems] Use String#include? with suggested by Performance/StringInclude cop

    https://github.com/ruby/rubygems/commit/fdd3419144

commit bb2e4d58cce135d3609dba1ee17ed614522a88bf
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-28 16:57:15 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 07:50:49 +0900

    [ruby/rubygems] Fixed checksums generation issue when no source is specified

    https://github.com/ruby/rubygems/commit/bb4d791cb4

commit 7bd80e7e3e3dbb724616c038e6e0944128d6f905
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-29 07:06:24 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-29 07:06:24 +0900

    nmake didn't support -j flag

commit 413d15a3440abf570fc4bff24fe4b5ee8b7880a5
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-28 10:08:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 06:01:44 +0900

    [ruby/rubygems] Add `MAKEFLAGS=-j` by default before compiling:

    - Depending on the native extension, it can greatly reduce compilation
      time when executing recipes simultaneously.

      For example on Prism:

      ```
      # Before

      time gem install prism
      Building native extensions. This could take a while...
      Successfully installed prism-1.6.0
      1 gem installed

      gem install prism  3.61s user 0.80s system 95% cpu 4.595 total
      ```

      ```
      # After

      time MAKEFLAGS="-j" gem install prism
      Building native extensions. This could take a while...
      Successfully installed prism-1.6.0
      1 gem installed

      MAKEFLAGS="-j" gem install prism  4.47s user 1.27s system 246% cpu 2.330 total
      ```

      I don't think adding `-j` as a default is harmful, but I'm admitedly
      not very knowledgable when it comes to compiler.

    https://github.com/ruby/rubygems/commit/61340081c6

    Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>

commit 8c70def42c4596a02d45464d0d694d0c234fb1d7
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-28 15:57:48 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-29 02:50:38 +0900

    Use ALWAYS_INLINE for vm_getinstancevariable

    Recently rb_vm_getinstancevariable was introduced exposing this method
    to ZJIT. On clang specifically this ended up causing the compiler not to
    inline into vm_exec_core and cause a significant performance regression
    in optcarrot for the interpreter.

    Co-authored-by: Luke Gruber <luke.gru@gmail.com>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15341

commit 191bfcb9c505ba3f5771f7ac67d6131aeb6b6837
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-29 00:17:06 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-11-29 02:34:59 +0900

    Define Kernel#instance_variables_to_inspect

    [Bug #21718]

    Otherwise objects that don't define it, but define a fairly liberal
    `method_missing` method will run into errors that are hard to understand:

    ```ruby
    class Foo
      def method_missing(name, ...)
        name
      end
    end

    p Foo.new.inspect
    ```

    ```
    'Kernel#inspect': wrong argument type Symbol (expected Array) (TypeError)
            from ../test.rb:7:in '<main>'
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15345

commit 8eaefd93951143661b1f515a8c9cda12263d2b56
  Author:     qraqras <q100rrraaa@gmail.com>
  AuthorDate: 2025-11-28 09:58:38 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-29 00:38:40 +0900

    [ruby/prism] Fix invalid Ruby code example in ClassNode comment

    https://github.com/ruby/prism/commit/5b7456c8f6

commit dcb9e17f467683b32f429736cf7598b1ce89cdc5
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-11-28 19:49:46 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-28 19:49:46 +0900

    [DOC] Update bundled gems list at 5a82880ea98617ab6894cd771ea3c3

commit 5a82880ea98617ab6894cd771ea3c3899f9521bc
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-11-28 19:48:53 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-28 19:48:53 +0900

    Bump RDoc version to 6.16.1 (#15344)

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit 404e6aa9b5e56b094b50f54c00487e5a7bfdf142
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-28 11:14:07 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-28 11:23:56 +0900

    [DOC] Fix typo in rb_debug_inspector_current_depth

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15340

commit 5e2e45fc242b79e844754691ad106c463ebb6251
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-27 17:49:28 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-28 09:04:16 +0900

    Fix for modgc

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15338

commit 9929dc4440a76b57f362ad676a9b8b64c309a6d8
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-20 19:42:42 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-28 09:04:16 +0900

    Mask off unused VWA bits

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15338

commit 5b1ed1ef2076b3a89ba28836eee6072cb16124dc
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-11-28 08:31:32 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-28 08:31:32 +0900

    [DOC] Remove unneeded filename from rdoc-ref links (#15339)

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit 4cd6661e1853930c8002174c4ccd14f927fcd33b
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-11-28 05:12:24 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-28 05:12:24 +0900

    Reorganize page documentations (#15154)

    Re-organize page docs

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit 2f192c73cccdfd81e4ac2206feadc48b2757c19c
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-25 01:41:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-27 22:01:57 +0900

    [ruby/json] Respect Coder depth when generating

    https://github.com/ruby/json/commit/9c36681b17

commit 78aa8d5b1d62a04d7cb5492f653266c99f4c55a2
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-25 01:36:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-27 22:01:56 +0900

    [ruby/json] Test current behavior regarding depth for Coder

    Coder currently ignores its depth and always resets it to 0 when
    generating a new JSON document.

    https://github.com/ruby/json/commit/cca1f38316

commit 68a7edaa81ccf09871227bf3e06e18cd19eb4a3e
  Author:     Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
  AuthorDate: 2025-11-27 21:05:45 +0900
  Commit:     Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
  CommitDate: 2025-11-27 21:05:45 +0900

    [DOC] Fix a link in NEWS.md

commit aebd391f9c31151a963b407a0429a1d57bd59c28
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-26 13:40:28 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-27 18:47:59 +0900

    Clean prism directory

commit 3ebb5b9c7811c3f551f61111c8495f859ad1861c
  Author:     S-H-GAMELINKS <gamelinks007@gmail.com>
  AuthorDate: 2025-07-12 22:23:26 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-27 16:30:16 +0900

    Remove unneeded trailing semicolons

  Notes:
    Merged: https://github.com/ruby/ruby/pull/13865

commit 4917f2335d60f5ff48843542939e3227d8c9d9b8
  Author:     Tommaso Barbato <tommasobarbato@gmail.com>
  AuthorDate: 2025-11-12 18:25:03 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-27 16:06:25 +0900

    Store snapshot info date as Date instead of String

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15147

commit 0f45d0c4847aded77c3aa42ae8b4da8299fa0a12
  Author:     Kouhei Yanagita <yanagi@shakenbu.org>
  AuthorDate: 2024-11-06 10:47:15 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-27 16:00:35 +0900

    Update man and help: -d option set $VERBOSE to true

  Notes:
    Merged: https://github.com/ruby/ruby/pull/12006

commit a2c12d3ffeea99c957ee317fc613c7e0897a04f9
  Author:     Sebastian Dufner <13749199+der-scheme@users.noreply.github.com>
  AuthorDate: 2025-11-10 23:39:45 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-27 15:48:10 +0900

    Documentation: Added the `|`(pipe)/OR operator to syntax/methods.

    It was not documented as an operator that can be overriden, which is confusing because it makes you think it can't be.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15126

commit 3e926cd5dd2dfb2176b7d65f802519586813284c
  Author:     Alex Clink <alexclink@gmail.com>
  AuthorDate: 2025-11-14 23:51:22 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-27 15:44:09 +0900

    NEWS.md: fix wording about Ractor::Port

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15186

commit 10522ca19739978911a490b0f948865d42e560f8
  Author:     NAITOH Jun <naitoh@gmail.com>
  AuthorDate: 2025-11-27 14:07:54 +0900
  Commit:     Sutou Kouhei <kou@clear-code.com>
  CommitDate: 2025-11-27 15:00:57 +0900

    [DOC] Include strscan/lib

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15337

commit 2e770cdf773d79327cfdeb8178a1cb9b340f4560
  Author:     TOMITA Masahiro <tommy@tmtm.org>
  AuthorDate: 2025-11-27 11:10:43 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-27 11:10:43 +0900

    Fix argument handling in `IO::Buffer#each_byte` (#15309)

    The method incorrectly ignored its first argument and treated the second argument as offset and the third as count.
    This change makes the first argument be treated as offset and the second as count.

    Also fix incorrect block parameter in comments.

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit a60cd8787cb65a6077f609652f6042143d81b227
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-27 07:37:30 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-27 09:13:38 +0900

    Error if deleting a nonexistent obj from geniv

    I don't think this ever happened, but we should raise the same error
    we'd raise on lookup

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15336

commit 5bef7577b3b336a709935dd39e69abcf397c4684
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-27 07:02:17 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-27 09:13:38 +0900

    Ensure we don't dereference fields_obj as Qundef

    We rely on the GC to clear this when the GC is run on another EC than
    the cache.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15336

commit 970b18e9a94ff3e6496fb7324cff0798ffec6f24
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-27 06:33:10 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-27 09:13:38 +0900

    Clear fields obj when removing

    This fixes a bug where the gen_fields_cache could become invalid when
    the last ivar was removed. Also adds more assertions.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15336

commit db94a79da432bcdb9d48517733f11ccf03c7cd5d
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-27 08:36:00 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-27 08:36:00 +0900

    ZJIT: Count fallback reasons for set/get/definedivar (#15324)

    lobsters:

    ```
    Top-4 setivar fallback reasons (100.0% of total 7,789,008):
      shape_transition: 6,074,085 (78.0%)
       not_monomorphic: 1,484,013 (19.1%)
          not_t_object:   172,629 ( 2.2%)
           too_complex:    58,281 ( 0.7%)
    Top-3 getivar fallback reasons (100.0% of total 9,348,832):
         not_t_object: 4,658,833 (49.8%)
      not_monomorphic: 4,542,316 (48.6%)
          too_complex:   147,683 ( 1.6%)
    Top-3 definedivar fallback reasons (100.0% of total 366,383):
      not_monomorphic: 361,389 (98.6%)
          too_complex:   3,062 ( 0.8%)
         not_t_object:   1,932 ( 0.5%)
    ```

    railsbench:

    ```
    Top-3 setivar fallback reasons (100.0% of total 15,119,057):
      shape_transition: 13,760,763 (91.0%)
       not_monomorphic:    982,368 ( 6.5%)
          not_t_object:    375,926 ( 2.5%)
    Top-2 getivar fallback reasons (100.0% of total 14,438,747):
         not_t_object: 7,643,870 (52.9%)
      not_monomorphic: 6,794,877 (47.1%)
    Top-2 definedivar fallback reasons (100.0% of total 209,613):
      not_monomorphic: 209,526 (100.0%)
         not_t_object:      87 ( 0.0%)
    ```

    shipit:

    ```
    Top-3 setivar fallback reasons (100.0% of total 14,516,254):
      shape_transition: 8,613,512 (59.3%)
       not_monomorphic: 5,761,398 (39.7%)
          not_t_object:   141,344 ( 1.0%)
    Top-2 getivar fallback reasons (100.0% of total 21,016,444):
      not_monomorphic: 11,313,482 (53.8%)
         not_t_object:  9,702,962 (46.2%)
    Top-2 definedivar fallback reasons (100.0% of total 290,382):
      not_monomorphic: 287,755 (99.1%)
         not_t_object:   2,627 ( 0.9%)
    ```

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit bee02c41bc15780a45f47986ef638e17ca323ec3
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-27 07:14:55 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-27 07:14:55 +0900

    Fix a ractor barrier issue during VM cleanup. (#15091)

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 1660b8145c30f53771671dec343fa7025a953fb5
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-27 06:23:34 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-27 06:23:34 +0900

    Eliminate redundant work and branching when marking T_OBJECT (#15274)

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 5f55c9c8fb8f401537e7121171747196e66c3ba0
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-26 11:29:02 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-27 05:56:27 +0900

    YJIT: Abort expandarray optimization if method_missing is defined

    Fixes: [Bug #21707]
    [AW: rewrote comments]
    Co-authored-by: Alan Wu <alanwu@ruby-lang.org>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15325

commit c42c6c27c37c8336b219678f858dabd17442737d
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-11-27 03:55:31 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-27 05:37:35 +0900

    ZJIT: Remove dead unnecessary_transmutes allow

    ```
    warning: unknown lint: `unnecessary_transmutes`
       --> zjit/src/cruby.rs:107:9
        |
    107 | #[allow(unnecessary_transmutes)] // https://github.com/rust-lang/rust-bindgen/issues/2807
        |         ^^^^^^^^^^^^^^^^^^^^^^
        |
        = note: `#[warn(unknown_lints)]` on by default
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15332

commit 67a14e94c6d3f5c30221da2659cb2e5604ce5c6f
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-20 18:14:35 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-27 03:40:56 +0900

    Set age bitmap outside of adding to freelist

    This allows us to do less work when allocating a fresh page.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15328

commit 795e290ead63bdcc79e35d569759e07d594267ab
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-08-01 01:10:32 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-27 03:40:56 +0900

    Avoid extra set of age bit flags

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15328

commit e057ff333a3b2964e52c8a12485374efa2464762
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-27 02:06:58 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-11-27 02:06:58 +0900

    [Doc] Fix duplicated entry in GC.stat documentation

commit ab3b79ea3db7779a9ee9eb6e39226d23b50fd012
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-22 22:57:30 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 23:47:27 +0900

    [ruby/json] Don't copy JSON_Generator_State in generate_new

    Now that the state isn't mutated in generate_new, we no longer need to
    copy the struct, we can just use it.

    https://github.com/ruby/json/commit/d7964f8892

commit 98a9667736f56336c920770095f9c367add2257b
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-22 21:59:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 23:47:27 +0900

    [ruby/json] Don't write depth to JSON_Generator_State in some cases

    For `JSON.generate` and `JSON::State#generate_new`, don't copy
    generate_json_data::depth to JSON_Generator_State::depth.

    In `JSON.generate`, the JSON_Generator_State is on the stack and
    discarded anyway. In `JSON::State#generate_new`, we copy the struct to
    avoid mutating the original one.

    https://github.com/ruby/json/commit/873b29ea34

commit 4b8ec8c9fc79859456661381e3e138ecc3e8c298
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-22 20:30:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 23:47:27 +0900

    [ruby/json] Add depth to struct generate_json_data

    Instead of incrementing JSON_Generator_State::depth, we now increment
    generate_json_data::depth, and only copied at the end.

    https://github.com/ruby/json/commit/5abd434907

commit adc0521b22968c9f580ebb5b4d5aa674bd906cd3
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-26 19:03:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 23:47:27 +0900

    [ruby/json] Test to_json using State#depth

    https://github.com/ruby/json/commit/ac0a980668

commit dd6a4ea2b9cf6f3ab1ea01e044f3d789fb6d5450
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-24 23:40:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 23:47:27 +0900

    [ruby/json] Test depth

    https://github.com/ruby/json/commit/d02e40324a

commit fb642b78cb89dd26ade620bda16ca78b570a907e
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-23 19:36:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 23:47:27 +0900

    [ruby/json] Test that depth of unfrozen State does not change

    https://github.com/ruby/json/commit/9d32cf4618

commit 38022961ae399015c542c409948aa4885e8e56e0
  Author:     Sam Westerman <sam@sampersand.me>
  AuthorDate: 2025-11-26 11:26:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 19:40:38 +0900

    [ruby/optparse] Remove unneeded `public`

    Removed public visibility from the candidate method.

    https://github.com/ruby/optparse/commit/9a784a89a2

commit 6ace0251ef47e669994adf268cbf4362c292bab0
  Author:     Sam Westerman <sam@sampersand.me>
  AuthorDate: 2025-11-26 10:50:49 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 19:40:38 +0900

    [ruby/optparse] Put `private` before method declarations

    https://github.com/ruby/optparse/commit/5478354d4f

commit c85eb2d0d05d2175018b3e0e544f1d87da029ee7
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-26 18:40:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 18:55:51 +0900

    [ruby/timeout] Revert "Suppress warnings in two tests"

    This reverts commit https://github.com/ruby/timeout/commit/983cbf636a17, that is
    fixed by test-unit 3.7.3.

    https://github.com/ruby/timeout/commit/095207f270

commit ecdeb90fe94af86c6d84fe343c1f95b7d801367a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-26 13:39:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 16:01:41 +0900

    [ruby/rubygems] Bump up to 4.0.0.beta2

    https://github.com/ruby/rubygems/commit/b8529f48bf

commit 525ee3ab260039d71bc210e442686fdfc35262ee
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-26 15:45:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 15:50:54 +0900

    [ruby/cgi] Fix mixed declarations and code

    Use C90 syntax only, as far as supporting ruby 2.6 or earlier.

    https://github.com/ruby/cgi/commit/886c82982a

commit 43ed35de6c1759feef57dbad0a2fad045ee2751f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-26 15:33:56 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 15:41:42 +0900

    [ruby/cgi] Skip unless `CGI::EscapeExt` methods are implemented

    https://github.com/ruby/cgi/commit/7b5a13952b

commit 72eb929ec1cafa9a4439520b5ba75ac4e5ef1a82
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-26 11:50:24 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-26 11:50:24 +0900

    [DOC] Exclude the word Box from RDoc's autolinking

commit 724e94a09c616fb71edd992e274e73ee14bee896
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-26 03:10:31 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-26 11:26:08 +0900

    ZJIT: CI: Run `btest` with call-threshold=2

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15323

commit 0b0c2cc4cbed72e952233953f90bc2dbdc77c11b
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-11-26 11:08:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 11:08:43 +0900

    Update bundled gems list as of 2025-11-25

commit 6354afa64a5c59de50f064a7827cbd15d29dc874
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-11-26 10:23:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-26 10:23:33 +0900

    Update bundled gems list as of 2025-11-26

commit 1e6079dcaff8853d4b36cda9e9bb751139b27375
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2025-11-26 10:22:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-26 10:22:39 +0900

    [DOC] Use Aliki as the documentation website theme (#15319)

    Use Aliki as the documentation website theme

  Notes:
    Merged-By: st0012 <stan001212@gmail.com>

commit e84b91a292f3cd94fdf5f2ef548bf2377b1cf537
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-11-26 00:36:55 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-11-26 10:10:47 +0900

    Box: mark/move Box object referred via ENV/rb_env_t

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15321

commit 0654bcd4f809e97bca4a099fa78db9990fa5a4ae
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-11-26 00:21:40 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-11-26 10:10:47 +0900

    Box: Add a test to drop the reference to a box

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15321

commit 8bf333a199b5c099c2e3d3efeb2ba06f265db324
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-25 12:32:07 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-26 07:19:30 +0900

    Fix live object count for multi-Ractor forking

    Since we do not run a Ractor barrier before forking, it's possible that
    another other Ractor is halfway through allocating an object during forking.
    This may lead to allocated_objects_count being off by one.

    For example, the following script reproduces the bug:

        100.times do |i|
          Ractor.new(i) do |j|
            10000.times do |i|
              "#{j}-#{i}"
            end
            Ractor.receive
          end
          pid = fork { GC.verify_internal_consistency }
          _, status = Process.waitpid2 pid
          raise unless status.success?
        end

    We need to run with `taskset -c 1` to force it to use a single CPU core
    to more consistenly reproduce the bug:

        heap_pages_final_slots: 1, total_freed_objects: 16628
        test.rb:8: [BUG] inconsistent live slot number: expect 19589, but 19588.
        ruby 4.0.0dev (2025-11-25T03:06:55Z master 55892f5994) +PRISM [x86_64-linux]

        -- Control frame information -----------------------------------------------
        c:0007 p:---- s:0029 e:000028 l:y b:---- CFUNC  :verify_internal_consistency
        c:0006 p:0004 s:0025 e:000024 l:n b:---- BLOCK  test.rb:8 [FINISH]
        c:0005 p:---- s:0022 e:000021 l:y b:---- CFUNC  :fork
        c:0004 p:0012 s:0018 E:0014c0 l:n b:---- BLOCK  test.rb:8
        c:0003 p:0024 s:0011 e:000010 l:y b:0001 METHOD <internal:numeric>:257
        c:0002 p:0005 s:0006 E:001730 l:n b:---- EVAL   test.rb:1 [FINISH]
        c:0001 p:0000 s:0003 E:001d20 l:y b:---- DUMMY  [FINISH]

        -- Ruby level backtrace information ----------------------------------------
        test.rb:1:in '<main>'
        <internal:numeric>:257:in 'times'
        test.rb:8:in 'block in <main>'
        test.rb:8:in 'fork'
        test.rb:8:in 'block (2 levels) in <main>'
        test.rb:8:in 'verify_internal_consistency'

        -- Threading information ---------------------------------------------------
        Total ractor count: 1
        Ruby thread count for this ractor: 1

        -- C level backtrace information -------------------------------------------
        ruby(rb_print_backtrace+0x14) [0x61b67ac48b60] vm_dump.c:1105
        ruby(rb_vm_bugreport) vm_dump.c:1450
        ruby(rb_bug_without_die_internal+0x5f) [0x61b67a818a28] error.c:1098
        ruby(rb_bug) error.c:1116
        ruby(gc_verify_internal_consistency_+0xbdd) [0x61b67a83d8ed] gc/default/default.c:5186
        ruby(gc_verify_internal_consistency+0x2d) [0x61b67a83d960] gc/default/default.c:5241
        ruby(rb_gc_verify_internal_consistency) gc/default/default.c:8950
        ruby(gc_verify_internal_consistency_m) gc/default/default.c:8966
        ruby(vm_call_cfunc_with_frame_+0x10d) [0x61b67a9e50fd] vm_insnhelper.c:3902
        ruby(vm_sendish+0x111) [0x61b67a9eeaf1] vm_insnhelper.c:6124
        ruby(vm_exec_core+0x84) [0x61b67aa07434] insns.def:903
        ruby(vm_exec_loop+0xa) [0x61b67a9f8155] vm.c:2811
        ruby(rb_vm_exec) vm.c:2787
        ruby(vm_yield_with_cref+0x90) [0x61b67a9fd2ea] vm.c:1865
        ruby(vm_yield) vm.c:1873
        ruby(rb_yield) vm_eval.c:1362
        ruby(rb_protect+0xef) [0x61b67a81fe6f] eval.c:1154
        ruby(rb_f_fork+0x16) [0x61b67a8e98ab] process.c:4293
        ruby(rb_f_fork) process.c:4284

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15314

commit 4263f1d718df65bdf465552029a71b1ea9747067
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-25 14:07:08 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-26 06:48:35 +0900

    Store fiber serial as Ractor-local

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15318

commit 0eb53053f00458b5b32bb66f63cb7c4c5f402ec8
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-26 03:50:55 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-26 03:50:55 +0900

    ZJIT: Specialize setinstancevariable when ivar is already in shape (#15290)

    Don't support shape transitions for now.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit a36ebb18a6d4c4726915b6d7c16cfdbf4e5d417b
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-18 04:01:12 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-11-26 00:40:31 +0900

    vm_cc_new: don't assume `cme` is present.

    [Bug #21694]

    `vm_search_super_method` explictly calls `vm_cc_new` with `cme=NULL`
    when there is no super class.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15221

commit e920ee32894dcd2ab0f97ff6f45c29d65024da0c
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-23 13:31:14 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-25 17:09:52 +0900

    [ruby/rubygems] Support bundle install --lockfile option

    This allows for specifying the lockfile to read and write. It mirrors
    the --gemfile option, and has higher priority than the lockfile
    method in the Gemfile. It also mirrors the bundle lock --lockfile
    option.

    When the --lockfile option is used, it is applied twice. First, before
    the Gemfile is read, to specify the lockfile to operate on, and again
    after the Gemfile is read, so that if the Gemfile has a lockfile
    method that overrides the defintion's lockfile, the --lockfile option
    still has higher precedence.

    https://github.com/ruby/rubygems/commit/17acdd4a89

commit ec05bc39a3e8340aa3dcfc5f6f9ed791af232e78
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-25 12:13:47 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-25 13:47:45 +0900

    Fix the fallback using mutex

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15315

commit 2957ba7079c58eb18eb3d7b6b5392fa4aa88a845
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-25 12:12:55 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-25 13:47:45 +0900

    Try libatomic only if necessary

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15315

commit bbf4bde75e4c8d2eacc40fc5e544ee73b20cf586
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-25 11:59:50 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-25 13:47:45 +0900

    Reapply "Fix stdatomic case in `rbimpl_atomic_u64_fetch_add`"

    This reverts commit 8a68dc7bdd3d1c97677a6633a4f2b5e524c492ae.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15315

commit f8ee06901cfec2ebb7340087f039b103e8ab51b3
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-21 07:25:53 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-25 13:46:06 +0900

    ZJIT: For JIT-to-JIT send, avoid loading uninitialized local through EP

    JIT-to-JIT sends don't blit locals to nil in the callee's
    EP memory region because HIR is aware of this initial state and
    memory ops are only done when necessary. Previously, we
    read from this initialized memory by emitting `GetLocal` in e.g. BBs
    that are immediate successor to an entrypoint.

    The entry points sets up the frame state properly and we also reload
    locals if necessary after an operation that potentially makes the
    environment escape. So, listen to the frame state when it's supposed to
    be up-to-date (`!local_inval`).

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15267

commit 55892f5994f66567aa4c0c56fdb8bf31134c3972
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-25 11:27:17 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-25 12:06:55 +0900

    Fix style for rb_gc_impl_after_fork

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15313

commit 86b210203e5e54a70782fd050ca9826eb23e9c7e
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-25 11:26:57 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-25 12:06:55 +0900

    Fix style for rb_gc_impl_before_fork

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15313

commit 58faaf11dfeed157bf57987661beed29cd69673f
  Author:     Yuji Yaginuma <yuuji.yaginuma@gmail.com>
  AuthorDate: 2025-11-23 17:09:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-25 11:15:08 +0900

    [ruby/uri] [DOC] Fix result of sample code in `#user=`

    A `password` is cleared when change a user now.

    https://github.com/ruby/uri/commit/af6714473c

commit 35445a736f509e6edbba8a08d8e4af69c206368a
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-24 10:36:52 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-25 07:32:53 +0900

    Add SIGABRT to reserved signals in bundler spec

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15308

commit 2315349b8ac10b1b4468ed10dabcb348a10bca0a
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-24 07:34:44 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-25 07:32:53 +0900

    Handle SIGABRT and output bug report

    SIGABRT is for abnormal termination so we should handle it to output a bug
    report. Specifically, glibc malloc uses it to exit when there is corruption.
    For example, the following script produces a double free:

        mem = Fiddle.malloc(10)
        Fiddle.free(mem)
        Fiddle.free(mem)

    Before this patch, it just outputs the following and exits:

        free(): double free detected in tcache 2

    After this patch, it also outputs a bug report:

        free(): double free detected in tcache 2
        test.rb:11: [BUG] Aborted at 0x000003e8000ab65c

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15308

commit 8a68dc7bdd3d1c97677a6633a4f2b5e524c492ae
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-25 05:28:30 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-25 05:28:30 +0900

    Revert "Fix stdatomic case in `rbimpl_atomic_u64_fetch_add`" (#15311)

    This reverts commit d3b6f835d565ec1590059773fc87589ddf8adc37.

    This broke the Docker builds and presumably also 32-bit machines that
    don't already have libatomic installed.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit aeb7689e696540f3f96bad87efc91ba2b4187c99
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2024-08-20 07:03:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-24 17:44:28 +0900

    [ruby/forwardable] Use generic argument forwarding (...) instead of ruby2_keywords on Ruby 2.7+

    On Ruby 3.4+, generic argument forwarding is significantly faster
    as it does not allocate.

    https://github.com/ruby/forwardable/commit/b606c3bf0a

commit b75cf83a333ab4e321e89cdefb94e684f6648033
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-24 06:35:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-24 06:36:19 +0900

    [ruby/prism] Revert "Reject `p(p a, &block => value)` and similar"

    https://github.com/ruby/prism/commit/fef2c20777

commit 8d73a181879d3151bb5e7ecf928ec098d154d498
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-24 03:58:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-24 04:10:29 +0900

    [ruby/prism] Handle destroying implicit parameter

    Fixes https://github.com/ruby/prism/pull/3740

    https://github.com/ruby/prism/commit/464a849184

commit 390220579b7afe433731f4d2d119a57858e27911
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-24 02:47:33 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-24 03:54:44 +0900

    Replace vfork with fork for ASAN

    Older versions of ASAN do not support vfork. See https://github.com/google/sanitizers/issues/925

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15306

commit 026140b3a209ee2608241a91bb7728a429285685
  Author:     Steven Johnstone <steven.james.johnstone@gmail.com>
  AuthorDate: 2025-11-20 20:31:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-24 03:45:57 +0900

    [ruby/prism] Avoid reading out-of-bounds in pm_strnstr

    Fixes https://github.com/ruby/prism/pull/3738.

    https://github.com/ruby/prism/commit/37bb46ff5f

commit 2870b7d7df30bc227f40a4c04c97050b90f1f25b
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-18 17:33:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-24 03:15:15 +0900

    [ruby/prism] Reject `p(p a, &block => value)` and similar

    They were being parsed as `p((p a, &block) => value)`.
    When we get to this point, we must not just have parsed a command call, always consuming the `=>` is not correct.

    Closes [Bug #21622]

    https://github.com/ruby/prism/commit/796ab0edf4

commit 190b017fc6c21ff7b61c2b5ece0294785e4a4ca2
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-22 07:26:08 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-24 00:41:41 +0900

    Don't use non blocking pipes for RUBY_CRASH_REPORT

    [Bug #21703]

    RUBY_CRASH_REPORT does not work in some cases when shelling out on Linux.
    For example, given the following shell script dump.sh:

        #!/usr/bin/env bash
        cat > /tmp/crash

    And we see it fails like this:

        $ RUBY_CRASH_REPORT="|dump.sh" ruby -rfiddle -e "Fiddle::Pointer.new(1, 10)[0]"
        cat: -: Resource temporarily unavailable

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15292

commit 32a4545ee41240cb16344936e7c1c5ed01663059
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-23 21:46:51 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-23 21:46:51 +0900

    CI: Abandon CAPI check on macos-15

    `hashFiles` is very unstable on macOS runners.

commit 1738255f6d6c5e9c419e6951a07f59b3a73dfaf5
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-23 19:04:17 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-23 19:04:17 +0900

    [Misc #21688] [DOC] Include box.md in Ruby::Box documentation

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15305

commit 4a0e01d7681e72919f1fae7bc9db744e5a3fbe8c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-23 19:01:16 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-23 19:01:16 +0900

    [Misc #21688] Teach RDoc about the toplevel module `Ruby`

    Re-open the exising module by calling `rb_define_module`.
    RDoc (`RDoc::Parser::C#do_classes_and_modules`) does not recognize
    `rb_path2class` as a class/module definition.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15305

commit 422ed7489f80cc037a07b51044eaac19ad0b423b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-23 18:00:13 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-23 18:08:52 +0900

    [ruby/date] [DOC] Remove the name from same file references

    https://github.com/ruby/date/commit/e41082e068

commit fed528a995a4c29dc75961a99ef6bdf0094296e0
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-23 17:56:11 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-23 17:56:11 +0900

    [DOC] Remove the name from same file references

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15304

commit beb85e7eeee4163cd45b69645a60cdb942f72c05
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-23 13:55:15 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-23 13:55:15 +0900

    [Bug #21705] Fix segfaults on Windows

    It should check the type of the argument and coercion before
    converting the encoding.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15302

commit a7f948c32c169ceabb5719f0328e594759c73cd8
  Author:     Brandon Zylstra <9854+brandonzylstra@users.noreply.github.com>
  AuthorDate: 2025-11-23 08:35:15 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-23 11:31:55 +0900

    [DOC] Fix a typo in enum.c documentation

    fix a minor misspelling in the documentation comments

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15300

commit dd489ee9c48fc8c2b499b80f3ebcd053de33bb0a
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-11-19 01:41:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-23 01:48:13 +0900

    [ruby/openssl] asn1: refactor converting ASN1_OBJECT to string

    ruby/openssl exposes OIDs to Ruby as strings in many places, but the
    conversion logic has been duplicated and the behavior is inconsistent.
    There are mainly two patterns:

     - Returns the short name associated with the OID/NID, or the dotted
       decimal notation if it is unknown to OpenSSL.
     - Returns the long name, or the dotted decimal notation.

    These patterns are implemented using different OpenSSL APIs and that
    caused subtle differences. Add helper functions ossl_asn1obj_to_string()
    and ossl_asn1obj_to_string_long_name() to unify the logic.

    Also, document the current behaviors where it is not yet done. The
    inconsistency was likely unintentional, but since it dates back to the
    original implementations, standardizing it now would cause more issues
    than it resolves.

    https://github.com/ruby/openssl/commit/2ea36c21a4

commit 424499dd10aa01b3d84957761b19dde63b28113c
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-05-17 18:42:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-23 01:48:13 +0900

    [ruby/openssl] ts: refactor converting string to ASN1_OBJECT

    obj_to_asn1obj() in ossl_ts.c and ossl_asn1.c are identical. Let's
    remove one in ossl_ts.c.

    eASN1Error can now be made static to ossl_asn1.c.

    https://github.com/ruby/openssl/commit/dcb05c40c2

commit f9efa0cc0468692739770e754c12edf46cdf7c8e
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-11-22 22:11:31 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 23:25:15 +0900

    [ruby/openssl] pkey/ec: fix OpenSSL::PKey::EC::Group#curve_name for unknown curves

    EC_GROUP_get_curve_name() returns NID_undef when OpenSSL does not
    recognize the curve and there is no associated OID.

    Handle this case explicitly and return nil instead of the string
    "UNDEF", which should not be exposed outside the extension.

    https://github.com/ruby/openssl/commit/2c16821c07

commit c7a84ae0bb8c6dab3463076d7e5ca9b6f89880f4
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-22 22:13:30 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 22:52:26 +0900

    [ruby/json] parser.c: Record escape positions while parsing

    We can then pass them to the decoder to save having to parse
    the string again.

    ```
    == Parsing activitypub.json (58160 bytes)
    ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24]
    Warming up --------------------------------------
                   after     1.275k i/100ms
    Calculating -------------------------------------
                   after     12.774k (± 0.8%) i/s   (78.29 μs/i) -     65.025k in   5.090834s

    Comparison:
                  before:    12314.3 i/s
                   after:    12773.8 i/s - 1.04x  faster

    == Parsing twitter.json (567916 bytes)
    ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24]
    Warming up --------------------------------------
                   after   143.000 i/100ms
    Calculating -------------------------------------
                   after      1.441k (± 0.2%) i/s  (693.86 μs/i) -      7.293k in   5.060345s

    Comparison:
                  before:     1430.1 i/s
                   after:     1441.2 i/s - 1.01x  faster

    == Parsing citm_catalog.json (1727030 bytes)
    ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24]
    Warming up --------------------------------------
                   after    69.000 i/100ms
    Calculating -------------------------------------
                   after    695.919 (± 0.4%) i/s    (1.44 ms/i) -      3.519k in   5.056691s

    Comparison:
                  before:      687.8 i/s
                   after:      695.9 i/s - 1.01x  faster
    ```

    https://github.com/ruby/json/commit/4f4551f993

commit 735762747d818563555e13932b8e49f3801a8c7f
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-22 20:59:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 22:12:16 +0900

    [ruby/json] Fix the parser to not accept invalid escapes

    Only `"\/bfnrtu` are valid after a backslash.

    https://github.com/ruby/json/commit/f7f8f552ed

commit ec296f63e33e78a95a20378b689efc0bf74f271a
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-22 18:32:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 18:32:48 +0900

    [ruby/json] Use booleans in string_scan

    https://github.com/ruby/json/commit/256cad5def

commit 7789aaca3736fdac2c00b141b12f127168c485cd
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-22 01:44:55 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-22 07:16:33 +0900

    [DOC] Tweaks for Integer#**

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15286

commit b47b37c12cf30b06ec5afc365f3739b0744b3f4c
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-21 21:46:03 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-22 07:11:54 +0900

    [DOC] Harmonize #* methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15279

commit 2289961b485b1cbf7b1012693722c16a6cdb4cda
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-22 03:30:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 06:29:20 +0900

    [ruby/rubygems] Undeprecate Gem::Version#<=> against strings

    This pattern is extremely common across the ecosystem, I don't think
    it's reasonable to deprecate it.

    I understand the performance argument, but perhaps the dependency
    resolution algorithm can use another method that is private API
    and only works with two `Version` instance.

    https://github.com/ruby/rubygems/commit/024b4b547a

commit 6e2906f60da20d6cd057aa8ad4b84f8c988406d9
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-22 03:43:52 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 04:16:26 +0900

    ZJIT: Don't make GuardNotFrozen consider immediates

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15251

commit e31c2569079d09cf63d6822558b053b8b8cc9937
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-20 08:17:43 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 04:16:26 +0900

    ZJIT: Inline GuardNotFrozen into LIR

    No sense calling a C function.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15251

commit 1959fcacb357ec548ed8a000c6dc6e5f39a3fb55
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-22 01:53:35 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 02:21:57 +0900

    ZJIT: Add tests for Kernel#kind_of?

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15250

commit 14e34fa7c0f02402b322bc9bbdd34fec446b70e9
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-21 07:56:17 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 02:21:57 +0900

    ZJIT: Print class objects more nicely in HIR

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15250

commit ff89e470e21e9d021c6739d83eddda4bd8c071fe
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-20 06:37:45 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 02:21:57 +0900

    ZJIT: Specialize Module#=== and Kernel#is_a? into IsA

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15250

commit e0bb3fb1cda2238d0c98afcdec2fe282c29994aa
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-22 01:57:26 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-22 01:57:26 +0900

    ZJIT: Inline Integer#<< for constant rhs (#15258)

    This is good for protoboeuf and other binary parsing

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 8728406c418f1a200cda02a259ba164d185a8ebd
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-22 01:49:57 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-22 01:49:57 +0900

    ZJIT: Inline Thread.current (#15272)

    Add `LoadEC` then it's just two `LoadField`.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 8090988f878c71c2aaefbb3123ac13e3753c93da
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-20 10:53:41 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 01:49:03 +0900

    ZJIT: Inline ArrayLength into LIR

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15260

commit 6cebbf4037376f28d9792cecf38d4f770bcdcaac
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-21 00:43:08 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-22 01:49:03 +0900

    ZJIT: Split CSel memory reads on x86_64

    Fix https://github.com/Shopify/ruby/issues/876

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15260

commit f52edf172db0afa4b3867723f75d617291070d63
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-22 01:48:36 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-22 01:48:36 +0900

    ZJIT: Specialize monomorphic DefinedIvar (#15281)

    This lets us constant-fold common monomorphic cases.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit e5e8ac51496d8240f2c7a65aa9a9f300454d41b6
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-22 01:48:18 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-22 01:48:18 +0900

    ZJIT: Inline String#empty? (#15283)

    Don't emit a CCall.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit d3b6f835d565ec1590059773fc87589ddf8adc37
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-22 00:54:58 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-22 01:20:04 +0900

    Fix stdatomic case in `rbimpl_atomic_u64_fetch_add`

    On some platoforms, 64bit atomic operations need the dedicated helper
    library.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15285

commit ffa105c27f943bf4170247137733ff7640cf24d0
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-21 20:48:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 01:12:35 +0900

    [ruby/json] Move RUBY_TYPED_FROZEN_SHAREABLE macro to json.h

    https://github.com/ruby/json/commit/2a4ebe8250

commit 419efd5ca5064e8f492660a898be36fe4f79b84a
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-21 19:53:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 01:12:35 +0900

    [ruby/json] Skip test failing with JRuby in CI

    https://github.com/ruby/json/commit/305d3832db

commit bdca2a9975c7859f2e1702a517d59bb6cb254acb
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-18 19:44:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-22 01:12:35 +0900

    [ruby/json] Ractor-shareable JSON::Coder

    https://github.com/ruby/json/commit/58d60d6b76

commit 7ae0809c7c03b9d31a57fb18e9b0d173eead6f74
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-22 00:00:39 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-22 00:30:37 +0900

    Remove clang-18 from compilers CI

    clang-18 has a bug that causes ruby_current_ec to sometimes be null when
    using Ractors and crashes like this:

        <internal:ractor>:700: [BUG] Segmentation fault at 0x0000000000000030
        ruby 4.0.0dev (2025-11-21T06:49:14Z master bcc7b2049c) +PRISM [x86_64-linux]

        -- Control frame information -----------------------------------------------
        c:0004 p:0003 s:0015 e:000014 l:y b:0001 METHOD <internal:ractor>:700
          me:
            called_id: receive, type: iseq
            owner class: 0x00007ff462dda500 T_CLASS/Ractor::Port
          self: 0x00007ff46146d068 ractor/port/Ractor::Port ractor/port
        c:0003 p:0008 s:0011 e:000010 l:y b:0001 METHOD <internal:ractor>:311
          me:
            called_id: receive, type: iseq
            owner class: 0x00007ff462ddae60 T_CLASS/(anon)
          self: 0x00007ff462ddaf00 T_CLASS/Ractor
        c:0002 p:0010 s:0007 e:000006 l:n b:---- BLOCK  bootstraptest.test_ractor.rb_2354_1323.rb:9 [FINISH]
          self: 0x00007ff46146d090 ractor/Ractor r:68
          lvars:
            j: T_FIXNUM 66
        c:0001 p:---- s:0003 e:000002 l:y b:---- DUMMY  [FINISH]
          self: T_NIL

        -- Ruby level backtrace information ----------------------------------------
        bootstraptest.test_ractor.rb_2354_1323.rb:9:in 'block (2 levels) in <main>'
        <internal:ractor>:311:in 'receive'
        <internal:ractor>:700:in 'receive'

        -- Threading information ---------------------------------------------------
        Total ractor count: 7
        Ruby thread count for this ractor: 1

        -- Machine register context ------------------------------------------------
        RIP: 0x00007ff47c7df5f0 RBP: 0x000055d77ea5b4f0 RSP: 0x00007ff445fa3af0
        RAX: 0x0000000000000000 RBX: 0x000055d77e9fd068 RCX: 0x000055d77e9fd040
        RDX: 0x000055d77eb2ac40 RDI: 0x00007ff47cbe7700 RSI: 0x0000000000000000
          R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x000055d77e9fc830
        R11: 0x93ba1054e59bfb14 R12: 0x000055d77ea5b4f0 R13: 0x00007ff445f82f20
        R14: 0x00007ff4614cf668 R15: 0x000055d77e9fd040 EFL: 0x0000000000010246

        -- C level backtrace information -------------------------------------------
        libruby.so.4.0(rb_print_backtrace+0x14) [0x7ff47c8cbd18] vm_dump.c:1105
        libruby.so.4.0(rb_vm_bugreport) vm_dump.c:1450
        libruby.so.4.0(rb_bug_for_fatal_signal+0x162) [0x7ff47c70ce02] error.c:1131
        libruby.so.4.0(sigsegv+0x4a) [0x7ff47c82f20a] signal.c:948
        /lib/x86_64-linux-gnu/libc.so.6(0x7ff47c34a330) [0x7ff47c34a330]
        libruby.so.4.0(rb_ec_thread_ptr+0x0) [0x7ff47c7df5f0] vm_core.h:2092
        libruby.so.4.0(rb_ec_ractor_ptr) vm_core.h:2041
        libruby.so.4.0(rb_current_execution_context) vm_core.h:2110
        libruby.so.4.0(rb_current_ractor_raw) vm_core.h:2109
        libruby.so.4.0(rb_current_ractor) vm_core.h:2117
        libruby.so.4.0(ractor_unlock) ractor.c:110
        libruby.so.4.0(ractor_unlock_self) ractor.c:125
        libruby.so.4.0(ractor_wait) ractor_sync.c:1054
        libruby.so.4.0(ractor_wait_receive) ractor_sync.c:1113
        libruby.so.4.0(ractor_receive+0x25) [0x7ff47c7ded08] ractor_sync.c:1166
        libruby.so.4.0(ractor_port_receive) ractor_sync.c:143
        libruby.so.4.0(builtin_inline_class_700) ractor.rb:701
        libruby.so.4.0(invoke_bf+0x4) [0x7ff47c8a2060] vm_insnhelper.c:7534
        libruby.so.4.0(vm_invoke_builtin_delegate) vm_insnhelper.c:0
        libruby.so.4.0(vm_exec_core) insns.def:1674
        libruby.so.4.0(vm_exec_loop+0x0) [0x7ff47c89b868] vm.c:2784
        libruby.so.4.0(rb_vm_exec) vm.c:2787
        libruby.so.4.0(vm_invoke_proc+0x344) [0x7ff47c8b03f4] vm.c:1814
        libruby.so.4.0(thread_do_start_proc+0x17a) [0x7ff47c870bba] thread.c:593
        libruby.so.4.0(thread_do_start+0x162) [0x7ff47c87042f] thread.c:635
        libruby.so.4.0(thread_start_func_2) thread.c:686
        libruby.so.4.0(rb_native_mutex_lock+0x0) [0x7ff47c870fd1] thread_pthread.c:2238
        libruby.so.4.0(thread_sched_lock_) thread_pthread.c:403
        libruby.so.4.0(call_thread_start_func_2) thread_pthread_mn.c:466
        libruby.so.4.0(co_start) thread_pthread_mn.c:464

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15282

commit 5f5da2c293766b98e543b3215b1af7ad6950977d
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-21 14:50:11 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-21 17:43:48 +0900

    Fix stdatomic case in rbimpl_atomic_u64_fetch_add

    This was failing on crossruby, likely because HAVE_GCC_ATOMIC_BUILTINS
    was true, but HAVE_GCC_ATOMIC_BUILTINS_64 was false. We probably should
    have feature detection of 64-bit stdatomics like we do for GCC, but for
    now let's keep rbimpl_atomic_u64_fetch_add in sync with load/set.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15276

commit b9a213f791eb79372d10f6ba07b3803140b3eb59
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-21 13:26:43 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-21 17:34:03 +0900

    Fix timezone of `yesterday`

    Set the `TZ environment variable.  `git log` does not recognize UTC
    offset in `--before` option, unless full datetime is given.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15278

commit d4e1f9e1b8621ef92caa5061dbc11e1860fa5eed
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-21 13:18:54 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-21 17:34:03 +0900

    Win: quote equal sign in command line

    `cmd.exe` splits the command line also by equal signs, not only by
    space characters.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15278

commit eb11b40bb54b11456f88564957ec22c8c08c203c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-21 16:20:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 17:32:50 +0900

    [ruby/rubygems] bin/rubocop -a

    https://github.com/ruby/rubygems/commit/fbf6fb667e

commit bcc7b2049c45356b11992e095e2f114c02736e24
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-21 14:52:46 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-21 15:49:14 +0900

    Use assert_match for uplevel option

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15275

commit 1d160ed0591fbaabe1ae6d76920da409e238b396
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-21 14:39:51 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-21 15:49:14 +0900

    Fixed warning for String comparison of Gem::Version

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15275

commit 451c12099472764f1190df8db451dbeaedd1b1c8
  Author:     Philip Arndt <git@p.arndt.io>
  AuthorDate: 2025-11-21 13:33:57 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 13:34:34 +0900

    [ruby/rubygems] Check for file existence before deletion from cache
    (https://github.com/ruby/rubygems/pull/9095)

    * Rescue when deleting a non-existent cached gem file

    When a gem was in the cache, but another process deletes it first, this
    delete command fails.

    To work around this, I'm rescuing from Errno::ENOENT and swalling the
    error. The file is gone, and we can move on.

    * Apply suggestion from @kou

    Co-authored-by: Sutou Kouhei <kou@cozmixng.org>

    ---------

    https://github.com/ruby/rubygems/commit/b30bcbc648

    Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
    Co-authored-by: Sutou Kouhei <kou@cozmixng.org>

commit ee002a5ee061e82da639e499a36810a747998747
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-21 11:22:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 13:20:05 +0900

    [ruby/rubygems] Respect `BUNDLE_VERSION` config at Gem::BundlerVersionFinder

    If we use "system" variable in BUNDLE_VERSION on Bundler configuration,
    we can use bundler version provided by system installation.

    But the current logic returns the first activated version of bundler
    like 2.7.2. It makes to confuse users.

    https://github.com/ruby/rubygems/commit/4eb66d9549

commit 917e77be5e5bf13b22009bec5568aa031138a605
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-15 10:26:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 13:03:44 +0900

    [ruby/rubygems] Deprecate comparing Gem::Version objects with strings

    Comparing version objects is a huge bottleneck in dependency solvers
    (like inside Bundler).  I would like to make comparing version objects
    cheaper.  Right now we support comparing version objects with strings by
    trying to coerce the string to a version.  So for example:

    ```ruby
    Gem::Version.new("1") <=> "12"
    ```

    I would like to deprecate and remove support for this feature so that we
    can reduce the overhead of `def <=>`.

    I'm not sure what version of RubyGems we could remove this from though.

    https://github.com/ruby/rubygems/commit/81b7602183

commit 8b116ee8b982f838d8464b7ee310f37bc3282efb
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-17 05:28:31 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 13:03:43 +0900

    [ruby/rubygems] create a gem version instead of comparing with a string

    https://github.com/ruby/rubygems/commit/c1e3d4d63b

commit 9aa09b4620fd633ef2ffaff4bdae5e344b173ee6
  Author:     sue445 <sue445@sue445.net>
  AuthorDate: 2025-11-21 09:50:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 12:13:59 +0900

    [ruby/rubygems] Fixed RuboCop offense in Rakefile generated by `bundle gem`

    ```
    Offenses:

    Rakefile:18:1: C: [Correctable] Layout/EmptyLines: Extra blank line detected.

    Diff:
    @@ -11,4 +11,5 @@
       ext.lib_dir = "lib/test_gem"
     end

    +
     task default: :compile

    https://github.com/ruby/rubygems/commit/8c414729df

commit a26f8235283b27dc1c5018addd0dfac209aaaa17
  Author:     sue445 <sue445@sue445.net>
  AuthorDate: 2025-11-20 22:34:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 12:13:59 +0900

    [ruby/rubygems] Add go_gem/rake_task for Go native extention gem skeleton

    https://github.com/ruby/rubygems/commit/64f92d2da0

commit 9d04fb52aff73ba2b73753f6d172c2d21322a3bc
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-21 10:51:29 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-21 10:51:29 +0900

    CI: cmake in scoop seems unused

commit 9764306c48619e2d168235a4864c43f9e0db78e0
  Author:     John Hawthorn <john.hawthorn@shopify.com>
  AuthorDate: 2025-05-29 05:26:10 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-21 10:19:40 +0900

    Accurate GC.stat under multi-Ractor mode

  Notes:
    Merged: https://github.com/ruby/ruby/pull/13460

commit 07ddb0ed73b1ea61cb717f4424f7b2909d8c0ab3
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-20 06:39:29 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-21 09:52:28 +0900

    ZJIT: Read `iseq->body->param` directly instead of through FFI

    Going through a call to a C function just to read a bitfield was a
    little extreme. We did it to be super conservative since bitfields
    have historically been the trigger of many bugs and surprises. Let's
    try directly accessing them with code from rust-bindgen. If this
    ends up causing issues, we can use the FFI approach behind nicer
    wrappers.

    In any case, directly access regular struct fields such as `lead_num`
    and `opt_num` to remove boilerplate.

commit 7a09df45f2619a672eaab763c2e2a0c5199d5daa
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-20 06:08:55 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-21 09:52:28 +0900

    Name the `iseq->body->param` struct and update bindings for JITs

    This will make reading the parameters nicer for the JITs. Should be
    no-op for the C side.

commit aa9e15cb1ecb0de598f816e44a09e016aaa8ef5c
  Author:     Alexander Bulancov <6594487+trinistr@users.noreply.github.com>
  AuthorDate: 2025-11-21 09:30:42 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-21 09:30:42 +0900

    Fix multiple bugs in `IO::Buffer.map` and update its documentation. (#15264)

    - Buffer's size did not account for offset when mapping the file, leading to possible crashes.
    - Size and offset were not checked properly, leading to many situations raising EINVAL errors with generic messages.
    - Documentation was wrong.

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit 29d8a50d264be0c9cf1ddfc9fc2ce37724755b38
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-20 20:02:29 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 08:11:47 +0900

    [ruby/rubygems] Keep legacy windows platform, not removed them

    https://github.com/ruby/rubygems/commit/f360af8e3b

commit e15b4e1c56e826655e6fd10e32bdf974edf4b980
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-21 06:58:36 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 08:10:19 +0900

    Bump default compiler to clang-20 in CI

    clang-18 has a bug that causes the latest Ractor btest to crash.

commit 3ec44a99954a3c4c131f374020b7addcba9bc5f2
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-18 11:53:30 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 08:10:19 +0900

    Add a Ractor test case that causes MMTk to deadlock

    This was a test case for Ractors discovered that causes MMTk to deadlock.
    There is a fix for it in https://github.com/ruby/mmtk/pull/49.

commit 010b23a7cfc4a20371d74406f9f0563331a233fd
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-11 11:23:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 08:01:03 +0900

    [ruby/rubygems] Add support for BUNDLE_LOCKFILE environment variable

    This specifies the lockfile location. This allows for easy support
    of different lockfiles per Ruby version or platform.

    https://github.com/ruby/rubygems/commit/b54d65bc0a

    Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
    Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com>

commit 1562803e5103dea3949027e61672fa82f26782fd
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-09 09:03:07 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 08:01:03 +0900

    [ruby/rubygems] Add support for bundle install --no-lock

    This allows for the same behavior as including `lockfile false`
    in the Gemfile. This allows you to get the behavior without
    modifying the Gemfile, which is useful if you do not control the
    Gemfile.

    This is similar to the --no-lock option already supported by
    `gem install -g Gemfile`.

    https://github.com/ruby/rubygems/commit/6c94623881

    Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com>

commit 82d8d24e7cdd26123ed4ad478ce6a0bb81d7abb5
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-09 09:00:57 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 08:01:02 +0900

    [ruby/rubygems] Add support for lockfile in Gemfile

    This allows you to specify the lockfile to use. This is useful if
    you want to use different lockfiles for different ruby versions or
    platforms. You can also skip writing the lockfile by using a false
    value.

    https://github.com/ruby/rubygems/commit/2896aa3fc2

    Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com>

commit fb28d4748dc96d581592b0d4c186ca0a8d49fa26
  Author:     Kevin Menard <kevin@nirvdrum.com>
  AuthorDate: 2025-11-21 07:04:45 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 07:35:09 +0900

    ZJIT: Change the output on redefined method tests to verify the new definition is used

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15196

commit 447989e5980510b0bcde34c58363b425c0e78224
  Author:     Kevin Menard <kevin@nirvdrum.com>
  AuthorDate: 2025-11-21 06:57:46 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 07:35:09 +0900

    ZJIT: Update test names to use the same convention as the HIR tests

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15196

commit 36f1ab967f4b837dfb9856e1c29dd7ebeed8c3d3
  Author:     Kevin Menard <kevin@nirvdrum.com>
  AuthorDate: 2025-11-21 06:49:26 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 07:35:09 +0900

    ZJIT: Add tests for `opt_newarray_send` with target methods redefined

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15196

commit 7d2f9ab9e1992dded620fe221421c9c247dcd408
  Author:     Kevin Menard <kevin@nirvdrum.com>
  AuthorDate: 2025-11-18 01:41:30 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 07:35:09 +0900

    ZJIT: Handle display formatting for all defined bops

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15196

commit b06dd644da0ae87f33649ade6fc827a301b55b0c
  Author:     Kevin Menard <kevin@nirvdrum.com>
  AuthorDate: 2025-11-15 04:43:57 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 07:35:09 +0900

    ZJIT: Compile the VM_OPT_NEWARRAY_SEND_HASH variant of opt_newarray_send

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15196

commit 604fc059618b8f1f94b19efa51d468d827a766d1
  Author:     Kevin Menard <kevin@nirvdrum.com>
  AuthorDate: 2025-11-14 01:56:23 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 07:35:09 +0900

    ZJIT: Rename array length reference to make the code easier to follow

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15196

commit 2447380894e8ab4968d745f6844d2dc5278ebd6b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-19 07:07:21 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 07:30:42 +0900

    Run rb_gc_before_fork after before_exec

    before_exec stops the timer thread, which requires locking the Ractor
    scheduler lock. This may deadlock if rb_gc_before_fork locks the VM.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15232

commit 55938a45e8c6872df258b3ef52bba94a2cda846d
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-21 06:50:00 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 07:08:15 +0900

    [DOC] Sort some methods in What's Here

commit d5368fc515788e03a11fc42b0d9a42c7c1837d2d
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-21 07:07:44 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-21 07:07:44 +0900

    [DOC] Tweaks for String#valid_encoding?

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15247

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 826e91a7e2c427f604f47f775d156d1d398dadc6
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-21 05:57:34 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 07:06:41 +0900

    [DOC] Harmonize mod methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15265

commit ff1d23eccba3ab37e77bf2d2222cad9d6f99a0ab
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-06 05:27:26 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-21 07:06:33 +0900

    Use a serial to keep track of Mutex-owning Fiber

    Previously this held a pointer to the Fiber itself, which requires
    marking it (which was only implemented recently, prior to that it was
    buggy). Using a monotonically increasing integer instead allows us to
    avoid having a free function and keeps everything simpler.

    My main motivations in making this change are that the root fiber lazily
    allocates self, which makes the writebarrier implementation challenging
    to do correctly, and wanting to avoid sending Mutexes to the remembered
    set when locked by a short-lived Fiber.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15068

commit d1b11592af75a5eee9199951a0c330eb8caa2825
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-20 04:02:58 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 07:06:16 +0900

    [DOC] Tweaks for String#upto

commit 8b71234a4877b4bd2058cca2766ea9794fbcee41
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-20 09:57:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 07:05:13 +0900

    [ruby/rubygems] Change the logger instance for this spec:

    - With the logger change that is now threadsafe, such code no longer
      behaves the same:

      ```ruby
      Bundler.ui.silence do
        Bundler.ui.level = 'info'

        Bundler.ui.info("foo")
        # This used to output something. Now it doesn't.
      end
      ```

      IMHO this is the right behaviour since we are in a silence block,
      changing the level should have no effect. And fortunately it seems
      that we only need to change this spec.

      The call to `Bundler.ui.silence` is done in a `around` block
      https://github.com/ruby/rubygems/blob/4a13684f07ebb1dea5501e3f826fab414f96bf47/bundler/spec/spec_helper.rb#L119

    https://github.com/ruby/rubygems/commit/e716adb6c9

commit 409c004affa30efbbfd384a9cd645f7969ccc11a
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-20 07:15:41 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 07:05:13 +0900

    [ruby/rubygems] Make the Bundler logger thread safe:

    - The Logger is not thread safe when calling `with_level`.
      This now becomes problematic because we are using multiple
      threads during the resolution phase in order to fetch git gems.

    https://github.com/ruby/rubygems/commit/380653ae74

commit bd60600d00f13234cad83c9c5af5b6607a4b0fba
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-19 23:59:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 07:05:13 +0900

    [ruby/rubygems] Run git operations in parallel to speed things up:

    - ### Problem

      When you have a Gemfile that contains git gems, each repository will
      be fetched one by one. This is extremelly slow.
      A simple Gemfile with 5 git gems (small repositories) can take up
      to 10 seconds just to fetch the repos.

      We can speed this up by running multiple git process and fetching
      repositories silmutaneously.

      ### Solution

      The repositories are fetched in Bundler when `Source::Git#specs` is
      called.
      The problem is that `source.specs` is called in various places
      depending on Gemfile.

      I think the issue is that calling `source.specs` feels like that
      as a "side effect" we are going to clone repositories. I believe
      that fetching repositories should be an explicit call.

      For instance:

      ```ruby
      source "https://rubygems.org"

      gem "foo", github: "foo/foo"

      # The repository foo will be fetched as a side effect to the call to `source.spec_names`
      # https://github.com/ruby/rubygems/blob/6cc7d71dac3d0275c9727cf200c7acfbf6c78d37/bundler/lib/bundler/source_map.rb#L21
      ```

      ```ruby
      source "https://rubygems.org"

      gem "bar", source: "https://example.org"
      gem "foo", github: "foo/foo"

      # The repository foo will be fetched on a different codepath
      # https://github.com/ruby/rubygems/blob/6cc7d71dac3d0275c9727cf200c7acfbf6c78d37/bundler/lib/bundler/source/rubygems_aggregate.rb#L35

      # That is because the gem "bar" has a source that doesn't have the `/dependencies` API
      # endpoint and therefore Bundler enters a different branch condition.
      ```

      I opted to add a self explanatory call to fetch the git source
      repositories just before we start the resolution, and *just*
      before any other calls to `source.specs` is performed.

    https://github.com/ruby/rubygems/commit/f0ef526f23

commit 9b87a0b9b667ce12e9e6245d4eda40b5dfdeb5f9
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-05 10:15:59 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-21 07:05:00 +0900

    Fix missing write barrier on namespace classext

    Found by wbcheck

    It seems like here the classext was associated with the class, but it
    already had Ruby objects attached.

    rb_gc_writebarrier_remember works around that issue, but I suspect if we
    enabled autocompaction the values copied into the classext before it was
    attached could be broken.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15058

commit a4a99a24e8299f9595cb41591f3252e6082d744f
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-20 03:29:01 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-21 07:04:22 +0900

    [DOC] TWeaks for String#upcase!

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15245

commit 59e0489248036f5923e04fdf16ce3d8244ed038d
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-21 07:03:58 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-21 07:03:58 +0900

    [DOC] Tweaks for String#upcase (#15244)

  Notes:
    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit cb9c7a6a0a451fc158055145d0bce4891b62e32f
  Author:     eileencodes <eileencodes@gmail.com>
  AuthorDate: 2025-11-20 02:08:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 07:02:28 +0900

    [ruby/rubygems] Improve error messages and handling in tests

    This is a first pass to improve the way errors are handled and raised in
    bundler's tests. The goal is to clean up tests and modernize them -
    these were some obvious areas that could be cleaned up.

    - Instead of raising "ZOMG" in the load error tests, it now tests for
    the actual error and gem raising.
    - Improve error messages where applicable.
    - All errors raise a specific error class, rather than falling back to a
    default and just setting a message.
    - Removed arguments and `bundle_dir` option from `TheBundle` class as it wasn't
    actually used so therefore we don't need to raise an error for extra
    arguments.
    - Removed error from `BundlerBuilder`, as it won't work if it's not
    `bundler`, also it never uses `name`. The only reaon `name` is passed
    in is because of metaprogramming on loading the right builder. I
    think that should eventually be refactored.
    - Replaced and removed `update_repo3` and `update_repo4` in favor of
    just `build_repo3` and `build_repo4`. Rather than tell someone writing
    tests to use a different method, automatically use the right method.

    https://github.com/ruby/rubygems/commit/68c39c8451

commit ba47c2f03305be10b7c28f7ff6783a533b57ef15
  Author:     Thiago Araujo <thd.araujo@gmail.com>
  AuthorDate: 2025-11-20 13:05:29 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 05:09:19 +0900

    [ruby/prism] Add tests to `regexp_encoding_option_mismatch`

    related to #2667

    https://github.com/ruby/prism/commit/44f075bae4

commit 0b4420bfd5f32fd715704f9adcf2320971f05ab3
  Author:     Steven Johnstone <steven.james.johnstone@gmail.com>
  AuthorDate: 2025-11-20 20:02:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 05:06:08 +0900

    [ruby/prism] Use memmove for overlapping memory ranges

    Fixes https://github.com/ruby/prism/pull/3736.

    https://github.com/ruby/prism/commit/1f5f192ab7

commit a8f269a2c665c0a471ecb28b3265cb4eb8a7ca2e
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-11-21 04:47:01 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-21 04:47:01 +0900

    ZJIT: Deduplicate successor and predecessor sets (#15263)

    Fixes https://github.com/Shopify/ruby/issues/877

    I didn't consider the ability to have the successor or predecessor sets having duplicates when originally crafting the Iongraph support PR, but have added this to prevent that happening in the future.

    I don't think it interferes with the underlying Iongraph implementation, but it doesn't really make sense.

    I think this kind of behaviour happens when there are multiple jump instructions that go to the same basic block within a given block.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 48027256cf9d3e3bf12603184448cf88406b92d0
  Author:     Étienne Barrié <etienne.barrie@gmail.com>
  AuthorDate: 2025-11-21 00:41:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-21 02:23:37 +0900

    [ruby/json] Remove unused symbols

    https://github.com/ruby/json/commit/9364d0c761

commit f8cb9f320ceddbfe6feffb6410bb6212ed27673c
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-21 00:28:23 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 01:32:17 +0900

    ZJIT: Put optional interpreter cache on both GetIvar and SetIvar

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15087

commit 0b6daad624e36d755f7a6919af2c2eee11353da1
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-21 00:13:04 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-21 01:32:17 +0900

    ZJIT: Fix pointer types for SetInstanceVariable

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15087

commit 41b8e440e7f2c5d3d1c1a9644de4bdc06a343724
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-11-18 10:58:26 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-11-20 23:54:29 +0900

    Support backwards compatibility for Set subclasses

    For subclasses from Set, require `set/subclass_compatible`, and
    extend the subclass and include a module in it that makes it more
    backwards compatible with the pure Ruby Set implementation used
    before Ruby 4.

    The module included in the subclass contains a near-copy of the
    previous Set implementation, with the following changes:

    * Accesses to `@hash` are generally replaced with `super` calls. In
      some cases, they are replaced with a call to another instance method.
    * Some methods that only accessed `@hash` and nothing else are not
      defined, so they inherit behavior from core Set.
    * The previous `Set#divide` implementation is not used, to avoid
      depending on tsort.

    This fixes the following two issues:

    * [Bug #21375] Set[] does not call #initialize
    * [Bug #21396] Set#initialize should call Set#add on items passed in

    It should also fix the vast majority of backwards compatibility issues
    in other cases where code subclassed Set and depended on implementation
    details (such as which methods call which other methods).

    This does not affect Set internals, so Set itself remains fast. For
    users who want to subclass Set but do not need to worry about
    backwards compatibility, they can subclass from Set::CoreSet, a Set
    subclass that does not have the backward compatibility layer included.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15228

commit a24922a68040593598791c9d8b790282d36a15c9
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-20 17:56:51 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-20 17:56:51 +0900

    Remove stale declaration

    `rb_zjit_option_enabled_p` seems no longer used/defined since
    ruby/ruby#f84bbb423836d9d0d018b8ab71ecceb5868fd5be.

commit d755052a921a3706cb591b3d7288a0b503b430be
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-20 17:42:17 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-20 17:42:17 +0900

    Remove wrong test

    `realloc` is not guaranteed to return the same address when shrinking.

commit 2c42f7c60115d78436e599cf4f56aaf05bc7ac79
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-18 19:34:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-20 16:59:44 +0900

    [ruby/resolv] Move minimal registry access to the extension

    Now win32/registry depends on fiddle, and its conversion is complex
    and too generic for the purpose of resolv.

    https://github.com/ruby/resolv/commit/bd24870d2d

commit 0653a01ada3c3c286de128074b58b32e7bf9eeca
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-20 10:05:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-20 11:41:53 +0900

    [ruby/rubygems] Bump up to 4.0.0.beta1

    https://github.com/ruby/rubygems/commit/9be811c01a

commit 167c3dbaa052d7ad34c374fc6c5f2cceab76b3ac
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-20 09:03:23 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-20 09:03:23 +0900

    Omit a test on s390x linux tripping over a git bug

    This test has been reliably failing on recent trunk versions.

    See: <https://github.com/ruby/ruby/actions/runs/19519712433/job/55880266450#step:14:120>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15252

    Merged-By: XrXr

commit f5f69d41146d5e17e93ec5b219ae6f5ecd59e38b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-20 07:15:23 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-20 08:25:29 +0900

    Implement heap_final_slots in GC.stat_heap

    [Feature #20408]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/10439

commit 83bf05427d882b9d5b9adf500abe3471eef14dd1
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-20 07:13:47 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-20 08:25:29 +0900

    Implement heap_free_slots in GC.stat_heap

    [Feature #20408]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/10439

commit fa02d7a01f5e7516de8eb3c7f92ec75c50c06e3f
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-20 07:09:39 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-20 08:25:29 +0900

    Implement heap_live_slots in GC.stat_heap

    [Feature #20408]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/10439

commit 2cd792a1cfefeaee948b321bbc14cb86acc2d456
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-19 07:46:52 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-20 08:14:01 +0900

    ZJIT: Fix assertion failure when profiling VM_BLOCK_HANDLER_NONE

    As can be seen in vm_block_handler_verify(), VM_BLOCK_HANDLER_NONE is
    not a valid argument for vm_block_handler(). Store nil in the profiler
    when seen instead of crashing.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15233

commit 4107a41020003d7106883b78891560e05d299310
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-19 07:45:27 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-20 08:14:01 +0900

    ZJIT: Re-link the test binary when only miniruby changes

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15233

commit 2ed287da177ea792e0673eaf7764cc7ca1fca8a1
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-11-20 08:00:44 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-20 08:00:44 +0900

    ZJIT: Add Iongraph compatibility (#14999)

    ## Components

    This PR adds functionality to visualize HIR using the [Iongraph](https://spidermonkey.dev/blog/2025/10/28/iongraph-web.html) tool first created for use with Spidermonkey.

    ## Justification

    Iongraph's viewer is (as mentioned in the article above) a few notches above graphviz for viewing large CFGs. It also allows easily inspecting different compiler optimization passes and multiple functions in the same browser window. Since Spidermonkey is using this format, it may be beneficial to use it for our own JIT development.

    The requirement for JSON is downstream from that of the Iongraph format. As for writing the implementation myself, ZJIT leans towards having fewer dependencies, so this is the preferred approach.

    ## How does it look?

    <img width="902" height="957" alt="image" src="https://github.com/user-attachments/assets/e4e0991b-572a-41fd-9fed-1215bd1926c3" />

    <img width="770" height="624" alt="image" src="https://github.com/user-attachments/assets/01398373-1f75-46b8-b1aa-7f5d4cbca6b8" />

    Right now, it's aesthetically minimal, but is fairly robust.

    ## Functionality

    Using `--zjit-dump-hir-iongraph` will dump all compiled functions into a directory named `/tmp/zjit-iongraph-{PROCESS_PID}`. Each file will be named `func_{ZJIT_FUNC_NAME}.json`. In order to use them in the Iongraph viewer, you'll need to use `jq` to collate them to a single file. An example invocation of `jq` is shown below for reference. The name of the file created does not matter to my understanding.

    `jq --slurp --null-input '.functions=inputs | .version=2' /tmp/zjit-iongraph-{PROCESS_PID}/func*.json > ~/Downloads/foo.json`

    From there, you can use https://mozilla-spidermonkey.github.io/iongraph/ to view your trace.

    ### Caveats

    - The upstream Iongraph viewer doesn't allow you to click arguments to an instruction to find the instruction that they originate from when using the format that this PR generates. (I have made a small fork at https://github.com/aidenfoxivey/iongraph that fixes that functionality via https://github.com/aidenfoxivey/iongraph/commit/9e9c29b41c4dbb35cf66cb6161e5b19c8b796379.patch)
    - The upstream Iongraph viewer can sometimes show "exiting edges" in the CFG as being not attached to the box representing its basic block.

    <img width="1814" height="762" alt="image" src="https://github.com/user-attachments/assets/afbbaa16-332f-498f-849e-11c69a8cb0cc" />

    (Image courtesy of @tekknolagi)

    This is because the original tool was (to our understanding) written for an SSA format that does not use extended basic blocks. (Extended basic blocks let you put a jump instruction, conditional or otherwise, anywhere in the basic block.) This means that our format may generate more outgoing edges than the viewer is written to handle.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 63a6290ce0bf1a7145c545632b22a5dfa170ea6a
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-11-20 07:03:11 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-11-20 07:54:35 +0900

    [DOC] Update yjit.md to use a different email

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15248

commit d487e396bdeb33d0069bab2475103aa9b7109607
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-19 08:47:31 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-20 07:38:53 +0900

    ZJIT: [DOC] Comment copy-editing

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15235

commit ba2b97a9440d92e78d519fbcbdecc25b72a42705
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-20 07:37:37 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-20 07:37:37 +0900

    Update to ruby/spec@6e62695

commit 4e1f20fee6d97b6dc65e0d4eac1f9cc37312bd5f
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-20 06:08:26 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-20 07:27:28 +0900

    [ruby/error_highlight] Fix prism_spot_def_for_name for singletons

    Previously calling a singleton method with invalid arguments would give:

        RuntimeError: Incompatible locations

    This is because `join` wants the operator to come before the location

    https://github.com/ruby/error_highlight/commit/44920551dd

commit 4a1af72a13d41dcc38af7d69ea1f44856265d43f
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-20 05:58:24 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-20 05:58:24 +0900

    ZJIT: Count all calls to C functions from generated code (#15240)

    lobsters:

    ```
    Top-20 calls to C functions from JIT code (79.9% of total 97,004,883):
                                 rb_vm_opt_send_without_block: 19,874,212 (20.5%)
                                    rb_vm_setinstancevariable:  9,774,841 (10.1%)
                                                  rb_ivar_get:  9,358,866 ( 9.6%)
                                                 rb_hash_aref:  6,828,948 ( 7.0%)
                                                   rb_vm_send:  6,441,551 ( 6.6%)
                                              rb_vm_env_write:  5,375,989 ( 5.5%)
                                            rb_vm_invokesuper:  3,037,836 ( 3.1%)
                                                   Module#===:  2,562,446 ( 2.6%)
                                                 rb_ary_entry:  2,354,546 ( 2.4%)
                                                 Kernel#is_a?:  1,424,092 ( 1.5%)
                                   rb_vm_opt_getconstant_path:  1,344,923 ( 1.4%)
                                               Thread.current:  1,300,822 ( 1.3%)
                                         rb_zjit_defined_ivar:  1,222,613 ( 1.3%)
                                            rb_vm_invokeblock:  1,184,555 ( 1.2%)
                                                     Hash#[]=:  1,061,969 ( 1.1%)
                                                  rb_ary_push:  1,024,987 ( 1.1%)
                                              rb_ary_new_capa:    904,003 ( 0.9%)
                                            rb_str_buf_append:    833,782 ( 0.9%)
                                   rb_class_allocate_instance:    822,626 ( 0.8%)
                                                   Hash#fetch:    755,913 ( 0.8%)
    ```

    railsbench:

    ```
    Top-20 calls to C functions from JIT code (74.8% of total 189,170,268):
                   rb_vm_opt_send_without_block: 29,870,307 (15.8%)
                      rb_vm_setinstancevariable: 17,631,199 ( 9.3%)
                                   rb_hash_aref: 16,928,890 ( 8.9%)
                                    rb_ivar_get: 14,441,240 ( 7.6%)
                                rb_vm_env_write: 11,571,001 ( 6.1%)
                                     rb_vm_send: 11,153,457 ( 5.9%)
                              rb_vm_invokesuper:  7,568,267 ( 4.0%)
                                     Module#===:  6,065,923 ( 3.2%)
                                       Hash#[]=:  2,842,990 ( 1.5%)
                                   rb_ary_entry:  2,766,125 ( 1.5%)
                                    rb_ary_push:  2,722,079 ( 1.4%)
                              rb_vm_invokeblock:  2,594,398 ( 1.4%)
                                 Thread.current:  2,560,129 ( 1.4%)
                                 rb_str_getbyte:  1,965,627 ( 1.0%)
                                   Kernel#is_a?:  1,961,815 ( 1.0%)
                     rb_vm_opt_getconstant_path:  1,863,678 ( 1.0%)
                          rb_hash_new_with_size:  1,796,456 ( 0.9%)
                     rb_class_allocate_instance:  1,785,043 ( 0.9%)
                                  String#empty?:  1,713,414 ( 0.9%)
                                rb_ary_new_capa:  1,678,834 ( 0.9%)
    ```

    shipit:

    ```
    Top-20 calls to C functions from JIT code (83.4% of total 182,402,821):
                                 rb_vm_opt_send_without_block: 45,753,484 (25.1%)
                                                  rb_ivar_get: 21,020,650 (11.5%)
                                    rb_vm_setinstancevariable: 17,528,603 ( 9.6%)
                                                 rb_hash_aref: 11,892,856 ( 6.5%)
                                                   rb_vm_send: 11,723,471 ( 6.4%)
                                              rb_vm_env_write: 10,434,452 ( 5.7%)
                                                   Module#===:  4,225,048 ( 2.3%)
                                            rb_vm_invokesuper:  3,705,906 ( 2.0%)
                                               Thread.current:  3,337,603 ( 1.8%)
                                                 rb_ary_entry:  3,114,378 ( 1.7%)
                                                     Hash#[]=:  2,509,912 ( 1.4%)
                                                 Array#empty?:  2,282,994 ( 1.3%)
                                            rb_vm_invokeblock:  2,210,511 ( 1.2%)
                                                   Hash#fetch:  2,017,960 ( 1.1%)
                                                        _bi20:  1,975,147 ( 1.1%)
                                         rb_zjit_defined_ivar:  1,897,127 ( 1.0%)
                                   rb_vm_opt_getconstant_path:  1,813,294 ( 1.0%)
                                              rb_ary_new_capa:  1,615,406 ( 0.9%)
                                                 Kernel#is_a?:  1,567,854 ( 0.9%)
                                   rb_class_allocate_instance:  1,560,035 ( 0.9%)
    ```

    Thanks to @eregon for the idea.

    Co-authored-by: Jacob Denbeaux <jacob.denbeaux@shopify.com>
    Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 28908a95c4d303e3cf12f03b0b475a48778435a7
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-20 05:46:12 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-20 05:47:14 +0900

    Fix provided features spec with --repeat 2

commit 7840ef2f4370d22c5d793e2d32537d6bf9923ce6
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-19 22:51:09 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-19 22:51:09 +0900

    Win32: Allow some mingw implemeations to use old msvcrt

commit f3f3a40cdc7ade6c35b5a38016a0c72f0bb09315
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-19 19:37:02 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 20:36:40 +0900

    The C-API specs cache should be invalidated when C-API specs .c & .h files are changed

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15239

commit 85cd08e4f9f422357207ace0a53b9ec8020df976
  Author:     Charles Oliver Nutter <headius@headius.com>
  AuthorDate: 2025-11-19 10:38:20 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 20:36:40 +0900

    Update to ruby/spec@2e11d2a

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15239

commit bbb4c7b88bf4fca08487d6b115b1031f56ac9cf6
  Author:     Charles Oliver Nutter <headius@headius.com>
  AuthorDate: 2025-11-19 10:38:18 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 20:36:40 +0900

    Update to ruby/mspec@bd8efcf

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15239

commit 169d6c7cadce7a27e62d9943559b9f712ea231f8
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-19 15:29:56 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 16:43:24 +0900

    [ruby/rubygems] Use method_defined?(:method, false)

    https://github.com/ruby/rubygems/commit/6cc7d71dac

commit 339c1731b260e2fcc52e0dfeab0e16f7591af36d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-19 16:41:04 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-19 16:41:04 +0900

    Revert "[Bug #21697] Keep revision.h outside VCS"

    This reverts commit 8986115e0a2a989f2b2ea5945f02c7a13989d640.
    `RELEASE_DATE` including `YEAR`, `MONTH`, `DAY` are mandatory, while
    `REVISION` is not.

commit 8986115e0a2a989f2b2ea5945f02c7a13989d640
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-19 15:12:28 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-19 16:19:51 +0900

    [Bug #21697] Keep revision.h outside VCS

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15242

commit e31dc5f193e7bc87b0bf9a672f2ca184810cf098
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-19 16:05:12 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-19 16:05:12 +0900

    Fix a typo

commit 1443f89d6942e19516a0fb10d25876021202ec5e
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-17 04:46:03 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-19 11:57:29 +0900

    [DOC] Tweaks for String#unicode_normalize

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15207

commit 319001192d59bc57923ba3838eb83685cb3af014
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-19 11:56:14 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-19 11:56:14 +0900

    [DOC] Tweaks for String#dump and String#undump

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15180

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit a6cecda1dcf57d4db09c92706f69b018915f6530
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-19 11:02:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 11:31:03 +0900

    [ruby/etc] Win32: Drop support for older MSVC

    Ruby 2.7 supports MSVC 12.0/_MSC_VER 1800 or later.

    https://github.com/ruby/etc/commit/6f4404ec88

commit 685903e56efd9e4db178d8209c4eb079127b625a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-19 11:00:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 11:31:03 +0900

    [ruby/etc] Bump up the required ruby version to 2.7

    https://github.com/ruby/etc/commit/d047bb6856

commit f040b94cf559855ab3755f6333fb2d4a8f81e0d5
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-18 11:39:02 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 11:08:49 +0900

    [ruby/mmtk] Ensure not blocking for GC in rb_gc_impl_before_fork

    In rb_gc_impl_before_fork, it locks the VM and barriers all the Ractors
    before calling mmtk_before_fork. However, since rb_mmtk_block_for_gc is
    a barrier point, one or more Ractors could be paused there. However,
    mmtk_before_fork is not compatible with that because it assumes that the
    MMTk workers are idle, but the workers are not idle because they are
    busy working on a GC.

    This commit essentially implements a trylock. It will optimistically
    lock but will release the lock if it detects that any other Ractors are
    waiting in rb_mmtk_block_for_gc.

    For example, the following script demonstrates the issue:

        puts "Hello #{Process.pid}"

        100.times do |i|
          puts "i = #{i}"
          Ractor.new(i) do |j|
            puts "Ractor #{j} hello"
            1000.times do |i|
              s = "#{j}-#{i}"
            end
            Ractor.receive
            puts "Ractor #{j} goodbye"
          end
          pid = fork { }
          puts "Child pid is #{pid}"
          _, status = Process.waitpid2 pid
          puts status.success?
        end

        puts "Goodbye"

    We can see the MMTk worker thread is waiting to start the GC:

        #4  0x00007ffff66538b1 in rb_mmtk_stop_the_world () at gc/mmtk/mmtk.c:101
        #5  0x00007ffff6d04caf in mmtk_ruby::collection::{impl#0}::stop_all_mutators<mmtk::scheduler::gc_work::{impl#14}::do_work::{closure_env#0}<mmtk::plan::immix::gc_work::ImmixGCWorkContext<mmtk_ruby::Ruby, 0>>> (_tls=..., mutator_visitor=...) at src/collection.rs:23

    However, the mutator thread is stuck in mmtk_before_fork trying to stop
    that worker thread:

        #4  0x00007ffff6c0b621 in std::sys::thread::unix::Thread::join () at library/std/src/sys/thread/unix.rs:134
        #5  0x00007ffff6658b6e in std::thread::JoinInner<()>::join<()> (self=...)
        #6  0x00007ffff6658d4c in std::thread::JoinHandle<()>::join<()> (self=...)
        #7  0x00007ffff665795e in mmtk_ruby::binding::RubyBinding::join_all_gc_threads (self=0x7ffff72462d0 <mmtk_ruby::BINDING+8>) at src/binding.rs:115
        #8  0x00007ffff66561a8 in mmtk_ruby::api::mmtk_before_fork () at src/api.rs:309
        #9  0x00007ffff66556ff in rb_gc_impl_before_fork (objspace_ptr=0x555555d17980) at gc/mmtk/mmtk.c:1054
        #10 0x00005555556bbc3e in rb_gc_before_fork () at gc.c:5429

    https://github.com/ruby/mmtk/commit/1a629504a7

commit 69b1c567d71b269edb59a026a9a9f04a6a9a0a49
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-18 11:28:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 11:08:49 +0900

    [ruby/mmtk] Add VM barrier in rb_gc_impl_before_fork

    We need the VM barrier in rb_gc_impl_before_fork to stop the other Ractors
    because otherwise they could be allocating objects in the fast path which
    could be calling mmtk_add_obj_free_candidate. Since mmtk_add_obj_free_candidate
    acquires a lock on obj_free_candidates in weak_proc.rs, this lock may not
    be released in the child process after the Ractor dies.

    For example, the following script demonstrates the issue:

        puts "Hello #{Process.pid}"

        100.times do |i|
          puts "i = #{i}"
          Ractor.new(i) do |j|
            puts "Ractor #{j} hello"
            1000.times do |i|
              s = "#{j}-#{i}"
            end
            Ractor.receive
            puts "Ractor #{j} goodbye"
          end
          pid = fork { }
          puts "Child pid is #{pid}"
          _, status = Process.waitpid2 pid
          puts status.success?
        end

        puts "Goodbye"

    In the child process, we can see that it is stuck trying to acquire the
    lock on obj_free_candidates:

        #5  0x00007192bfb53f10 in mmtk_ruby::weak_proc::WeakProcessor::get_all_obj_free_candidates (self=0x7192c0657498 <mmtk_ruby::BINDING+72>) at src/weak_proc.rs:52
        #6  0x00007192bfa634c3 in mmtk_ruby::api::mmtk_get_all_obj_free_candidates () at src/api.rs:295
        #7  0x00007192bfa61d50 in rb_gc_impl_shutdown_call_finalizer (objspace_ptr=0x578c17abfc50) at gc/mmtk/mmtk.c:1032
        #8  0x0000578c1601e48e in rb_ec_finalize (ec=0x578c17ac06d0) at eval.c:166
        #9  rb_ec_cleanup (ec=<optimized out>, ex=<optimized out>) at eval.c:257
        #10 0x0000578c1601ebf6 in ruby_cleanup (ex=<optimized out>) at eval.c:180
        #11 ruby_stop (ex=<optimized out>) at eval.c:292
        #12 0x0000578c16127124 in rb_f_fork (obj=<optimized out>) at process.c:4291
        #13 rb_f_fork (obj=<optimized out>) at process.c:4281

    https://github.com/ruby/mmtk/commit/eb4b229858

commit 1f2913e7417f5193ba52028e2a18c1e01b10d358
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-12-09 15:06:13 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-19 11:03:42 +0900

    Win32: Drop support for older than MSVC 14.0/_MSC_VER 1900

    Visual C++ 2015 (14.0):
    - _MSC_VER: 1900
    - MSVCRT_VERSION: 140

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15238

commit 7743123551eded908f0606319a66df1f123c7cd9
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-12-09 15:04:01 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-19 11:03:42 +0900

    Win32: Drop support for older than MSVC 12.0/_MSC_VER 1800

    Visual C++ 2013 (12.0):
    - _MSC_VER: 1800
    - MSVCRT_VERSION: 120

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15238

commit 25f9e678bfb118309300de90803fe1ba4751f7da
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-12-09 15:00:05 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-19 11:03:42 +0900

    Win32: Drop support for older than MSVC 10.0/_MSC_VER 1600

    Visual C++ 2010 (10.0):
    - _MSC_VER: 1600
    - MSVCRT_VERSION: 100

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15238

commit 3dd39134cde1a5ecd3c5d3128afcabd3c95e5bea
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-12-09 14:58:15 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-19 11:03:42 +0900

    Win32: Drop support for older than MSVC 9.0/_MSC_VER 1500

    Visual C++ 2008 (9.0):
    - _MSC_VER: 1500
    - MSVCRT_VERSION: 90

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15238

commit cdb9893c552f67a6065dcb165b2040d35c57aee3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-12-09 14:56:58 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-19 11:03:42 +0900

    Win32: Drop support for older than MSVC 8.0/_MSC_VER 1400

    Visual C++ 2005 (8.0):
    - _MSC_VER: 1400
    - MSVCRT_VERSION: 80

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15238

commit 1979f8c07d6c2794dda7b482372c9dc0e9f305b0
  Author:     Alexander Momchilov <alexander.momchilov@shopify.com>
  AuthorDate: 2025-11-15 00:14:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 11:01:57 +0900

    [ruby/prism] Add docs for super nodes

    https://github.com/ruby/prism/commit/69abcdbb18

commit 3b9539176bc37b3e95864b04b0eef1263f434eef
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-18 05:33:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 10:37:57 +0900

    [ruby/rubygems] Warn users that `bundle` now display the help:

    - In https://github.com/ruby/rubygems/commit/31d67ecc056fb5a9193bc66a6e69e21576a87702
      we enforced the new behaviour where running `bundle` no longer
      installs gems but displays the help.
      Users now have a way to configure their preferred default command using
      the `BUNDLE_DEFAULT_CLI_COMMAND` flag.

      With the preview of Ruby 4.0 now being released, some people will
      start to see this new change.

      The problem is that the previous behaviour had existed for like an
      eternity and we didn't warn users about this change in advance.
      I'd like to provide a deprecation/warning cycle because this is
      confusing users already and this breaks various CI setup that now
      needs to be changed immediately.

    https://github.com/ruby/rubygems/commit/e415480ac5

commit 83b0cfe1b5d5cab1328aeeac0c1c6eb2484b66de
  Author:     Cody Cutrer <cody@instructure.com>
  AuthorDate: 2023-08-31 07:52:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 10:27:25 +0900

    [ruby/rubygems] Handle BUNDLER_VERSION being set to an empty string

    This is useful, in case you're using Docker, and an upstream
    Dockerfile sets BUNDLER_VERSION to something you don't want.
    It's impossible to unset it... only override to be the empty
    string.

    https://github.com/ruby/rubygems/commit/ffa3eb9ac6

commit 1f299dd309a963f533f107c576966a723568820f
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-19 08:42:53 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-19 10:02:06 +0900

    Fix crash in optimal size for large T_OBJECT

    Previously any T_OBJECT with >= 94 IVARs would crash during compaction
    attempting to make an object too large to embed.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15236

commit 4423facbffd5bd523541ebf42dc274272b1de732
  Author:     Go Sueyoshi <sue445@users.noreply.github.com>
  AuthorDate: 2025-11-19 09:46:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 09:47:07 +0900

    [ruby/rubygems] Add `--ext=go` to `bundle gem`
    (https://github.com/ruby/rubygems/pull/8183)

    * Add new gem templates

    * Add `--ext=go` in `bundle gem`

    * Add setup-go to .github/workflows/main.yml

    * Embed go version in go.mod

    * Use go in bundler CI

    * Add example method to template

    * Install Go in .circleci/config.yml

    * Install Go in .gitlab-ci.yml

    * Allow hard tabs in go template

    * Run `rake update_manifest`

    * Fix test

    * Move go_gem to gemspec

    Respect to 9b0ec80

    * nits: :golf:

    * includes valid module name in go.mod

    * generate header file

    * Run `go mod tidy` to create `go.sum`

    * Check if `go.sum` is generated only when Go is installed

    To avoid test failure in environments where Go is not installed

    * Run CI

    * Workaround for hung up

    c.f. https://github.com/rubygems/rubygems/actions/runs/11639408044/job/32415545422

    * Write man for --ext=go

    * Re-generate man with `./bin/rake man:build`

    * pinning :pushpin:

    * Update with `./bin/rake man:build`

    * nits: Extract to method

    * nits: Use `sys_exec` instead of `system`

    * Clean go module cache after test

    Workaround following error

    ```
    1) bundle gem gem naming with underscore --ext parameter set with go includes go_gem extension in extconf.rb
       Failure/Error: FileUtils.rm_r(dir)

       Errno::EACCES:
         Permission denied @ apply2files - /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go
       # ./spec/support/helpers.rb:37:in `block in reset!'
       # ./spec/support/helpers.rb:21:in `each'
       # ./spec/support/helpers.rb:21:in `reset!'
       # ./spec/spec_helper.rb:130:in `block (2 levels) in <top (required)>'
       # /home/runner/work/rubygems/rubygems/lib/rubygems.rb:303:in `load'
       # /home/runner/work/rubygems/rubygems/lib/rubygems.rb:303:in `activate_and_load_bin_path'
    ```

    Files installed with `go get` have permissions set to 444
    ref. https://github.com/golang/go/issues/35615

    ```
    $ ls -l /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go
    -r--r--r-- 1 runner runner 42320 Nov 15 06:38 /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go
    ```

    So they cannot be deleted by `FileUtils.rm_r`.
    Therefore, this is necessary to execute `go clean -modcache` separately from `FileUtils.rm_r` to circumvent it.

    * Remove needless changes

    ref. https://github.com/ruby/rubygems/pull/8183#discussion_r2532902051

    * ci: setup-go is needless

    * Don't run go command in `bundle gem`

    ref. https://github.com/ruby/rubygems/pull/8183#discussion_r2532765470

    * Revert unrelated date changes

    ---------

    https://github.com/ruby/rubygems/commit/260d7d60b3

    Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>

commit 0f89fa97e3629af427282b5b6a800d2b97dd7d65
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-19 09:36:29 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-19 09:36:29 +0900

    ZJIT: Inline BasicObject#! (#15201)

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 6f6a9ead961feb5c2d794bf9d1594c9e8e1de6ab
  Author:     eileencodes <eileencodes@gmail.com>
  AuthorDate: 2025-11-19 01:56:09 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-19 07:47:19 +0900

    [ruby/rubygems] Replace instance method look up in plugin installer

    `Gem::Installer.instance_methods(false).include?(:generate_plugins)` is
    63x slower than `Gem::Installer.method_defined?(:generate_plugins)` in a
    microbenchmark. The latter is a direct lookup, whereas the former will
    create an array, which will be slower.

    ```ruby
    require "benchmark/ips"

    Benchmark.ips do |x|
      x.report "instance_methods" do
        Gem::Installer.instance_methods(false).include?(:generate_plugins)
      end

      x.report "method_defined" do
        Gem::Installer.method_defined?(:generate_plugins)
      end

      x.compare!
    end
    ```

    ```
    $ ruby -I lib/ benchmark_methods.rb
    ruby 3.4.4 (2025-05-14 revision https://github.com/ruby/rubygems/commit/a38531fd3f) +PRISM [arm64-darwin23]
    Warming up --------------------------------------
        instance_methods    58.449k i/100ms
          method_defined     3.375M i/100ms
    Calculating -------------------------------------
        instance_methods    541.874k (± 5.7%) i/s    (1.85 μs/i) -      2.747M in   5.087825s
          method_defined     34.263M (± 1.1%) i/s   (29.19 ns/i) -    172.135M in   5.024524s

    Comparison:
          method_defined: 34263189.1 i/s
        instance_methods:   541874.3 i/s - 63.23x  slower
    ```

    This does not make much difference in an overall benchmark or profile,
    but this is more idiomatic Ruby than the prior code.

    https://github.com/ruby/rubygems/commit/49dec52cb2

commit d5d12efde75515997d046448aa36eb9ed893517b
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-19 07:45:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-19 07:45:59 +0900

    [ruby/json] parser.c: Remove unued JSON_ParserStruct.parsing_name

    https://github.com/ruby/json/commit/ab5efca015

commit f3f3e76882d01d5e0a006ff731b70053997396e8
  Author:     Jacob <jacob.denbeaux@shopify.com>
  AuthorDate: 2025-11-19 07:32:11 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-19 07:32:11 +0900

    Extract `KW_SPECIFIED_BITS_MAX` for JITs (GH-15039)

    Rename to `VM_KW_SPECIFIED_BITS_MAX` now that it's in `vm_core.h`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15039

    Merged-By: XrXr

commit cbe65ebbc3f2b77316d50b94e84df1c00822d0f2
  Author:     Shannon Skipper <shannonskipper@gmail.com>
  AuthorDate: 2025-11-17 02:01:50 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-19 06:57:47 +0900

    ZJIT: Skip empty counter sections in stats

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15206

commit 656600371239a4a62e7a26e148af70e98d0fa979
  Author:     Shannon Skipper <shannonskipper@gmail.com>
  AuthorDate: 2025-11-17 01:21:20 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-19 06:57:47 +0900

    ZJIT: Avoid `NaN%` ratio appearing in stats

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15206

commit ff2d2fc1bd9aa6a768e85276d7ba69bbe5af9572
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-19 04:24:49 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-19 04:24:49 +0900

    YJIT: omit single ractor mode assumption for `proc#call` (#15092)

    The comptime receiver, which is a proc, is either shareable or from this
    ractor so we don't need to assume single-ractor mode. We should never get
    the "defined with an un-shareable Proc in a different ractor" error.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit ce73b6c0b6a81c70e5ac4f4e43dea05cd23bab20
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-19 01:26:08 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 02:54:40 +0900

    ZJIT: Pass the result of GuardNotFrozen to StoreField and WriteBarrier

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15055

commit 79633437e1a971abd5dda54dc584eec3adb4e7a7
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-19 00:41:15 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 02:54:40 +0900

    ZJIT: Rename the operand of Insn::GuardNotFrozen from val to recv

    * When writing to an object, the receiver should be checked if it's frozen,
      not the value, so this avoids an error-prone autocomplete.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15055

commit 0e10dfded0498cf71efb9fc61a804db6db540009
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-05 04:37:57 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 02:54:40 +0900

    ZJIT: Inline setting Struct fields

    * Add Insn::StoreField and Insn::WriteBarrier

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15055

commit f84bbb423836d9d0d018b8ab71ecceb5868fd5be
  Author:     Godfrey Chan <godfreykfc@gmail.com>
  AuthorDate: 2025-11-18 01:15:16 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-19 01:35:09 +0900

    ZJIT: add support for lazy `RubyVM::ZJIT.enable`

    This implements Shopify#854:

    - Splits boot-time and enable-time initialization,
      tracks progress with `InitializationState` enum

    - Introduces `RubyVM::ZJIT.enable` Ruby method for
      enabling the JIT lazily, if not already enabled

    - Introduces `--zjit-disable` flag, which can be
      used alongside the other `--zjit-*` flags but
      prevents enabling the JIT at boot time

    - Adds ZJIT infra to support JIT hooks, but this
      is not currently exercised (Shopify/ruby#667)

    Left for future enhancements:

    - Support kwargs for overriding the CLI flags in
      `RubyVM::ZJIT.enable`

    Closes Shopify#854

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15219

commit c38486ffef14f4991288afe9c0d8d23f57b617fc
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-11-18 21:44:40 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-11-19 00:34:06 +0900

    ZJIT: Validate types for all instructions

    * This can catch subtle errors early, so avoid a fallback case and
      handle every instruction explicitly.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15230

commit 522b7d823fb00821eea8d0cf13f33a73e91c0ab7
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-11-18 21:18:26 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 21:49:38 +0900

    [ruby/openssl] ssl: fix test_pqc_sigalg on RHEL 9.7

    RHEL 9.7 ships OpenSSL 3.5.1 with ML-DSA support, but it is disabled
    for TLS by default, according to the system configuration file:
    /etc/crypto-policies/back-ends/opensslcnf.config

    Specify SSLContext#sigalgs to override the default list.

    https://github.com/ruby/openssl/commit/fac3a26748

commit f168a6d0c2485b3bad5883865cc68ed16fd2ae5f
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-18 18:32:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:30 +0900

    [ruby/rubygems] Handle to reverse order result in Ruby 3.2

    https://github.com/ruby/rubygems/actions/runs/19458155903/job/55676075439?pr=3857

    ```
           -Did you mean 'methods' or 'method'?
           +Could not find gem 'methosd'.
           +Did you mean 'method' or 'methods'?
    ```

    https://github.com/ruby/rubygems/commit/ab7d0fc7b0

commit e78a96b729d2817967857157cef476e1da295c09
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-18 15:15:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:30 +0900

    [ruby/rubygems] Spelling with the latest version of did_you_mean

    https://github.com/ruby/rubygems/commit/d604c1d1cb

commit c87b36aba1706c907caed5d7189103c27aaf81c0
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-18 14:44:29 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:29 +0900

    [ruby/rubygems] bin/rubocop -a

    https://github.com/ruby/rubygems/commit/fee8dd2f08

commit e3c483b51d036664cd1d0da0896114ce38550fc4
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-18 14:43:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:29 +0900

    [ruby/rubygems] Removed unused SimilarityDetector

    https://github.com/ruby/rubygems/commit/40ace48651

commit 2c169e15884d163e0a3b939f9d6a30b55c3e3b4f
  Author:     Austin Pray <austin@austinpray.com>
  AuthorDate: 2020-08-02 12:14:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:28 +0900

    [ruby/rubygems] More tests

    https://github.com/ruby/rubygems/commit/210fa87f65

commit 55afec32ff255b74ee7490177ed7ae0f4b5bde29
  Author:     Austin Pray <austin@austinpray.com>
  AuthorDate: 2020-08-02 11:53:48 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:28 +0900

    [ruby/rubygems] fix tests

    https://github.com/ruby/rubygems/commit/1dc669a0ab

commit dd6ccb44f0a5207ea5a0308f0917a23f7157dcfe
  Author:     Austin Pray <austin@austinpray.com>
  AuthorDate: 2020-08-02 10:30:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:28 +0900

    [ruby/rubygems] Progressively enhance if DidYouMean is available

    https://github.com/ruby/rubygems/commit/a02353fb96

commit 6aa16246f78de49df5ebd6dc5ea3a8c26830025a
  Author:     Austin Pray <austin@austinpray.com>
  AuthorDate: 2020-07-27 07:35:02 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:27 +0900

    [ruby/rubygems] Rubocop

    https://github.com/ruby/rubygems/commit/a6bc30a827

commit f3e8bc877076e4d0759cd788c4a8f87d88ffc836
  Author:     Austin Pray <austin@austinpray.com>
  AuthorDate: 2020-07-27 06:45:41 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 19:38:26 +0900

    [ruby/rubygems] use DidYouMean::SpellChecker for gem suggestions

    replaces Bundler::SimilarityDetector with DidYouMean::SpellChecker

    https://github.com/ruby/rubygems/commit/959bea1506

commit a1c76c7e3aeb403132a486ce96e3ae8a5ee0ea0a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-18 18:47:32 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 18:47:50 +0900

    Fixed conflict of vendor_gems.rb

commit 85abc59c32fc79c88db98bb0b9d9665254b0ff98
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-10-27 20:35:09 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-11-18 17:43:24 +0900

    [DOC] Add documentation about Ruby's VM stack

  Notes:
    Merged: https://github.com/ruby/ruby/pull/14964

commit f272aabb5c007d4a8f15e141edbd1bf2d079c5fc
  Author:     Scott Myron <samyron@gmail.com>
  AuthorDate: 2025-11-18 12:08:29 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 17:20:51 +0900

    [ruby/json] Use #if instead of #ifdef when checking for JSON_DEBUG so debugging code is not generated when JSON_DEBUG=0.

    https://github.com/ruby/json/commit/4f1adb10d3

commit 54c07383095957c49d91300af6012ff43d41160f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-18 16:10:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 16:17:31 +0900

    [ruby/resolv] Fix syntax error on older versions

    https://github.com/ruby/resolv/commit/599f78c451

commit ccdf83f17a115b53749ec22816467b2aa4f0ddc2
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-11-18 15:52:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 15:52:35 +0900

    Update bundled gems list as of 2025-11-18

commit 27770210615a56655af3837fd2d4c250354ea226
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-18 11:58:00 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:55:25 +0900

    Downgrade net-http 0.7.0 because JRuby is not working

commit 59461d123773902be41ac472aed3d52931d08e6d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 12:47:22 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:55:03 +0900

    Use released version of net-http-0.8.0

commit 0af941db7a9534587e72a3a9cc96cedda022f13d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 14:25:17 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:54:01 +0900

    [ruby/rubygems] Update resolv-0.6.3

    https://github.com/ruby/rubygems/commit/778426fb73

commit 32716e76ee14648cb456f3e0bea16c5736afcc6a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 14:18:55 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:54:01 +0900

    [ruby/rubygems] Update optparse-0.8.0

    https://github.com/ruby/rubygems/commit/4e02243f66

commit 8cfed30403197dc17bb2705d8aae3dcdf976bd38
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 12:54:28 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:54:00 +0900

    [ruby/rubygems] Update fileutils-1.8.0

    https://github.com/ruby/rubygems/commit/f8fe7a5208

commit 6ccc41998f81bd9b044736c2813712898853e22d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 12:51:48 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:53:59 +0900

    [ruby/rubygems] Update timeout-0.4.4

    https://github.com/ruby/rubygems/commit/b6deff99c9

commit e130375661540b47267e3262a739b7b276c3b101
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 12:50:49 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:53:58 +0900

    [ruby/rubygems] Update URI-1.1.1

    https://github.com/ruby/rubygems/commit/07f2daf51e

commit bfefb205ff4b549c0e48a1a70c45853e16a93a08
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 12:11:51 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-18 14:53:56 +0900

    [ruby/rubygems] Use released version of net-http-persistent-4.0.6

    https://github.com/ruby/rubygems/commit/b237f759b0

commit 5ccaeee2e89310d52d15469719c98d02f103b5aa
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-17 08:53:00 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 13:53:07 +0900

    [ruby/rubygems] Undeprecate `Gem::Version.new(nil)`

    It seems like we were trying to deprecate passing `nil` to
    Gem::Version.new.  This breaks existing code, and I don't think there is
    a good reason to deprecate this usage.

    I believe what we want to prevent is the following code:

    ```ruby
    Gem::Specification.new do |spec|
      spec.version = nil
      # suddenly the spec version is 0!
      p spec.version
    end
    ```

    This commit allows people to manually construct `Gem::Version.new(nil)`,
    but when someone assigns `nil` as the Gem specification version, it sets
    the spec version to `nil` (making the specification invalid).  People
    who manually construct `Gem::Version` objects and use nil should be
    allowed to do it, and `Gem::Version.new(nil) == Gem::Version.new("0")`,
    but people who assign `nil` in a gemspec will get an invalid gemspec.

    I think deprecation started
    [here](https://github.com/ruby/rubygems/pull/2203) but there doesn't
    seem to be a reason to do it.

    Fixes https://github.com/ruby/rubygems/pull/9052

    https://github.com/ruby/rubygems/commit/ded5e909c2

commit 0ce6eed7b91a4927ebe843b0be53822f34dd993f
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-18 07:07:05 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-18 11:32:49 +0900

    Unskip test_alternative_pattern_nested for MMTk

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15223

commit fa8799ca6d75b27d4958b8e0ee1dfadc16e18433
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-18 07:05:36 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-18 11:32:49 +0900

    Fix EnvUtil.current_parser for modular GC

    The regexp used in EnvUtil.current_parser did not allow square brackets
    for feature names. Modular GC uses square brackets for the GC name (such
    as +GC[mmtk]).

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15223

commit 02279f01ac8408dbb6134a1f636537f3d4e4775f
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 11:17:19 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 09:19:31 +0900

    [ruby/rubygems] Removed deprecated -C option from gem build

    https://github.com/ruby/rubygems/commit/3471646d43

commit 093dbbbd350cf1288c12287629db932faaab1b55
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 15:12:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 07:57:29 +0900

    [ruby/rubygems] Removed unused deprecate loading

    https://github.com/ruby/rubygems/commit/a49d315ecd

commit c0256d1d5d397991e4f2dec6359339f406aa3dd8
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-18 03:41:26 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-11-18 03:46:32 +0900

    [DOC] Update GC.stat and GC.stat_heap documentation

    I noticed some of the keys have been gone or renamed for a while.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15218

commit f9e31f4307b23fe3dbb857f589350cde79155abd
  Author:     Sander Verdonschot <sander.verdonschot@shopify.com>
  AuthorDate: 2025-11-15 08:22:20 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 03:01:27 +0900

    [ruby/time] Defer default year for zone_offset until needed

    While parsing ISO 8601 timestamps like `2025-11-13T19:34:23.681726000Z`
    I noticed that a lot of time was spent to compute a default `year`
    argument to `zone_offset`. For ISO 8601, that year is never used, as
    all valid time zone designators match one of the earlier cases.

    This commit moves the computation of the default `year` value to just
    before it is used. This results in a 15% speedup parsing ISO 8601
    timestamps on Mac OS X.

    https://github.com/ruby/time/commit/4a0bcbe575

commit 371a295e190f5b1191400a6ed6944e85ed035598
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-13 02:51:47 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-18 00:53:47 +0900

    Fix improper termlen fill in `str_duplicate_setup_embed`.

    When term len != 1 (for example: Encoding::UTF32BE), term fill is wrong size.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15156

commit 9de66a8c5150266d9f827a11300cd8bcd4b64d4f
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-17 21:43:20 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-18 00:14:21 +0900

    [ruby/prism] Remove now obsolete todos

    https://github.com/ruby/prism/commit/b00d098f9a

commit d66b37e3d8737451ae76b40823641582bd451f8f
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-17 21:02:32 +0900
  Commit:     Kevin Newton <kddnewton@gmail.com>
  CommitDate: 2025-11-18 00:11:40 +0900

    Remove alternation pattern matching handling from the prism compiler

    Since https://github.com/ruby/ruby/pull/15212 these are proper syntax
    errors, so no need to handle this explicitly anymore.

    Also updated the example in the docs for this

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15215

commit a0ef236678c0e79d2f4ec369d3cbf2095013803b
  Author:     NARUSE, Yui <naruse@airemix.jp>
  AuthorDate: 2025-11-17 22:30:41 +0900
  Commit:     NARUSE, Yui <naruse@airemix.jp>
  CommitDate: 2025-11-17 22:30:41 +0900

    remove old code

commit 4fa6e9938cfb9458abd876ad4219a6648bfe1c96
  Author:     NARUSE, Yui <naruse@airemix.jp>
  AuthorDate: 2025-11-17 21:38:51 +0900
  Commit:     NARUSE, Yui <naruse@airemix.jp>
  CommitDate: 2025-11-17 21:39:04 +0900

    strnlen is not used now

commit 3bbd45dd86ba7a00319ba482bd09b15fc86b7466
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-17 18:11:47 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-17 21:34:44 +0900

    Fix `RUBY_API_VERSION_NAME` fallback definition

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15214

commit c32eb727bdde8b3e840198aaffb049a955d94783
  Author:     NARUSE, Yui <naruse@airemix.jp>
  AuthorDate: 2025-11-17 17:05:50 +0900
  Commit:     NARUSE, Yui <naruse@airemix.jp>
  CommitDate: 2025-11-17 17:06:27 +0900

    The prev_ver of 4.0.0 is 3.4.0

commit 3d8dfbf51e0133e76e5dca4f408c8f7efb6698b3
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-17 16:07:46 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-17 16:08:31 +0900

    Skip TestCommitEmail if git is not available.

    https://github.com/ruby/actions/actions/runs/19420968008/job/55558315338

    ```
        1) Error:
      TestCommitEmail#test_sendmail_encoding:
      Test::Unit::ProxyError: No such file or directory - git
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/lib/open3.rb:534:in 'Kernel#spawn'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/lib/open3.rb:534:in 'Open3.popen_run'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/lib/open3.rb:379:in 'Open3.popen2'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/lib/open3.rb:785:in 'Open3.capture2'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/tool/test/test_commit_email.rb:89:in 'TestCommitEmail#git'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/tool/test/test_commit_email.rb:13:in 'block in TestCommitEmail#setup'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/tool/test/test_commit_email.rb:12:in 'Dir.chdir'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/tool/test/test_commit_email.rb:12:in 'TestCommitEmail#setup'

        2) Error:
      TestCommitEmail#test_sendmail_encoding:
      Test::Unit::ProxyError: no implicit conversion of nil into String
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/tool/test/test_commit_email.rb:37:in 'File.unlink'
          /home/runner/work/actions/actions/ruby-4.0.0-preview2/tool/test/test_commit_email.rb:37:in 'TestCommitEmail#teardown'
    ```

commit 8d0105824f1cf722c1319496ed903b6a18efdafe
  Author:     Kevin Newton <kddnewton@gmail.com>
  AuthorDate: 2025-11-17 06:57:42 +0900
  Commit:     Kevin Newton <kddnewton@gmail.com>
  CommitDate: 2025-11-17 11:30:24 +0900

    Handle deeply nested capture variables syntax err

    When there are nested capture variables inside of a pattern match
    that has an alternation pattern, it is a syntax error. Currently it
    only adds a syntax error when it is at the top level of the pattern.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15212

commit 4870fbd04a015717800a8b5ab87da03e4d93e894
  Author:     Sergey Fedorov <vital.had@gmail.com>
  AuthorDate: 2025-11-17 08:49:56 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-17 08:49:56 +0900

    vm_dump.c: unbreak unwind on powerpc (#14650)

  Notes:
    Merged-By: ioquatix <samuel@codeotaku.com>

commit bdeee7012c37834a17712c7aaa8c602ae1208a8e
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-15 05:53:42 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-17 08:23:28 +0900

    Avoid allocating intermediate string in zone_str

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15198

commit 3cd30814d415bba94adb26bdc04aeed7ff240d92
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-17 04:53:53 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-17 06:27:06 +0900

    [DOC] Tweaks for String#unicode_normalize!

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15208

commit 17f3588a43ba2311f1ba7843a0293072861db760
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-17 05:17:22 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-17 06:26:46 +0900

    [DOC] Tweaks for String#unicode_normalized?

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15209

commit 43e26d02df845e9fc0ee597cbfa4425537e76020
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-17 05:40:43 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-17 06:26:11 +0900

    [DOC] Tweaks for String#unpack

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15210

commit 00521434a4a727e5a312ac9a42d48572ffa6388a
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-17 05:51:27 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-17 06:24:48 +0900

    [DOC] Tweaks for String#unpack1

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15211

commit bacd35626c500db1f27136b57363685e4da74d9b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-16 00:17:12 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-16 06:02:15 +0900

    Remove dead IBF_OBJECT_INTERNAL

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15203

commit 9e8a661f3baae0b86d5f83ac9719c8d3eb37a077
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-15 22:50:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-15 22:50:58 +0900

    [ruby/stringio] [DOC] Fix #seek link
    (https://github.com/ruby/stringio/pull/174)

    Method #seek deserves (and will get) documentation independent of that
    in class IO.

    Meanwhile, the link should go someplace sensible and useful.

    https://github.com/ruby/stringio/commit/d026549719

commit abf3056381a29847576d9d53242aaec5f7cc1ca4
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-15 22:48:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-15 22:49:03 +0900

    [ruby/stringio] [DOC] Doc for StringIO.size
    (https://github.com/ruby/stringio/pull/171)

    https://github.com/ruby/stringio/commit/95a111017a

commit b5c9269604f6dd816692b0c00b6a205f655e646a
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-15 22:47:46 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-15 22:48:14 +0900

    [ruby/stringio] [DOC] Tweaks for StringIO#each_line
    (https://github.com/ruby/stringio/pull/165)

    Adds to "Position":  pos inside a character.

    Makes a couple of minor corrections.

    ---------

    https://github.com/ruby/stringio/commit/ff332abafa

    Co-authored-by: Sutou Kouhei <kou@cozmixng.org>

commit 577cf5e3841e0ef142c192f9bd17d64707221402
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-15 12:07:44 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-15 12:23:44 +0900

    [DOC] Remove an obsolete file

    It has been merged into `doc/ruby/options.md` with
    `field_processing.md` at [ruby/ruby#10138](https://github.com/ruby/ruby/pull/10138).

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15200

commit 70b49b657122da7f5cbfa2b93f198dddf2e41c30
  Author:     YO4 <ysno@ac.auone-net.jp>
  AuthorDate: 2025-11-15 01:15:41 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-15 11:04:49 +0900

    refactor io_each_codepoint

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15199

commit f1765cd4025ff5b3048cb9f330f6624d39e5a742
  Author:     Herwin <herwinw@users.noreply.github.com>
  AuthorDate: 2025-11-15 02:36:06 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-15 10:18:56 +0900

    [Doc] Remove leftover references to namespace from box.md

    And fix the indentation a little bit, since `box` is one character
    longer than `ns`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15191

commit d7369f027b630c5a83aea0de0f014908f7597460
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-13 07:25:41 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-15 09:34:29 +0900

    ZJIT: Add individual tests for complex arg pass counters

    Make it easier to see what happens when one is changed.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15159

commit 6fabca80a3281c58c4ba501116cb9643756ca7c1
  Author:     Daisuke Fujimura (fd0) <booleanlabel@gmail.com>
  AuthorDate: 2025-11-14 23:53:20 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-15 08:37:23 +0900

    Add rubygems package to fix cygwin CI

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15187

commit eb6e36a87da8e87f181a006154c67f5dc4af990d
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-14 12:03:52 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-15 07:26:09 +0900

    Skip tests in TestThreadLockNativeThread when using LSAN

    These tests use NM threads but NT is not freed for MN thread, causing it
    to be reported as memory leaks in LSAN. For example:

        #1 0x62ee7bc67e99 in calloc1 gc/default/default.c:1495:12
        #2 0x62ee7bc7ba00 in rb_gc_impl_calloc gc/default/default.c:8216:5
        #3 0x62ee7bc631d1 in ruby_xcalloc_body gc.c:5221:12
        #4 0x62ee7bc5cdbc in ruby_xcalloc gc.c:5215:34
        #5 0x62ee7bdea4c6 in native_thread_alloc thread_pthread.c:2187:35
        #6 0x62ee7bdec31b in native_thread_check_and_create_shared thread_pthread_mn.c:429:39
        #7 0x62ee7bdea484 in native_thread_create_shared thread_pthread_mn.c:531:12
        #8 0x62ee7bdea1da in native_thread_create thread_pthread.c:2403:16
        #9 0x62ee7bdde2eb in thread_create_core thread.c:884:11
        #10 0x62ee7bde4466 in thread_initialize thread.c:992:16

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15184

commit 89849f3b4a7b4b7f27d5942cdaf25bbe4f99025b
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-15 05:20:01 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-15 06:35:12 +0900

    ZJIT: Support JIT-to-JIT calls to callees with optional parameters

     * Correct JIT entry points for optionals so each optional start with nil
    before their initialization routine runs. Establish
    `jit_entry_points[filled_opts_num]` gives the appropriate entry point
     * Correct number of HIR block parameters for each JIT entry point
     * Entry points that share the same ISEQ PC get separate entries since
       they start with different state. No more deduplication.
     * Reject post parameters. Was hidden behind check for optionals.
     * Make sure to visit every BB in iseq_to_hir(). Some wasn't visited
       when the initialization routine for an optional terminates the block
       in a `SideExit`. Remove the now impossible `FailedOptionalArguments`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15022

commit 5d35e24464ffdec1f79e40b64da87c31ca7281cf
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-11-15 05:05:19 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-15 06:35:12 +0900

    ZJIT: Check argument count matches callee's parameters

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15022

commit e417f6fec95ed08e78df7ad4f9d7e1e448608b29
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 05:11:26 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Remove dead function and set .freeze reason

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 491be5781a830c57c9a2df59862818286b211095
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 05:06:46 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_OR into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 22d2bb0132cc6ea28ba42f2fd7006409f76b12b9
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 05:04:33 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_AND into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 35c2c656da9dc6a023d14a697f2ab4e354785da5
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 05:03:17 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_GE into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 236366cbea309cac5e442e9703ba72e0af2c0f3c
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 05:01:59 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_LE into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 1c4240bcca3a2d917ce838b2fb1325b9bb7a0e62
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 05:00:18 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_LT into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 1170493203b2dfbf38f2aed36ebd30aaea731b27
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:58:07 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_MOD into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 0851c2aa6609aa53bcd038362699ff7fc7fdd2ff
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:54:40 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_DIV into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit f0e57720e45dc0ad2c06cf7b1ff02f683f3ccaaa
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:53:22 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_MULT into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 7a7035eeadef7eb5c11c80e40f6bbd2e87c029e4
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:50:13 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_NEQ into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit ad6ca3a7aaa6cd1306f1311148eb6673d1e64511
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:39:22 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_GT into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 4683ce5fecf65ffbbdeb800f9fc58e67d307a216
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:37:49 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_MINUS into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 47904d859e65d0ec4cd9ec41b1ed2c5f879f61c1
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:17:07 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_PLUS into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 94f701da4122f2cf2c9fab8f829a78cf481c04d8
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-15 03:56:20 +0900
  Commit:     Max Bernstein <tekknolagi@gmail.com>
  CommitDate: 2025-11-15 05:41:05 +0900

    ZJIT: Move special Fixnum BOP_EQ into cruby_methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15195

commit 8e01768a4113afb10c0be9925a63044af50ef062
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-15 04:49:09 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-15 04:49:09 +0900

    ZJIT: Break out CFunc send fallback stats (#15193)

    lobsters before:

    ```
    Top-14 instructions with uncategorized fallback reason (100.0% of total 5,583,226):
                 invokesuper: 3,039,693 (54.4%)
                 invokeblock: 1,181,433 (21.2%)
                 sendforward:   572,612 (10.3%)
                      opt_eq:   464,760 ( 8.3%)
                    opt_plus:   169,904 ( 3.0%)
                   opt_minus:    77,487 ( 1.4%)
      opt_send_without_block:    42,264 ( 0.8%)
                      opt_gt:    12,263 ( 0.2%)
                     opt_neq:     9,033 ( 0.2%)
                    opt_mult:     8,384 ( 0.2%)
                      opt_or:     4,792 ( 0.1%)
                      opt_lt:       404 ( 0.0%)
                     opt_and:       160 ( 0.0%)
                      opt_ge:        37 ( 0.0%)
    Top-15 send fallback reasons (100.0% of total 33,316,627):
                              send_without_block_polymorphic: 12,847,877 (38.6%)
                                               uncategorized:  5,583,226 (16.8%)
                                one_or_more_complex_arg_pass:  4,504,446 (13.5%)
                              send_not_optimized_method_type:  3,773,513 (11.3%)
                              send_without_block_no_profiles:  2,663,575 ( 8.0%)
                                            send_no_profiles:  2,206,479 ( 6.6%)
      send_without_block_not_optimized_method_type_optimized:    742,574 ( 2.2%)
                                            send_polymorphic:    467,750 ( 1.4%)
                              send_without_block_megamorphic:    428,364 ( 1.3%)
                     send_without_block_direct_too_many_args:     33,097 ( 0.1%)
                     send_without_block_cfunc_array_variadic:     22,255 ( 0.1%)
                                    obj_to_string_not_string:     19,435 ( 0.1%)
                                            send_megamorphic:     17,153 ( 0.1%)
                send_without_block_not_optimized_method_type:      5,922 ( 0.0%)
                              ccall_with_frame_too_many_args:        961 ( 0.0%)
    ```

    lobsters after:

    ```
    Top-4 instructions with uncategorized fallback reason (100.0% of total 4,835,995):
                 invokesuper: 3,039,692 (62.9%)
                 invokeblock: 1,181,427 (24.4%)
                 sendforward:   572,612 (11.8%)
      opt_send_without_block:    42,264 ( 0.9%)
    Top-17 send fallback reasons (100.0% of total 33,316,645):
                              send_without_block_polymorphic: 12,847,879 (38.6%)
                                               uncategorized:  4,835,995 (14.5%)
                                one_or_more_complex_arg_pass:  4,502,767 (13.5%)
                              send_without_block_no_profiles:  2,663,578 ( 8.0%)
                              send_not_optimized_method_type:  2,381,743 ( 7.1%)
                                            send_no_profiles:  2,206,481 ( 6.6%)
                                         send_cfunc_variadic:  1,391,775 ( 4.2%)
                      send_without_block_operands_not_fixnum:    747,228 ( 2.2%)
      send_without_block_not_optimized_method_type_optimized:    742,574 ( 2.2%)
                                            send_polymorphic:    467,750 ( 1.4%)
                              send_without_block_megamorphic:    428,364 ( 1.3%)
                     send_without_block_direct_too_many_args:     33,097 ( 0.1%)
                     send_without_block_cfunc_array_variadic:     22,255 ( 0.1%)
                                    obj_to_string_not_string:     19,440 ( 0.1%)
                                            send_megamorphic:     17,153 ( 0.1%)
                send_without_block_not_optimized_method_type:      7,605 ( 0.0%)
                              ccall_with_frame_too_many_args:        961 ( 0.0%)
    ```

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit de157f423ed6b4a6a741d480cd82dc163412c00a
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-15 03:46:42 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-15 03:46:42 +0900

    ZJIT: Skip a flaky DNS test (#15192)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit d966ba757c99e638aea5d96920987aa1a1aabc9a
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-15 03:16:10 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-15 03:16:10 +0900

    Revert ".github/workflows: Stop ignoring RUBY_TESTOPTS"

    This reverts commit 946695cdad874e91bc25bedc3c7b322934ca0f07.

    Apparently this doesn't work for test-bundled-gems

commit 946695cdad874e91bc25bedc3c7b322934ca0f07
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-15 02:51:36 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-15 02:52:20 +0900

    .github/workflows: Stop ignoring RUBY_TESTOPTS

    $(RUBY_TESTOPTS) are used in $(TESTOPTS), so if you pass $(TESTOPTS),
    it'd be ignored.

commit e4295bc3f763d220a944ed353eaeda2c1c1b88cd
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-14 05:01:55 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-15 02:29:09 +0900

    YJIT: Fix stack handling in rb_str_dup

    Previously because we did a stack_push before ccall, in some cases we
    could end up pushing an uninitialized value to the VM stack when
    spilling regs as part of the ccall.

    Co-authored-by: Luke Gruber <luke.gru@gmail.com>

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15179

commit 286e326299bffdc4061565162502f6c76caf1189
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-15 02:28:19 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-15 02:28:19 +0900

    ZJIT: Add tests for sending to methods with keyword args (#15183)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit bec69617a00e1d98748b319411f221568a4b6c66
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-03 20:24:38 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-15 01:27:38 +0900

    [ruby/prism] Reject endless method as a block parameter default

    Fixes [Bug #21661]

    https://github.com/ruby/prism/commit/475fa46a82

commit 0e604623d855934c1f10b293b698f223b79c5c07
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-14 10:51:20 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 22:47:49 +0900

    [ruby/prism] Use `method_defined?` instead of `instance_methods.include?`

    While the latter creates an intermediate array of all method names
    including all ancestors, the former just traverse the inheritance
    chain and can stop if found once.

    https://github.com/ruby/prism/commit/6da384dd0e

commit f4b6a5191ceb0ed0cd7a3e3c8bab24cc0dd15736
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-10-24 00:57:26 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-14 21:03:04 +0900

    [Feature #21572] Syntax error at capture in alternation pattern

    Should fail even with `-c` option.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/14923

commit 6f18898f4902b2717442f9bef4faa876d58f99de
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 15:14:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 16:36:28 +0900

    [ruby/rubygems] Removed deprecated Gem::Specification#has_rdoc, has_rdoc= and has_rdoc?

    https://github.com/ruby/rubygems/commit/b043538576

commit dabc86a5f305f09708df5a2476ce468b26a75b00
  Author:     Brandon Weaver <keystonelemur@gmail.com>
  AuthorDate: 2025-11-09 12:37:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:32:36 +0900

    [ruby/rubygems] Add pattern matching support to Gem::NameTuple

    https://github.com/ruby/rubygems/commit/9b19e1f555

commit 068b35ce3d85927765f8b448ecc6f2e866d2b9b7
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 13:44:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:25:21 +0900

    [ruby/rubygems] Removed files for `gem query`

    https://github.com/ruby/rubygems/commit/de269cfbb6

commit 4a0465da6139bb691dc132e6bd91083a1aa92e84
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 13:50:30 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:25:04 +0900

    [ruby/rubygems] Removed deprecated Gem::DependencyInstaller#find_gems_with_sources

    https://github.com/ruby/rubygems/commit/1b3f3bf194

commit 46227126957b154a73ec34068ccb6c40b62981a8
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 13:45:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:39 +0900

    [ruby/rubygems] bin/rubocop -a --only Layout/EmptyLinesAroundClassBody

    https://github.com/ruby/rubygems/commit/94d4e633d1

commit ecec9dc606c0816ddff241485389b892d19da144
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 12:04:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:38 +0900

    [ruby/rubygems] Removed deprecated Gem::Util.silent_system

    https://github.com/ruby/rubygems/commit/728269cc4a

commit 31928c10a25c8ad14b4e7d7378afa6d83a1ecec0
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 12:01:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:38 +0900

    [ruby/rubygems] Removed deprecated Gem::Specification#validate_metadata, validate_dependencies and validate_permissions

    https://github.com/ruby/rubygems/commit/fbf38fc190

commit 9fd3ab9e4a7157830c425ddf190b455f3ab00871
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 10:55:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:37 +0900

    [ruby/rubygems] Removed deprecated Gem::Specification#default_executable

    https://github.com/ruby/rubygems/commit/84ceaff1b7

commit a6fa99fe18ec3d5f416c87cdb7e7fbb22f9de612
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 10:48:48 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:37 +0900

    [ruby/rubygems] Removed deprecated Gem::Platform.match

    https://github.com/ruby/rubygems/commit/f4b4f12f91

commit a242adc3e9de1e9124ba6a4f34d3b979afc6a671
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 10:36:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:37 +0900

    [ruby/rubygems] Removed deprecated Gem::Installer#unpack

    https://github.com/ruby/rubygems/commit/96cef34041

commit b3831efb974e4de04b7ccc4ebabb5056f7d2a4fb
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 10:31:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 15:09:36 +0900

    [ruby/rubygems] Removed deprecated Gem::BasicSpecification.default_specifications_dir

    https://github.com/ruby/rubygems/commit/60f0b87d47

commit 917fd39982ee31f6fa8834c102db76dbc9ce17e2
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 11:57:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 14:22:21 +0900

    [ruby/rubygems] Update vendored version of connection_pool to 2.5.4

    https://github.com/ruby/rubygems/commit/3f5330c9fc

commit e68c0fc75bebee31f6c57b9f02bb10019a91976b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 10:50:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 14:22:20 +0900

    [ruby/rubygems] bin/rubocop -a --only Style/RedundantParentheses

    https://github.com/ruby/rubygems/commit/be3b09c786

commit 2c546071df24128126a2516090b446d45b74dbb9
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 10:11:08 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 14:22:20 +0900

    [ruby/rubygems] Update the all dependencies with rake update

    https://github.com/ruby/rubygems/commit/74c9eaf1f0

commit 47e3aff930942691321408ef785f7548b4948631
  Author:     Mari Imaizumi <mariimaizumi5@gmail.com>
  AuthorDate: 2025-11-13 19:02:15 +0900
  Commit:     Mari Imaizumi <mariimaizumi5@gmail.com>
  CommitDate: 2025-11-14 12:27:36 +0900

    Adapt to Unicode directory changes

    https://www.unicode.org/Public/emoji/ReadMe.txt

    > This directory contains data files for versions 1.0 to 16.0 of Unicode Emoji.
    > Starting with Unicode 17.0.0, the data files for Unicode Emoji are published in
    > https://www.unicode.org/Public/<version>/emoji/
    > together with the related files in
    > https://www.unicode.org/Public/<version>/ucd/emoji/

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15170

commit cb3bc8ae3f02882debd5f56ee6ef8f99f0addda0
  Author:     Mari Imaizumi <mariimaizumi5@gmail.com>
  AuthorDate: 2025-11-13 19:02:10 +0900
  Commit:     Mari Imaizumi <mariimaizumi5@gmail.com>
  CommitDate: 2025-11-14 12:27:36 +0900

    [Feature #21275] Bump Unicode version to 17.0.0

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15170

commit e39385bf849610a58865722cdd330eff9475b00e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-14 10:57:18 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 12:24:42 +0900

    [ruby/rubygems] Use `method_defined?` instead of `instance_methods.include?`

    While the latter creates an intermediate array of all method names
    including all ancestors, the former just traverse the inheritance
    chain and can stop if found once.

    https://github.com/ruby/rubygems/commit/b291070b3b

commit 256b4722a0dc45ee8d675db0a30f37d32a40ea88
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-14 11:45:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 12:22:49 +0900

    [ruby/mmtk] Lock VM in fork hooks

    If we are using multiple Ractors, other Ractors may allocate objects after
    rb_gc_impl_before_fork is ran because it does not lock the VM. This can cause
    the GC to be in a bad state since rb_gc_impl_before_fork may have terminated
    GC threads so a GC cannot run until rb_gc_impl_after_fork is ran.

    https://github.com/ruby/mmtk/commit/e4bea5676d

commit c92a44ee685fc10ce7cf4f8865d1942eb40d2780
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-14 12:02:45 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-14 12:02:45 +0900

    ZJIT: Use Mem.num_bits in Mem split (#15177)

    Fix the

    ```
    write(2, "ruby: ZJIT has panicked. More info to follow...\n", 48) = 48
    write(2, "\nthread '<unnamed>' panicked at zjit/src/backend/lir.rs:160:17:\nassertion failed: num_bits <= out_num_bits\n", 107) = 107
    ```

    based on

    ```
    #25 0x0000aaaaaae8fb14 in zjit::backend::lir::Opnd::mem (num_bits=64, base=..., disp=0) at zjit/src/backend/lir.rs:160
    #26 zjit::backend::arm64::{impl#3}::arm64_split::split_memory_address (asm=<optimized out>,
        opnd=<error reading variable: Cannot access memory at address 0x0>) at zjit/src/backend/arm64/mod.rs:260
    #27 zjit::backend::arm64::{impl#3}::arm64_split::split_load_operand (asm=<optimized out>, opnd=...) at zjit/src/backend/arm64/mod.rs:273
    ```

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit e826f815bf5fea0d28e3dd71411eeac9e47d3c6e
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-13 23:15:58 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-14 11:28:09 +0900

    [DOC] Tweaks for String#tr_s!

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15176

commit 6c7453c5deb76c0be336cedd5eba667e0b6629c6
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-13 23:07:08 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-14 11:27:43 +0900

    [DOC] Tweaks for String#tr_s

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15175

commit 7ea0d369661f9050d29e4a37899cafc8c03d5497
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-13 22:52:38 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-14 11:27:01 +0900

    [DOC] Tweaks for String#tr!

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15174

commit 560ec9bfd2d16dc1836335a36430d67861feb87e
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2025-11-13 12:45:09 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2025-11-14 11:23:35 +0900

    Skip null check for `brace_block`

    `brace_block` is `'{' brace_body '}'` or `k_do do_body k_end`.
    Both of them are not null so no need to check `$5`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15167

commit 8a58e66a10b486923c63c8ba23d62740ecf98554
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-14 09:57:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 11:16:49 +0900

    [ruby/rubygems] Suppress gem build message of bundler like this:

    ```
    $ rake spec:regular
      Successfully built RubyGem
      Name: bundler
      Version: 4.0.0.dev
      File: bundler-4.0.0.dev.gem
    ```

    https://github.com/ruby/rubygems/commit/8f0ca5eefa

commit 6e5bbbc598684b80bfa3fc6dff0a83a949e7d078
  Author:     isuckatcs <65320245+isuckatcs@users.noreply.github.com>
  AuthorDate: 2025-11-14 07:29:50 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-14 09:37:49 +0900

    Remove `include` prefix from include paths

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15182

commit d9bb60271cf94d099214f02a0226dd7d29873412
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 18:25:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 09:19:57 +0900

    [ruby/rubygems] Re-generate lockfile with double spaces

    https://github.com/ruby/rubygems/commit/a65a4b775e

commit 5924765b897dd419bcaf81f34cdfcb49c838af7e
  Author:     Jimmy Lin <jmlntw@gmail.com>
  AuthorDate: 2021-09-05 20:38:49 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 09:19:56 +0900

    [ruby/rubygems] Fix triple spacing when generating lockfile

    https://github.com/ruby/rubygems/commit/d3baf4110e

commit f100298e28b3f3db93956a563a11c5cc1dbcb0a7
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-14 06:42:38 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-14 06:42:38 +0900

    ext/socket: Set raddrinfo thread as detached before thread start (#15142)

    We were seeing segfaults when calling `pthread_detach`. Apparently in
    some versions of glibc there is a race between when this is called
    (usually right after starting a thread) and a short-lived thread's
    shutdown routine. The bug has been reported to glibc:

    https://sourceware.org/bugzilla/show_bug.cgi?id=19951

    I haven't been able to reproduce it on my Linux desktop but apparently
    it's easier to reproduce on certain kinds of servers.

    As a workaround, we can set the thread's detach state before thread
    start. I don't know of a platform that doesn't have
    `pthread_attr_setdetachstate`, but to be safe we check for it in
    `extconf.rb` and use `pthread_detach` as a backup if it isn't available.

    Fixes [Bug #21679]

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 244a4bedc25a402af8f5112ce35b4d82c297fe3e
  Author:     Sorah Fukumori <her@sorah.jp>
  AuthorDate: 2025-11-14 01:00:29 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-14 01:01:15 +0900

    [ruby/net-http] releng v0.8.0

    https://github.com/ruby/net-http/commit/9d65391f54

commit 1d903b727f1ecd71e6e9776695937602177a0b6e
  Author:     Taketo Takashima <t.taketo1113@gmail.com>
  AuthorDate: 2025-11-13 22:56:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 23:33:22 +0900

    [ruby/net-http] Drop support for Ruby 2.6

    https://github.com/ruby/net-http/commit/a3a5bc45f6

commit 2ab21f56f9c96485def7c0b40bebb1ec2a4113c4
  Author:     Taketo Takashima <t.taketo1113@gmail.com>
  AuthorDate: 2025-11-05 11:47:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 23:33:22 +0900

    [ruby/net-http] Fix handling of IPv6 literal hosts in `Net::HTTPGenericRequest`

    Update uri dependency to version 0.11.0 or later to use `URI::HTTP#authority` and `URI#parse` without scheme

    https://github.com/ruby/net-http/commit/3d4f06bd7f

    Co-authored-by: 0x1eef <0x1eef@users.noreply.github.com>
    Co-authored-by: Sorah Fukumori <sora134@gmail.com>

commit 61500c6f48135ef018f5e496ff292a86b0043c65
  Author:     Akinori MUSHA <knu@idaemons.org>
  AuthorDate: 2025-11-13 20:01:37 +0900
  Commit:     Akinori MUSHA <knu@idaemons.org>
  CommitDate: 2025-11-13 22:00:07 +0900

    Add size checks to Range#to_set and Enumerator#to_set [Bug #21654]

    These two class are most common sources of infinite sequences.  This change should effectively prevent accidental infinite loops when calling to_set on them. [Bug #21513]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15173

commit 25c871fddf430d18a1f0a794a0f81598e9b79727
  Author:     Akinori MUSHA <knu@idaemons.org>
  AuthorDate: 2025-11-13 19:13:10 +0900
  Commit:     Akinori MUSHA <knu@idaemons.org>
  CommitDate: 2025-11-13 22:00:07 +0900

    Revert "[Bug #21513] Raise on converting endless range to set"

    This reverts commit d4020dd5faf28486123853e7f00c36139fc07793, which introduced performance regression for objects like ActiveRecord::Relation by calling the costly #size method on them.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15173

commit 4a1b88afb82291bd066472e8ad0000b23ed0d4dc
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-13 20:50:45 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-13 21:27:53 +0900

    Exclude lib/unicode_normalize from lib/un

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15172

commit 19c2c7e61059f42a29d0d54ee5fd4f021854b2b3
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 19:47:35 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 20:59:34 +0900

    [ruby/rubygems] Fixed with Performance/RegexpMatch cop

    https://github.com/ruby/rubygems/commit/93b8492bc0

commit d80aa36847cb57a785ccaa9b1219fcbd26a74369
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 18:40:11 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-13 19:42:38 +0900

    Ractor support Windows platform. We need to skip only failing tests of RubyGems

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15171

commit 7e37e4e743a1ca1d5d7bbb87cdd9b943e3a4fe1d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-13 11:02:44 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-13 16:15:00 +0900

    [Bug #21683] Respect reading encoding at `each_codepoint`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15169

commit 253485484c08aa56b1ea154b880eea217656d195
  Author:     David Rodríguez <deivid.rodriguez@riseup.net>
  AuthorDate: 2025-06-23 20:26:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 15:28:46 +0900

    [ruby/rubygems] We don't need to allow some warning because:

    Always build gems with RubyGems programmatically

    https://github.com/ruby/rubygems/commit/5cc0c34e64

commit 3c68b781dcf63fe29dbde569e534ab0e2b3eec0c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 11:45:30 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-13 14:29:16 +0900

    Use omit instead of return in assertion

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15164

commit 13407d959ab6e481db3148ea76f46c2f5aa70479
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 11:44:51 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-13 14:29:16 +0900

    Omit assert_ractor with Windows platform

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15164

commit 2c1b1751e4b28929f426e4fd92c38f550872dbf5
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-11 07:09:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 13:44:46 +0900

    [ruby/rubygems] Add debug logging information:

    - I'd like to be able to see how long bundler takes for basic
      operations such as downloading a gem from Rubygems.org and
      installing a gem.

      It will now be possible with this commit by running
      `DEBUG=true bundle install` and have output that looks like:

      Fetching rack-test 2.2.0
      Downloaded rack-test in: 50.523s
      Installing rack-test 2.2.0
      Installed rack-test in: : 0.003s

    https://github.com/ruby/rubygems/commit/46386d43e1

commit b4b7809f0be7897e194d0e215071b9a0e3fa716e
  Author:     Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
  AuthorDate: 2025-11-13 13:34:33 +0900
  Commit:     Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
  CommitDate: 2025-11-13 13:34:33 +0900

    Use path in tmpdir instead of IO::NULL

    The path already used in tool/test/test_sync_default_gems.rb .

    Try to fix errors on Windows.

    https://github.com/ruby/ruby/actions/runs/19316448613/job/55248700110

commit fe1e1c784ea762fd4b7f8d441b8a2508460646ab
  Author:     Edouard CHIN <chin.edouard@gmail.com>
  AuthorDate: 2025-11-13 03:19:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 13:23:32 +0900

    [ruby/rubygems] Adjust the API_REQUEST_LIMIT:

    - ### Problem

      This limit is used when Bundler fallback to getting a dependency
      list from a server `/dependencies?gem=` endpoint. Bundler uses
      this API endpoint fallback when a server doesn't expose the compact
      index API.
      This is not used for Rubygems.org, only private servers.

      This limit is then divided by the number of dependency to get
      and the result is the number of request we'll be doing.
      The bottleneck on the client is the network roundtrip. On the
      server, getting the info of 50 or 100 gems is a bit more expensive
      but this operation is heavily cached.

      This is an example of Rubygems.org implementation at the time the
      dependencies API wasn't deprecated
      https://github.com/rubygems/rubygems.org/blob/5a3a3ec02acc3a4e3aba077953a393ad20a06842/app/models/gem_dependent.rb#L15

      ### Context

      This limit used to be 100 a while ago but got changed
      to 50 in https://github.com/ruby/rubygems/commit/e745f8dc901dd419e7dc8aede3e8d49569fc7b1e
      I don't know why.

      ### Solution

      50 gems to query seems arbitrary low. By doubling this number, we
      make twice as less API requests which ultimately can shove up to two
      seconds on application relying on a large number of gems.

    https://github.com/ruby/rubygems/commit/831894043c

commit 057c6e3bab655dd5edb9500731a56503d22ac3f7
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 10:57:04 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-13 10:57:04 +0900

    Revert "include ruby.h to avoid load failures"

    This reverts commit 35783854244f8dc6a9f7fb4dfae752f8361c66bd.

commit 3dd32fdf784dac5769f6a352fa16c42e2c60edf7
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-13 10:06:47 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-13 10:06:47 +0900

    ZJIT: Revert patch_point_count counter (#15160)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 37a05b591c989abe1ca524c3ff98b088d7e6a656
  Author:     Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
  AuthorDate: 2025-11-13 09:31:50 +0900
  Commit:     Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
  CommitDate: 2025-11-13 09:34:08 +0900

    Ignore ~/.gitconfig

    I use `commit.gpgsign=true`, so I want to ignore it in tests.

commit 8f9b038df30d1ba8310de642a5884d34fbf60e1a
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-11-13 09:06:52 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-13 09:06:52 +0900

    ZJIT: Add standalone JSON implementation (#15162)

    I split this off from https://github.com/ruby/ruby/pull/14999 to land the JSON component earlier.

    Iongraph's viewer is (as mentioned in the article above) a few notches above graphviz for viewing large CFGs. It also allows easily inspecting different compiler optimization passes and multiple functions in the same browser window. Since Spidermonkey is using this format, it may be beneficial to use it for our own JIT development.

    The requirement for JSON is downstream from that of the Iongraph format. As for writing the implementation myself, ZJIT leans towards having fewer dependencies, so this is the preferred approach.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 75f5a0bae9a288b71513d72ee1856bf67ad7b338
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-12 21:37:37 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-13 08:44:34 +0900

    Increase default stack sizes for LSAN

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15148

commit 9f7ef20de165a20de951574c6f807a78872a2d22
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-13 07:09:20 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 08:25:49 +0900

    [ruby/rubygems] Re-use assert_headers_equal from Gem::Package::TarTestCase

    https://github.com/ruby/rubygems/commit/0cf49e22af

commit be86e7c50e6cc91b5b50f9a346f353546c555d5b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-13 07:26:57 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 07:27:36 +0900

    [ruby/io-wait] Define ABI version

    https://github.com/ruby/io-wait/commit/ad6f47fd3a

commit 2247b0becbb2ad0939645f460669f8351fc0e376
  Author:     Brandon Weaver <keystonelemur@gmail.com>
  AuthorDate: 2025-11-11 14:58:41 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 07:23:10 +0900

    [ruby/rubygems] Add documentation for pattern matching methods

    https://github.com/ruby/rubygems/commit/18f64c6b29

commit 3efabc8355df489d1fa9717e7cb1b8daa8ddf92e
  Author:     Brandon Weaver <keystonelemur@gmail.com>
  AuthorDate: 2025-11-09 12:16:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 07:23:10 +0900

    [ruby/rubygems] Add pattern matching support to Gem::Platform

    https://github.com/ruby/rubygems/commit/b59917447c

commit cdc3faa6b3e02d9f40d9e1ff356bee9ad01ceb73
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 07:02:01 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-13 07:02:14 +0900

    erb/new_spec.rb: Fix a missing do

commit a4916a6f385b2c1323f0df45c5630f388c55bb4d
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-13 03:43:45 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-13 07:02:07 +0900

    [DOC] Tweaks for String#tr

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15158

commit c13b4d79e1573c6ab9c66eadaccf30df12ed03c8
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-11-13 03:35:04 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-13 07:01:43 +0900

    [DOC] Tweaks for String#to_s

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15157

commit 936951b31238a873567be5fb049af9d383bc4c55
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 06:49:09 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-13 06:49:23 +0900

    erb/new_spec.rb: Update a version guard

    to the released version

commit e25fdc3d0048cd2ab5c92add8fb76c17240e6ffc
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 06:47:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 06:48:07 +0900

    [ruby/erb] Version 6.0.0

    https://github.com/ruby/erb/commit/bbaaf1f51b

commit fe1f8cd129cdfc23378e2c07f59e2a84bcbc7367
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 06:30:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 06:31:58 +0900

    [ruby/erb] Drop a deprecated constant ERB::Revision

    https://github.com/ruby/erb/commit/1f83b2578f

commit 07e78e31c6ebd2f6add2493aa072f45a57aec3b9
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 05:49:53 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 05:50:49 +0900

    [ruby/erb] Drop an obsolete constant ERB::NOT_GIVEN

    and update some documentation

    https://github.com/ruby/erb/commit/9da628f21c

commit 7aba6ce2a6ee4dce9ed9578b71fe38999ed94bf1
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 05:44:14 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-13 05:44:15 +0900

    erb/new_spec.rb: Fetch private ERB::VERSION

    for erb v4.0.4 or older

commit fb48b3020c351fab65e878af17dc941d0dd1e260
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 05:41:48 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-13 05:41:49 +0900

    spec_guards.yml: Add `fail-fast: false`

    fail-fast is never a good idea for master branch.

commit 6365d7b0a585c1cd416a52058b0daa9a87d0c8d0
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 05:31:44 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-13 05:36:44 +0900

    Reapply "[ruby/erb] Reapply "Remove safe_level and further positional"

    This reverts commit 5b6658a406b5f1c535aed4cb68e8e18a3cbabb81.

    With a ruby spec fix.

commit 5b6658a406b5f1c535aed4cb68e8e18a3cbabb81
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-13 04:59:28 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-13 04:59:48 +0900

    Revert "[ruby/erb] Reapply "Remove safe_level and further positional"

    This reverts commit 6ea4f36716f8970f418f32837575405ddeea75aa.

    I'll fix ruby/spec shortly. For now, let me just revert it for ruby/ruby.

commit 6ea4f36716f8970f418f32837575405ddeea75aa
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-13 04:53:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-13 04:53:36 +0900

    [ruby/erb] Reapply "Remove safe_level and further positional
    arguments (https://github.com/ruby/erb/pull/7)"
    (https://github.com/ruby/erb/pull/95)

    This reverts commit https://github.com/ruby/erb/commit/1c02d23dc618.

    https://github.com/ruby/erb/commit/4162a24ecc

commit de6c4b62b00023ef372bae4c434f58014c3c8382
  Author:     Alan Wu <alanwu@ruby-lang.org>
  AuthorDate: 2025-11-13 04:39:58 +0900
  Commit:     Alan Wu <alanwu@ruby-lang.org>
  CommitDate: 2025-11-13 04:39:58 +0900

    Use patched rbs aware of io/wait method removals

commit 35783854244f8dc6a9f7fb4dfae752f8361c66bd
  Author:     Koichi Sasada <ko1@atdot.net>
  AuthorDate: 2025-11-13 02:27:30 +0900
  Commit:     Koichi Sasada <ko1@atdot.net>
  CommitDate: 2025-11-13 02:27:30 +0900

    include ruby.h to avoid load failures

    ```
    .../io/wait.so: undefined symbol: ruby_abi_version - ruby_abi_version
    ```

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15155

commit 6a055451843d28b9d75f581328cbdf6f03bea343
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 23:23:02 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 23:26:19 +0900

    [ruby/io-wait] No method definition is always ractor-safe

    https://github.com/ruby/io-wait/commit/44b68fc51b

commit ff4f9b88515babb34985521339b1410608c78589
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 21:32:04 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 23:10:36 +0900

    [ruby/io-wait] Drop support for ruby 3.1

    https://github.com/ruby/io-wait/commit/33efb55d0e

commit b4b0cd4a498679c27de1a1ed1add58a0e920b614
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 21:30:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 23:10:36 +0900

    [ruby/io-wait] Drop support for ruby 3.0

    https://github.com/ruby/io-wait/commit/62626dae8c

commit ab13ece69a061f9c52b7fa69fe9fdeaa31df9441
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 21:17:24 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 23:10:36 +0900

    [ruby/io-wait] Drop support for ruby 2.7

    https://github.com/ruby/io-wait/commit/dad4c70f2a

commit b70f5afb68253eb25cf5f8f2fdfbf01dae1d05d3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-04 21:42:54 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 22:48:18 +0900

    [ruby/io-wait] Remove `IO#nread` and `IO#ready?

    https://github.com/ruby/io-wait/commit/1decadc7f9

commit b1c578d83e59b74d7f327103025e05beb08528c7
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 17:29:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 22:48:18 +0900

    [ruby/io-wait] Start 0.4.0

    https://github.com/ruby/io-wait/commit/f5c81139dd

commit b072c3995995ad70387378127a6984b9485a0a25
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 17:28:13 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 22:23:12 +0900

    [ruby/io-wait] Bump up to 0.3.6

    https://github.com/ruby/io-wait/commit/bf41116ff5

commit 4adb79f8aaddba977eac52600dffa5b5610ced39
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-04 18:03:47 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 22:23:12 +0900

    [ruby/io-wait] Deprecate `IO#nread` and `IO#ready?`

    To use these methods, busy loop is necessary somewhere.
    Use other method to wait instead.

    https://github.com/ruby/io-wait/commit/8ff4821cea

commit edb8296b991a0d6e2522511835315b10b846aef2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-12 22:19:08 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-12 22:19:08 +0900

    Make alias `Ractor#value` only if undefined

    `Ractor#value` replaces `Ractor#take`; if the former is defined the
    latter is undefined, and vice versa.

commit 82ecbbc918e9d6ae3add30dd68e26d56be8c88e7
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 20:49:23 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 21:51:46 +0900

    [ruby/rubygems] Workaround for test failure of ruby_3_4 branch

    https://github.com/ruby/rubygems/commit/d7bc3a6d82

commit 3d554a586b5263c52de87aa58ab2f25f78ede30c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 20:24:44 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 21:51:45 +0900

    [ruby/rubygems] Support ruby_3_4 branch with assert_ractor argument

    https://github.com/ruby/rubygems/commit/da0a14801a

commit 41a2b2c85e7c865d84f139bf1828b9578d925e8e
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 19:27:14 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 21:51:45 +0900

    [ruby/rubygems] Inject assert_ractor if TestGemPackageTarHeaderRactor is running under the ruby/rubygems repo

    https://github.com/ruby/rubygems/commit/47f41ce2df

commit 9046186065ff483386dfe27fe6f69e14b05cd938
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 19:26:47 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 21:51:44 +0900

    [ruby/rubygems] Added test-unit-ruby-core for assert_ractor

    https://github.com/ruby/rubygems/commit/be579a9c8c

commit bcfcfedc3085afe83dd39e68994524cdfec39a67
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-12 04:09:59 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-12 20:48:59 +0900

    Fix memory leak in invalidate_ccs_in_iclass_cc_tbl

    invalidate_ccs_in_iclass_cc_tbl deletes the ccs from the table but never
    frees it, causing memory to leak.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15143

commit 14e75435ea16601a800616835c8f89b320192e5c
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-12 19:13:29 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-12 19:13:29 +0900

    [DOC] Tweaks for String#to_r

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15038

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 0ca3eed109c42711ac66d65637724045c280def3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 15:59:18 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 18:51:57 +0900

    assert_separately: Suppress experimental warnings

    test-unit depends on power_assert that the recent versions require
    ruby 3.1 or later.  While test-unit rescues syntax error at loading
    power_assert for old ruby versions, warnings for experimental features
    are not suppressed, and `assert_separately` fails because stderr is
    not empty, by default.  Since adding `required_ruby_version` to
    power_assert causes the installation with old rubygems to fail, we
    just ignore warnings for experimental features totally.

commit f1972d400b5b8ecb7414b199e6a511dd832f0eb9
  Author:     Taketo Takashima <t.taketo1113@gmail.com>
  AuthorDate: 2025-10-07 22:35:23 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 18:51:23 +0900

    Fix SyntaxError: unexpected keyword_rescue, expecting keyword_end in Ruby 2.4 and earlier

commit d1240393ab86c8f681f84d88fd498c75409080f4
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 17:23:58 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 18:35:16 +0900

    Split Ractor tests for Gem::Package

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15043

commit 96a425e5c53ab63f2b3065fd970481a80794445b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 17:22:45 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 18:35:16 +0900

    Support multiple require in assert_ractor

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15043

commit f958800574c42e69844db7305e69d1f494529543
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-04 11:00:01 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 18:35:16 +0900

    Reapply "[ruby/rubygems] Fix constants in TAR to be frozen"

    This reverts commit 136157e772ab2b2ea08555d0ad821da7dc2bde96.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15043

commit f4f728b319086eea3db6e9909fb9c849c276f813
  Author:     tomoya ishida <tomoyapenguin@gmail.com>
  AuthorDate: 2025-11-12 13:58:38 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-12 13:58:38 +0900

    [Bug #21680] Fix (base**power_of_two).digits(base) bug (#15144)

    Fix wrong condition in base multiplying loop.

  Notes:
    Merged-By: tompng <tomoyapenguin@gmail.com>

commit 090099b0c048c655c239a1cb81f551556f9bf2c5
  Author:     Sutou Kouhei <kou@clear-code.com>
  AuthorDate: 2025-11-12 10:35:41 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:52:22 +0900

    Development of 3.1.9 started.

commit 30b3ccbbcd7bfa22319eb9419bc81e06870b3071
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-12 09:16:17 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:47:10 +0900

    [ruby/rubygems] maybe this will work?

    https://github.com/ruby/rubygems/commit/4d8b1c77f4

commit ba1616fefb27845ecadb5a87b7a05a2212bd0541
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-12 09:05:28 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:47:09 +0900

    [ruby/rubygems] add rubygems-generate_index as a dev dep

    https://github.com/ruby/rubygems/commit/8df0e4e63e

commit 9775d60222d5bbdbde662fd48f0273be65ff6cdb
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-12 07:45:35 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:47:08 +0900

    [ruby/rubygems] Shell out fewer times

    This is a follow up to #9053. We can avoid shelling out for generating
    the gem index.

    https://github.com/ruby/rubygems/commit/e40bafe9f1

commit b33da0a6aa886d6a7d17a20dd88f4de35c7fe066
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 10:35:34 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:35:34 +0900

    Added email and name for `git pull --rebase`

    ```
    Rebasing (1/3)
    Committer identity unknown

    *** Please tell me who you are.

    Run

      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"

    to set your account's default identity.
    Omit --global to set the identity only in this repository.
    ```

commit 429b8e2e1c95121880a078bf647dee302668604d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 09:47:17 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:29:22 +0900

    tsort will be extracted at 4.1, not 3.6

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15145

commit bf970ed8a27abaa166fcbd04a769907af1554879
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-12 09:09:14 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:29:22 +0900

    Replace Ruby 3.5 with Ruby 4.0

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15145

commit da114dfe0bd208ff986db87890481f1ff7391bbd
  Author:     Yasuo Honda <yasuo.honda@gmail.com>
  AuthorDate: 2025-11-11 21:37:56 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-12 10:14:56 +0900

    [ruby/error_highlight] Replace Ruby 3.5 with Ruby 4.0

    This commit updates the Ruby version to follow the commit in Ruby master branch.

    https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

    https://github.com/ruby/error_highlight/commit/dcecf68d75

commit c6997ddf3e7acf0f9d65837d2da591bc47afdaee
  Author:     Yasuo Honda <yasuo.honda@gmail.com>
  AuthorDate: 2025-11-11 21:56:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 10:09:49 +0900

    [ruby/net-http] Replace Ruby 3.5 with Ruby 4.0

    This commit updates the Ruby version to follow the commit in Ruby master branch.
    https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

    https://github.com/ruby/net-http/commit/1e48cfaaf7

commit 8afe65cd92ba6a3c64924cad13f24a5d5fbb2b14
  Author:     Charles Oliver Nutter <headius@headius.com>
  AuthorDate: 2025-11-12 07:32:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 07:33:31 +0900

    [ruby/io-wait] Bump version to 0.3.5 to incorporate JRuby release fixes

    https://github.com/ruby/io-wait/commit/284cb654cf

commit 5c9d5a66e787b53f422608a9fa20982fa8f5e200
  Author:     Charles Oliver Nutter <headius@headius.com>
  AuthorDate: 2025-11-12 07:27:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 07:30:04 +0900

    [ruby/io-wait] 0.3.5.test1 fixing JRuby release process

    https://github.com/ruby/io-wait/commit/c0ae05e319

commit 8428e5e8c62ce24f2cd4d0b27249c1ab6cbdb4b5
  Author:     Charles Oliver Nutter <headius@headius.com>
  AuthorDate: 2025-11-12 07:17:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 07:18:18 +0900

    [ruby/io-wait] Bump version to 0.3.4

    https://github.com/ruby/io-wait/commit/cd163938e5

commit 9363231d249365b6426dc8579b6adcb813661cf2
  Author:     Alan Wu <alanwu@ruby-lang.org>
  AuthorDate: 2025-11-12 06:41:46 +0900
  Commit:     Alan Wu <alanwu@ruby-lang.org>
  CommitDate: 2025-11-12 06:41:46 +0900

    test_ractor.rb: Delete unnecessary GC.stress fiddling

    assert_ractor() runs in a subprocess.

commit c07b2329eda5fcd82d8cb0b8f6f2187d09e8f2ad
  Author:     Yasuo Honda <yasuo.honda@gmail.com>
  AuthorDate: 2025-11-11 23:44:30 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 06:05:11 +0900

    [ruby/psych] Replace Ruby 3.5 with Ruby 4.0

    This commit updates the Ruby version to follow the commit in Ruby master branch.
    https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

    https://github.com/ruby/psych/commit/971b7de078

commit ade2b51a3b3ccdd9fe97d541c3dbb51339838d44
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-12 00:00:10 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-12 03:17:48 +0900

    Don't GC unprotect hash in Coverage.peek_result

    The call to unprotect the coverages hash was introduced in commit 99093e1
    where we used the raw ST table and st_foreach. We now use rb_hash_foreach
    which no longer requires GC unprotecting the coverages hash.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15140

commit 50c97e1c7807724a87341302b20c3c3bcb46e1db
  Author:     Yasuo Honda <yasuo.honda@gmail.com>
  AuthorDate: 2025-11-12 00:58:44 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-12 00:58:44 +0900

    Update Ruby version to 4.0 for the cgi warnings (https://github.com/ruby/ruby/pull/15141)

    This commit updates the Ruby version in the error message to follow the commit in Ruby master branch.

    https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 1577db908671be93db8277501445c5fc2c6052fc
  Author:     Yasuo Honda <yasuo.honda@gmail.com>
  AuthorDate: 2025-11-12 00:51:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-12 00:52:08 +0900

    [ruby/erb] Replace Ruby 3.5 with Ruby 4.0
    (https://github.com/ruby/erb/pull/94)

    This commit updates the Ruby version to follow the commit in Ruby master branch.

    https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

    https://github.com/ruby/erb/commit/a5d42484e4

commit e451b3debd69651640a952489dd12a27012c995b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-11 09:32:45 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-11 23:58:19 +0900

    Remove useless cast in rb_managed_id_table_type

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15136

commit ca2fffd3a7c6cf138fd60e73320cfc8a87c5ff35
  Author:     Yasuo Honda <yasuo.honda@gmail.com>
  AuthorDate: 2025-11-11 21:49:36 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-11 22:08:02 +0900

    [ruby/openssl] Replace Ruby 3.5 with Ruby 4.0

    This commit updates the Ruby version in the error message to follow the commit in Ruby master branch.
    https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

    https://github.com/ruby/openssl/commit/5a50a4d793

commit 48dce7874fcb571765635b32fa6a3e3a12e228f8
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2025-11-10 08:37:58 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2025-11-11 18:57:30 +0900

    simplify RSRING_GETMEM() definition.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15113

commit 367ddd445cdf5ccc55a0481c944746ef595f72f7
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2025-11-10 08:35:09 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2025-11-11 18:57:30 +0900

    include/ruby/internal/core/rstring.h: Remove rbimpl_rstring_getmem() definition.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15113

commit 9d44cb0b2b5520b2b299851003ca2a97bf1e2079
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2025-11-09 15:10:35 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2025-11-11 18:57:30 +0900

    Remove rbimpl_rstring_getmem() usage as workaround for GCC 15.2.1 optimization bug. [Bug #21655]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15113

commit c5bd4acd30320a8e180ce9fcb24acdab4e10c73a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-06 20:24:24 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-11 16:23:33 +0900

    [Bug #21666] Get rid of use of unspecified values

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15076

commit 66ecd00c19ed712243c4ee54dab32a8826f0bd81
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-11 14:22:16 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-11 16:11:05 +0900

    Support out-of-place build in ruby/ruby repo

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15139

commit c8977e9064c9d3e73515b5ed39ef3ef6557517c0
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-11-11 15:53:52 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-11 15:53:52 +0900

    Update bundled gems list as of 2025-11-11

commit ddaa56d549768777c5ea42b0d6a11a0c4394718d
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-11 14:41:35 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 14:41:35 +0900

    Fix bootstraptest runner driver message (#15072)

    This was a mistake;
    the code tested for RUBY_PATCHLEVEL but then
    instead of using it used RUBY_PLATFORM twice.

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit c477f59e3a56316f1e6112ae9417cb597df51e2c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-11 12:03:36 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-11 13:57:12 +0900

    [ruby/rubygems] Use Spec::Path.relative_gemspec

    https://github.com/ruby/rubygems/commit/2142e405b0

commit d3138912b8019591573c671662c1a2d9930aa034
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-04 03:29:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-11 13:57:12 +0900

    [ruby/rubygems] build gems directly instead of shelling out

    I'm trying to speed up the bundler tests. The tests shell out a lot in
    order to build gems. We can build gems without creating a sub-process.
    This change reduced the test suite time from ~24 minutes, to about ~21
    minutes on my machine.  Once we have more of these "asset generation"
    routines done in the same process, I think we can start caching the
    outputs for further improvements

    https://github.com/ruby/rubygems/commit/ebf27056c6

commit 71fecfa205f5ee2423f78877cca3a60bd07cbfd8
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-11 13:10:10 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 13:10:10 +0900

    ZJIT: Rename things so that they aren't named "not_optimized_optimized" (#15135)

    These refer to "OptimizedMethodType" which is a subcategory of "MethodType::Optimized"
    so name them after the latter to avoid "not_optimized_optimized".

commit d9f0b5a5f91b03ab5043029b4ae19847e965aa1a
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-11 13:07:35 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 13:07:35 +0900

    ZJIT: Set cfp->sp on leaf calls with GC (#15137)

    Co-authored-by: Randy Stauner <randy@r4s6.net>

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 6e6f5d3c32a709c891ac6aa7833376907a6c81b5
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-05-01 19:07:50 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2025-11-11 12:46:11 +0900

    Add test for [Bug #21265]

    The crash was fixed by a4dff09be79b52288a47658964d25e5aa84fc960 ("Fix
    resolving refined module-defined method"). I had a patch for this around
    for a few months but never merged it. Oops!

  Notes:
    Merged: https://github.com/ruby/ruby/pull/13230

commit fafecb43c527bca8a3493436c16aa7d63782bb0c
  Author:     Alan Wu <alanwu@ruby-lang.org>
  AuthorDate: 2025-11-11 12:21:10 +0900
  Commit:     Alan Wu <alanwu@ruby-lang.org>
  CommitDate: 2025-11-11 12:21:10 +0900

    Fix printf specificer. %lp doesn't make sense. Triggered -Wformat

commit 148fde27545ee35c8aab4ec7bca027184d79fbc4
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-11 11:52:43 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 11:52:43 +0900

    Revert "ns_subclasses refcount accesses need to be atomic (#15083)" (#15138)

    This reverts commit 2998c8d6b99ec49925ebea42198b29c3e27b34a7.

    We need to find a better way to fix this bug. Even with this refcount
    change, errors were still being seen in CI. For now we need to remove
    this failing test.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 16c6f36039b14c983125db8144d791714035737b
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-11 10:33:07 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 10:33:07 +0900

    [DOC] Clarify `Thread#kill` documentation. (#15132)

    Mention that it is asynchronous and that the killed thread can still run
    a small amount of ruby code before exiting.

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit d2c30a3bae908772c1de453aad8686000f6a5096
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-11-11 10:32:30 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 10:32:30 +0900

    Fix `thread_sched_wait_events` race (#15067)

    This race condition was found when calling `Thread#join` with a timeout
    inside a ractor. The race is between the polling thread waking up the
    thread and the `ubf` getting called (`ubf_event_waiting`). The error was
    that the ubf or polling thread would set the thread as ready, but then
    the other function would do the same.

    Fixes [Bug #21614]

  Notes:
    Merged-By: luke-gru <luke.gru@gmail.com>

commit 222d8990d4b0acfd17db9bf9063af1ccf0fe036a
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-11-11 00:16:41 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-11-11 09:47:40 +0900

    ZJIT: Reduce duplication between profiled_type_of_at and resolve_receiver_type

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15128

commit 327f070acd081d0b7e1d296f519aa6736bcc7cd3
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-11-10 22:30:30 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-11-11 09:47:40 +0900

    ZJIT: Don't need to store class in profiled type resolution enums

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15128

commit 87493e32ed822b78f1294c3c7a11f710ebdb6a90
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-11 08:08:27 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-11 09:34:00 +0900

    Fix memory leak in ObjectSpace tracing

    allocation_info_tracer_compact_update_object_table_i deletes entries where
    the key is no longer in the GC heap but did not free the allocation_info
    causing the memory to be leaked.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15133

commit d268a551865977160aba99429c29f61c8d7c0eb0
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-11 09:29:50 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 09:29:50 +0900

    ZJIT: Split unhandled_hir_insn and unknown_newarray_send stats (#15127)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 6238b6f53e4b10a1833eb90320f002f60be72d42
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-08 09:15:38 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-11 08:55:38 +0900

    Remove unused subclass methods

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15102

commit f95aa5b2a9d559d6deda1b0aa53aee8198ab3168
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-11 08:16:31 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 08:16:31 +0900

    ZJIT: Rename not_optimized_instruction to uncategorized_instruction (#15130)

    Make it more obvious that this hasn't been handled and could be
    broken down more.

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit c7f0a9c4cd3ec65a06c6e51252af7a45afa9d358
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-10 07:35:17 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-11 08:07:02 +0900

    Fix memory leak in subclasses when freeing classext

    We don't decrement the super and module subclasses count for iclasses that
    are having their classext replaced. This causes the reference count to be
    incorrect and leak memory.

    The following script demonstrates the memory leak:

        module Foo
          refine(Object) do
            define_method(:<=) {}
          end
        end

        class Bar
          include Comparable
        end

    With RUBY_FREE_AT_EXIT and ASAN, we can see many memory leaks, including:

        Direct leak of 16 byte(s) in 1 object(s) allocated from:
            #0 0x599f715adca2 in calloc (miniruby+0x64ca2)
            #1 0x599f716bd779 in calloc1 gc/default/default.c:1495:12
            #2 0x599f716d1370 in rb_gc_impl_calloc gc/default/default.c:8216:5
            #3 0x599f716b8ab1 in ruby_xcalloc_body gc.c:5221:12
            #4 0x599f716b269c in ruby_xcalloc gc.c:5215:34
            #5 0x599f715eab23 in class_alloc0 class.c:790:22
            #6 0x599f715e4bec in class_alloc class.c:836:12
            #7 0x599f715e60c9 in module_new class.c:1693:17
            #8 0x599f715e60a2 in rb_module_new class.c:1701:12
            #9 0x599f715e6303 in rb_define_module class.c:1733:14
            #10 0x599f715ebc5f in Init_Comparable compar.c:315:22
            #11 0x599f716e35f5 in rb_call_inits inits.c:32:5
            #12 0x599f7169cbfd in ruby_setup eval.c:88:9
            #13 0x599f7169cdac in ruby_init eval.c:100:17
            #14 0x599f715b0fa9 in rb_main main.c:41:5
            #15 0x599f715b0f59 in main main.c:62:12
            #16 0x739b2f02a1c9 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
            #17 0x739b2f02a28a in __libc_start_main csu/../csu/libc-start.c:360:3
            #18 0x599f7157c424 in _start (miniruby+0x33424)

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15120

commit f0541312883c27c7b98e004ebedc4d9e1874a147
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-11 06:47:56 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 06:47:56 +0900

    ZJIT: Add patch_point_count stat (#15100)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 3ddb5f99a9c472ea7273c3d6c99650eb1c8914f6
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-11 02:58:21 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-11 06:14:13 +0900

    Allow --jit to mean zjit if yjit isn't defined

    The --help output suggests this should work
    as ZJIT is labeled as the default if YJIT isn't enabled.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15129

commit 7b1e0a6096d5da629732bc95f2b991efdc8fa4f1
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2025-11-11 02:56:25 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-11 06:14:13 +0900

    ZJIT: Define jit_compile_exception for ZJIT even without YJIT

    Seems like an oversight

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15129

commit 03a9d075cd1b03e96959b42a7b86714410f3f2d7
  Author:     Max Bernstein <ruby@bernsteinbear.com>
  AuthorDate: 2025-11-11 01:26:55 +0900
  Commit:     Max Bernstein <ruby@bernsteinbear.com>
  CommitDate: 2025-11-11 01:26:55 +0900

    ZJIT: Fix land race

commit fb5f10e0d6fbf5b3f7f13b392e598ccd7c32c2bc
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-11-11 00:51:56 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 00:51:56 +0900

    ZJIT: Snapshot once per YARV insn (#15082)

    This is roughly net-neutral for the number of instructions created but
    at least cenetralizes where the Snapshot is made.

    Previously, we might have multiple Snapshot per YARV instruction
    depending on if it had event flags, if the body of the instruction also
    needed a Snapshot, etc.

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit b539cd2a33dae904e55fd8f054349b9ff076793a
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-11 00:30:17 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-11 00:30:17 +0900

    ZJIT: Deduplicate side exits (#15105)

commit 557eec792e520a25c3ca59aa0a824af5d009c7d8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 13:33:38 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-10 19:12:35 +0900

    [DOC] Update missing docs

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15123

commit 286a8eee82767614641414a05d8b9400fb373c94
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 12:21:15 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-10 19:12:34 +0900

    Move grouping by upstreams to SyncDefaultGems::Repository

    It is also useful to distribution changes to each upstream repository.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15123

commit 9720d499ffc6b1990b6f80cff072c3380e02d10d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 19:06:49 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 19:12:10 +0900

    [ruby/zlib] [DOC] Missing documents

    https://github.com/ruby/zlib/commit/25355bc1dc

commit df9b8fdb16269ca2dde62eab81767c1f81a5cc63
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:58:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 19:03:07 +0900

    [ruby/yaml] [DOC] Missing documents

    https://github.com/ruby/yaml/commit/388cd27291

commit d2044ce01744a0f9b70d32d340009326133a1638
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:57:37 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 19:01:39 +0900

    [ruby/weakref] [DOC] Missing documents

    https://github.com/ruby/weakref/commit/cccde64080

commit ae0dd72b96ebd6e968ac639d08126e989cebf366
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:55:27 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 19:00:00 +0900

    [ruby/tempfile] [DOC] Suppress documentation for internals

    https://github.com/ruby/tempfile/commit/475d719e4d

commit 95c4ca62a891c4bad936c24f97959ae428661585
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:54:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:59:40 +0900

    [ruby/singleton] [DOC] Missing documentation

    Suppress documentation for internals

    https://github.com/ruby/singleton/commit/4ac0cc497d

commit f4b18c5d00f70a5dae36ef6466384037f3afd96f
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2024-06-19 14:28:19 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:54:41 +0900

    [ruby/rubygems] Hide patchlevel from lockfile

    https://github.com/ruby/rubygems/commit/9b169c700f

commit 87f863276546e73dfed552fb171f0025912a61c7
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:46:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:51:11 +0900

    [ruby/prettyprint] [DOC] Missing documents

    https://github.com/ruby/prettyprint/commit/3a43a4bbf6

commit caf40a39963c5badba08bd310e950ae9832a0a3f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:45:10 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:49:36 +0900

    [ruby/pp] [DOC] Suppress documentation for internals

    https://github.com/ruby/pp/commit/e1f39cb39c

commit 54b5f83aca2fc27a3e2d00b68109f6b6473122c7
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:40:00 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:43:50 +0900

    [ruby/open3] [DOC] Missing documents

    https://github.com/ruby/open3/commit/e6d09a6aa8

commit 98f9211dc3cf9e1930463dbffa117f2c3b3385b2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:24:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:32:57 +0900

    [ruby/open-uri] [DOC] Missing documents

    https://github.com/ruby/open-uri/commit/1ccc576e9a

commit 0dfca2e3c3d9fbae19ecd2bfcf5da11cf2177614
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:21:02 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:28:06 +0900

    [ruby/forwardable] [DOC] Missing documents

    https://github.com/ruby/forwardable/commit/909986fee9

commit daf8c2fa13eb51734e73769428182c18c409b92b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:19:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:25:45 +0900

    [ruby/find] [DOC] Missing documents

    https://github.com/ruby/find/commit/01232ad51a

commit ea647f52c923330932998f34501cf647ac02d3d2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:13:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:15:48 +0900

    [ruby/erb] [DOC] Suppress documentation for internals

    https://github.com/ruby/erb/commit/332e200060

commit 309b6ca1c2c979f8370ef6466910edb52dba69aa
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 18:00:41 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 18:05:28 +0900

    [ruby/delegate] [DOC] Update missing docs and mark ups

    https://github.com/ruby/delegate/commit/020a6cfe4b

commit 2af63204de6047f5c3317467404a38853f414cbe
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 14:29:37 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 17:38:45 +0900

    [ruby/digest] [DOC] Missing documents

    https://github.com/ruby/digest/commit/16b598d6f2

commit bc177ff1cebee9e76234aad51ff7b3a158d037d6
  Author:     Olle Jonsson <olle.jonsson@auctionet.com>
  AuthorDate: 2025-11-10 17:27:07 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 17:31:11 +0900

    [ruby/timeout] Suppress warnings in two tests

    Failed build in #70.

    Pre-3.0 versions of Ruby didn't support pattern matching, and power_assert warned.

    https://github.com/ruby/timeout/commit/983cbf636a

commit 57daafc1da2eea71b50746893d77ad21658dd3b1
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-11-04 05:24:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 17:24:04 +0900

    [ruby/rubygems] Make verification methods private

    I would like to start making some of the methods in Gem::Package
    private so that we can refactor them better.  Right now we have many
    methods that are public, and since they are public we can't refactor
    them.  Historically, I think "private" methods have just been tagged
    with :nodoc:, but I would like to be more strict about our APIs

    https://github.com/ruby/rubygems/commit/fb352e9176

commit 57f2ac720d70b2245706f323cd7f3178aa5cfe6c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 13:46:15 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 15:44:27 +0900

    [ruby/rubygems] [DOC] Fix markups

    Use `<tt>` instead of `+` that cannot enclose punctuations.

    https://github.com/ruby/rubygems/commit/f84035c0b6

commit 73339ff2a1e5e8f35ad7224886ed56ae1da3e3ca
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 13:21:17 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 15:44:27 +0900

    [ruby/rubygems] [DOC] Fix the location of Gem::Deprecate document

    It was bound to `module Gem`, instead of `module Deprecate`.

    https://github.com/ruby/rubygems/commit/da29f74ba1

commit 28f760bf70085d97bab62c29e13c69c5a732e758
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 13:03:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 13:10:10 +0900

    [ruby/stringio] Suppress warnings against pattern matching on ruby 2.7

    https://github.com/ruby/stringio/commit/cf58a203eb

commit 19295f5db3316dd47d0aded90a21b07d7e761902
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 12:55:41 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 12:58:43 +0900

    [ruby/cgi] [DOC] Missing documents

    https://github.com/ruby/cgi/commit/ebd04d1eb1

commit 40d6626bbf0b0bd4c672d48dbf928ab8429912f9
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-08 07:25:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 12:49:44 +0900

    [ruby/rubygems] Fixed with Lint/RedundantSplatExpansion

    https://github.com/ruby/rubygems/commit/2078f3d351

commit b1dfcd6507452d577162d12ecb0828abe64d8162
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 12:40:32 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 12:45:08 +0900

    [ruby/stringio] [DOC] Suppress documentation for internals

    https://github.com/ruby/stringio/commit/27b2fb2fce

commit 3147df87baf8898e6fb3c1482e7a5ed58945c97a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 12:36:55 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 12:38:04 +0900

    [ruby/net-http] [DOC] Suppress documentation for internals

    https://github.com/ruby/net-http/commit/b7c586985a

commit f29d772a73ed25c5bcc6eab1d55684894292d160
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-11-06 11:20:11 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 11:40:46 +0900

    [ruby/net-http] Remember if TCPSocket impl supports open_timeout

    For open_timeout support detection, the previous implementation relied
    on an ArgumentError being raised and then rescued. In Ruby, rescue is a
    rather expensive operation and should be avoided when possible.

    This patch reduces the number of begin-rescues by remembering if the
    TCPSocket implementation supports open_timeout.

    https://github.com/ruby/net-http/commit/06d982f3a1

commit 97efbc47d080e3ade3b5db889d3740fdf0711161
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-07-22 23:34:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 11:40:46 +0900

    [ruby/net-http] Ruby 2 compat

    https://github.com/ruby/net-http/commit/09bf573dd5

commit f710e6bb54a1e2cfe808222bc8d70d8f68ab5dc9
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-07-17 00:09:47 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 11:40:46 +0900

    [ruby/net-http] Replace Timeout.timeout with TCPSocket.open(open_timeout:) when available

    This patch replaces the implementation of #open_timeout from Timeout.timeout from the builtin timeout in TCPSocket.open, which was introduced in Ruby 3.5 (https://bugs.ruby-lang.org/issues/21347).

    The builtin timeout in TCPSocket.open is better in several ways than Timeout.timeout. It does not rely on a separate Ruby Thread for monitoring Timeout (which is what the timeout library internally does).

    Furthermore, it is compatible with Ractors, as opposed to Timeout.timeout (it internally uses Thread::Mutex which can not be used in non-main Ractors).
    This change allows the following code to work.

        require 'net/http'
        Ractor.new {
          uri = URI('http://example.com/')
          http = Net::HTTP.new(uri.host, uri.port)
          http.open_timeout = 1
          http.get(uri.path)
        }.value

    In Ruby <3.5 environments where `TCPSocket.open` does not have the `open_timeout` option, I have kept the behavior unchanged. net/http will use `Timeout.timeout { TCPSocket.open }`.

    https://github.com/ruby/net-http/commit/728eb8fc42

commit 8fa29a75abf265c20cdeb9779bf25c1b3eafcf26
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-10 11:10:15 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-10 11:10:23 +0900

    Fix condition for Timeout Error with >= macOS 26.1

commit a43acf9a3f411fac78d92b9f2f8060c83f9ab15b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-10 10:52:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 10:52:39 +0900

    [ruby/resolv] [DOC] `Resolv::LOC` itself is undocumented

    https://github.com/ruby/resolv/commit/7c5bfe7acd

commit d05f23b51f8b9c3f80eff6f5a304b07b9f9d7fcf
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-11-06 10:59:59 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-11-10 09:42:26 +0900

    ZJIT: handle megamorphic and skewed megamorphic profiling results

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15032

commit 6902bc71b9afeaa305342576dc1e75ceb0a175f4
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-11-02 00:49:10 +0900
  Commit:     Stan Lo <stan001212@gmail.com>
  CommitDate: 2025-11-10 09:42:26 +0900

    ZJIT: Refactor receiver type resolution

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15032

commit a731080f46f69bcb23aa98e565930931cf1faa0c
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-06 12:52:46 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-10 04:14:54 +0900

    Make rb_gc_obj_optimal_size always return allocatable size

    It may return sizes that aren't allocatable for arrays and strings.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15119

commit 17efb770c89029f6b7df639b673a9a8cc08c8d0d
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-10 02:54:41 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-10 03:01:56 +0900

    sync_default_gems.yml: Pull --rebase before push

    It was supposed to update a local branch in case the remote branch was
    updated between actions/checkout and the end of tool/sync_default_gems.rb.

    Note that this `git pull` didn't exist in the original bin/update-default-gem.sh
    https://github.com/ruby/git.ruby-lang.org/commit/d9e9bcc60dcf0dd1cbdc2dd42bc0286439e471aa,
    so it was newly introduced at https://github.com/ruby/ruby/commit/3ba5cfd1cb77b61b2b1ad1d03271bc1fe7b71969.

    But `git pull --no-ff` failed when master had updates in an unrelated
    repository. I think we need to use `git pull --rebase` instead.

    This fixes:

    * https://github.com/ruby/ruby/actions/runs/19207693793/job/54905403070
        * checkout: f08030e9dccf38d9ea5c9505203fe26484dc28d8
        * ruby tool/sync_default_gems.rb net-http ec9c70a6fba75a63c128864ef3cb32c883665a33..e4d80bd609f22cad04a2e2c1d54c981bb853c938
        * pull: 2bf82c627494e785737037bbaf9a6b98f3c6354c

commit f1b1899a749b28ce5c951034efeb096d15ae244c
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-10 01:33:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-10 02:29:03 +0900

    [ruby/mmtk] Lock the VM when freeing objects in rb_gc_impl_shutdown_call_finalizer

    https://github.com/ruby/mmtk/commit/1828f6596f

commit 4639bbc8e91238caa4774a8916ec6555b71d6e1b
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-10 00:35:21 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-10 00:35:28 +0900

    auto_review_pr.rb: Tweak the review message

commit 2b6580d44aef3f867321d1f8b346c500e51a4344
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-10 00:34:18 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-10 00:34:32 +0900

    auto_review_pr.rb: Remove an unused variable

    Follow-up: https://github.com/ruby/ruby/pull/15116

commit a7a4bb93fc37b3d4ad5a7b2147c9adf952928342
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-10 00:16:42 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-10 00:16:42 +0900

    Automatically review default-gem pull requests (#15116)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit 4fe0342a860bc3aceb5f51707732545f83a0ac35
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 22:18:37 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 22:18:37 +0900

    Reapply "[ruby/net-http] [DOC] Suppress documentation for internals"

    This reverts commit af610e107c3a7515228843eb6b1c5978f2ee2685.
    Reverted by a mistake.

commit af610e107c3a7515228843eb6b1c5978f2ee2685
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:58:53 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 22:11:40 +0900

    Revert "[ruby/net-http] [DOC] Suppress documentation for internals"

    This reverts commit 155cdce539a95b510a80a19e3840cde6b293cd4d.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15115

commit 26fc938b9f81a023494ca356583c7c1a86972619
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:48:30 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 22:11:40 +0900

    [DOC] Sort undocumented items by locations

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15115

commit 87c39667bf881527d4ddfe1c558fc98adb9543a0
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:13:01 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 22:11:40 +0900

    [DOC] ObjectSpace.trace_object_allocations_debug_start

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15115

commit 953fee11b39197f4ab6170c4c0a48a396be2b4cc
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 19:09:28 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 22:11:39 +0900

    [DOC] Document of Coverage.line_stub from NEWS-2.6.0

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15115

commit 4170b70d32c3165da92eb258556f3ddf5b9767f3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 22:06:30 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 22:10:33 +0900

    [ruby/net-http] [DOC] Fix too stopped documentations

    https://github.com/ruby/net-http/commit/58685b78ab

commit bf29ba452aa946bc6791b9d04b69003ae41c42cb
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:32:23 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 21:45:48 +0900

    [ruby/resolv] [DOC] Fix documentations

    https://github.com/ruby/resolv/commit/d8b8d36f63

commit d79ff407825352953293ea7c399cd3a94aef021f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:30:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 21:45:48 +0900

    [ruby/resolv] Require win32/resolv just once

    And Use Win32::Resolv instead of a constant `WINDOWS`.

    https://github.com/ruby/resolv/commit/b2c775cd80

commit 063aea8ce47162e8cf0abc48e00bdbbc5dfcbea2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:39:38 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 21:45:48 +0900

    [ruby/resolv] Exclude unneeded files

    https://github.com/ruby/resolv/commit/60bf151a1d

commit 79342334e0d1be3101568a0eb695414e5b0d3801
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:23:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 21:27:12 +0900

    [ruby/ipaddr] [DOC] Stop documentation for internals

    https://github.com/ruby/ipaddr/commit/cb9f561883

commit f23fab66c294ab39f822587432f1e8d1b6da2e3a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 21:21:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 21:27:12 +0900

    [ruby/ipaddr] gemspec files does not need to be included in spec.files

    https://github.com/ruby/ipaddr/commit/ada04589fe

commit 6cac64348725b4961a70597a4aa202f9e0c3c120
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-07 11:24:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 21:08:45 +0900

    [ruby/win32-registry] [DOC] Convert documents from RD2

    https://github.com/ruby/win32-registry/commit/8680eedd43

commit 155cdce539a95b510a80a19e3840cde6b293cd4d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 18:50:23 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 21:06:24 +0900

    [ruby/net-http] [DOC] Suppress documentation for internals

    https://github.com/ruby/net-http/commit/e4d80bd609

commit 001890b851cd058b2b9980709139070af27e3612
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 18:38:47 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 21:06:23 +0900

    [ruby/net-http] Exclude unneeded files

    https://github.com/ruby/net-http/commit/89e1ecb556

commit 2bf82c627494e785737037bbaf9a6b98f3c6354c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 18:15:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 20:18:09 +0900

    [ruby/net-protocol] [DOC] Suppress documentation for internals

    https://github.com/ruby/net-protocol/commit/6c5734dc1e

commit 44d19928b6b6af945b79415fcff4ffc731e99173
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 17:59:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 20:18:09 +0900

    [ruby/net-protocol] Exclude unneeded files

    https://github.com/ruby/net-protocol/commit/8286341e8c

commit f08030e9dccf38d9ea5c9505203fe26484dc28d8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 20:16:22 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 20:17:02 +0900

    [ruby/optparse] [DOC] A constant for compatibility

    https://github.com/ruby/optparse/commit/0125cb4918

commit a4dff09be79b52288a47658964d25e5aa84fc960
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-09 15:17:56 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-09 16:39:38 +0900

    [Bug #21673] Fix resolving refined module-defined method

    A method defined in a module has no `defined_class`, use the ICLASS
    for it as the `defined_class`.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15114

commit a88d7718f427acdd040f7b978e0514f0fea0b1d8
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-11-09 15:50:26 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-09 15:50:26 +0900

    Update bundled gems list as of 2025-11-09

commit 529dd8d76efbe655fabce8933852504851266b2b
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-09 12:49:27 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-09 12:49:32 +0900

    cygwin.yml: Disable a broken step

    https://github.com/ruby/ruby/actions/runs/19201736990/job/54890646022

commit 827f11fce3c92dce80ebc5dc80be9acdafae1173
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-11-09 07:13:11 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-11-09 10:58:25 +0900

    Move rb_gc_verify_shareable to gc.c

    rb_gc_verify_shareable is not GC implementation specific so it should live
    in gc.c.

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15108

commit 79eed1158de4164f72def32093aa31bcac339639
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-09 07:27:26 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-09 07:27:26 +0900

    [DOC] Tweaks for String#to_i (#15036)

  Notes:
    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 75d25a42e6052b5f5d90d2d4022ae996fee5913a
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-11-09 00:08:09 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-09 00:08:09 +0900

    [DOC] Tweaks for String#to_c

  Notes:
    Merged: https://github.com/ruby/ruby/pull/14960

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 4365c4fb6bd816fc8e9a9dcabacde47c5264d713
  Author:     Joshua Young <djry1999@gmail.com>
  AuthorDate: 2025-11-08 20:52:39 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-08 20:52:39 +0900

    [DOC] Replace 3.5 reference in NEWS.md

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15106

    Merged-By: nobu <nobu@ruby-lang.org>

commit 3a5e7e9580fd8cea5f9b53dda377e61faeebe621
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-08 13:20:01 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-08 20:51:04 +0900

    Constify

commit aacd9f206a57375df38e1b2552da37a68d77e1e1
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-11-08 14:55:41 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-11-08 14:55:41 +0900

    Notify CI failures of Cygwin

commit 4aea392e69488209d1f3c7b671aadafc0d2d76b3
  Author:     Aiden Fox Ivey <aiden@aidenfoxivey.com>
  AuthorDate: 2025-11-08 12:47:32 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-08 12:47:32 +0900

    ZJIT: Specialize String#setbyte for fixnum case (#14927)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit c65f8b6370f5ef692148786b5e8de54c4d14c132
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-08 10:17:07 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-08 10:17:07 +0900

    Prevent the path for copied extension from GC

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15103

commit 3b588dab91f13b32b54cb1b9dedb9691e732c981
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-11-08 05:12:25 +0900
  Commit:     John Hawthorn <john@hawthorn.email>
  CommitDate: 2025-11-08 10:06:56 +0900

    Don't modify fstrings in rb_str_tmp_frozen_no_embed_acquire

    [Bug #21671]

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15101

commit 7037d8f89e71a13547d031d76747e45cfe930c9f
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-07 21:14:07 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-08 09:22:17 +0900

    [ruby/prism] Rename Ruby 3.5 to Ruby 4.0

    See https://github.com/ruby/ruby/commit/6d81969b475262aba251e99b518181bdf7c5a523

    It leaves the old variant around. RuboCop for examples accesses `Prism::Translation::Parser35`
    to test against ruby-head. For now I left these simply as an alias

    https://github.com/ruby/prism/commit/d0a823f045

commit a7c23b9a9f726bec7cbd6f89d157d7dd140420da
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-07 13:16:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-08 05:12:48 +0900

    [ruby/rubygems] Use Dir.pwd instead of Pathname.pwd

    https://github.com/ruby/rubygems/commit/6c161b253d

commit 110f24c47e162db7730757cb4a9b13d1148ec85e
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-07 09:08:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-08 05:12:48 +0900

    [ruby/rubygems] Restore pathname for rake dev:deps

    https://github.com/ruby/rubygems/commit/89e95d0f15

commit 2518aa9117907d7ed08f469df596c0be961fc8fe
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-07 07:23:07 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-08 05:12:47 +0900

    [ruby/rubygems] Replace Pathname#rmtree to FileUtils.rm_rf directly

    https://github.com/ruby/rubygems/commit/33c7a9a565

commit 9767b31090f923200abff68657c6489e8f32cfde
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-07 07:14:31 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-08 05:12:47 +0900

    [ruby/rubygems] Removed unnecessary loading of pathname

    https://github.com/ruby/rubygems/commit/6e965b7872

commit 4816969c28def82d2fe57045758f5b39b3ac8081
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-11-07 07:12:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-08 05:12:46 +0900

    [ruby/rubygems] Replaced pathname auto-loading in bootstrap of bundler

    https://github.com/ruby/rubygems/commit/79ba4a537d

commit f55421e81c20dea72eb81b38cd1093e5d9936597
  Author:     Jacob <jacob.denbeaux@shopify.com>
  AuthorDate: 2025-11-08 03:50:17 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-08 03:50:17 +0900

    ZJIT: Add compilation for checkkeyword (#14764)

    <details>
    <summary>Before</summary>
    <br>

    ```
    **ZJIT: Printing ZJIT statistics on exit***
    Top-20 not inlined C methods (64.0% of total 3,683,424):
                                   Kernel#is_a?: 427,127 (11.6%)
                                       Hash#[]=: 426,276 (11.6%)
                             String#start_with?: 336,245 ( 9.1%)
                     ObjectSpace::WeakKeyMap#[]: 139,406 ( 3.8%)
                                     Hash#fetch: 127,291 ( 3.5%)
                                    String#hash:  79,259 ( 2.2%)
                          Process.clock_gettime:  74,658 ( 2.0%)
                                     Array#any?:  74,441 ( 2.0%)
                                     Integer#==:  71,067 ( 1.9%)
                                     Kernel#dup:  68,058 ( 1.8%)
                                      Hash#key?:  62,306 ( 1.7%)
                                  Regexp#match?:  62,247 ( 1.7%)
                        SQLite3::Statement#step:  61,172 ( 1.7%)
                       SQLite3::Statement#done?:  61,172 ( 1.7%)
                                   Kernel#Array:  55,015 ( 1.5%)
                                    Integer#<=>:  49,127 ( 1.3%)
                                     String.new:  48,363 ( 1.3%)
                                        IO#read:  47,753 ( 1.3%)
                                 Array#include?:  43,307 ( 1.2%)
                              Struct#initialize:  42,650 ( 1.2%)
    Top-3 not optimized method types for send (100.0% of total 1,022,743):
       iseq: 736,483 (72.0%)
      cfunc: 286,174 (28.0%)
       null:      86 ( 0.0%)
    Top-6 not optimized method types for send_without_block (100.0% of total 189,556):
             optimized_call: 115,966 (61.2%)
             optimized_send:  36,767 (19.4%)
      optimized_struct_aset:  33,788 (17.8%)
                       null:   2,521 ( 1.3%)
       optimized_block_call:     510 ( 0.3%)
                      cfunc:       4 ( 0.0%)
    Top-13 not optimized instructions (100.0% of total 1,648,882):
                 invokesuper: 697,471 (42.3%)
                 invokeblock: 496,687 (30.1%)
                 sendforward: 221,094 (13.4%)
                      opt_eq: 147,620 ( 9.0%)
                   opt_minus:  40,865 ( 2.5%)
                    opt_plus:  22,912 ( 1.4%)
      opt_send_without_block:  18,932 ( 1.1%)
                      opt_gt:     867 ( 0.1%)
                    opt_mult:     768 ( 0.0%)
                     opt_neq:     654 ( 0.0%)
                      opt_or:     508 ( 0.0%)
                      opt_lt:     359 ( 0.0%)
                      opt_ge:     145 ( 0.0%)
    Top-13 send fallback reasons (100.0% of total 8,308,826):
                              send_without_block_polymorphic: 3,174,975 (38.2%)
                                   not_optimized_instruction: 1,648,882 (19.8%)
                                          fancy_call_feature: 1,072,807 (12.9%)
                              send_not_optimized_method_type: 1,022,743 (12.3%)
                                            send_no_profiles:   599,715 ( 7.2%)
                              send_without_block_no_profiles:   486,108 ( 5.9%)
      send_without_block_not_optimized_optimized_method_type:   187,031 ( 2.3%)
                                            send_polymorphic:   101,834 ( 1.2%)
                                    obj_to_string_not_string:     7,610 ( 0.1%)
                send_without_block_not_optimized_method_type:     2,525 ( 0.0%)
                     send_without_block_direct_too_many_args:     2,369 ( 0.0%)
                     send_without_block_cfunc_array_variadic:     2,190 ( 0.0%)
                              ccall_with_frame_too_many_args:        37 ( 0.0%)
    Top-8 popular unsupported argument-parameter features (100.0% of total 1,209,121):
              param_opt: 583,595 (48.3%)
      param_forwardable: 178,162 (14.7%)
            param_block: 162,689 (13.5%)
               param_kw: 150,575 (12.5%)
             param_rest:  90,091 ( 7.5%)
           param_kwrest:  33,791 ( 2.8%)
           caller_splat:  10,214 ( 0.8%)
        caller_kw_splat:       4 ( 0.0%)
    Top-7 unhandled YARV insns (100.0% of total 128,032):
            checkkeyword: 88,698 (69.3%)
      invokesuperforward: 22,296 (17.4%)
           getblockparam: 16,292 (12.7%)
             getconstant:    336 ( 0.3%)
              checkmatch:    290 ( 0.2%)
           setblockparam:    101 ( 0.1%)
                    once:     19 ( 0.0%)
    Top-1 compile error reasons (100.0% of total 21,283):
      exception_handler: 21,283 (100.0%)
    Top-18 side exit reasons (100.0% of total 2,335,562):
                       guard_type_failure: 677,930 (29.0%)
                      guard_shape_failure: 410,183 (17.6%)
                          unhandled_kwarg: 235,100 (10.1%)
         patchpoint_stable_constant_names: 206,172 ( 8.8%)
      block_param_proxy_not_iseq_or_ifunc: 199,931 ( 8.6%)
            patchpoint_no_singleton_class: 188,359 ( 8.1%)
                      unhandled_yarv_insn: 128,032 ( 5.5%)
                    unknown_newarray_send: 124,805 ( 5.3%)
              patchpoint_method_redefined:  73,062 ( 3.1%)
                       unhandled_hir_insn:  56,688 ( 2.4%)
                            compile_error:  21,283 ( 0.9%)
               block_param_proxy_modified:  11,647 ( 0.5%)
                     fixnum_mult_overflow:     954 ( 0.0%)
                  patchpoint_no_ep_escape:     813 ( 0.0%)
                 guard_bit_equals_failure:     316 ( 0.0%)
                   obj_to_string_fallback:     230 ( 0.0%)
                                interrupt:      35 ( 0.0%)
                   guard_type_not_failure:      22 ( 0.0%)
                                 send_count: 26,775,579
                         dynamic_send_count:  8,308,826 (31.0%)
                       optimized_send_count: 18,466,753 (69.0%)
                  iseq_optimized_send_count:  7,611,729 (28.4%)
          inline_cfunc_optimized_send_count:  5,935,290 (22.2%)
           inline_iseq_optimized_send_count:    657,555 ( 2.5%)
    non_variadic_cfunc_optimized_send_count:  3,169,054 (11.8%)
        variadic_cfunc_optimized_send_count:  1,093,125 ( 4.1%)
    dynamic_getivar_count:                        2,793,635
    dynamic_setivar_count:                        3,040,844
    compiled_iseq_count:                              4,496
    failed_iseq_count:                                    0
    compile_time:                                     915ms
    profile_time:                                       6ms
    gc_time:                                            6ms
    invalidation_time:                                 20ms
    vm_write_pc_count:                           26,857,114
    vm_write_sp_count:                           25,770,558
    vm_write_locals_count:                       25,770,558
    vm_write_stack_count:                        25,770,558
    vm_write_to_parent_iseq_local_count:            106,036
    vm_read_from_parent_iseq_local_count:         3,213,992
    guard_type_count:                            27,683,170
    guard_type_exit_ratio:                             2.4%
    code_region_bytes:                           32,178,176
    side_exit_count:                              2,335,562
    total_insn_count:                           170,714,077
    vm_insn_count:                               28,999,194
    zjit_insn_count:                            141,714,883
    ratio_in_zjit:                                    83.0%

    ```

    </details>
    <details>
    <summary>After</summary>
    <br>

    ```
    **ZJIT: Printing ZJIT statistics on exit***
    Top-20 not inlined C methods (63.9% of total 3,686,703):
                                   Kernel#is_a?: 427,123 (11.6%)
                                       Hash#[]=: 426,276 (11.6%)
                             String#start_with?: 336,245 ( 9.1%)
                     ObjectSpace::WeakKeyMap#[]: 139,406 ( 3.8%)
                                     Hash#fetch: 127,291 ( 3.5%)
                                    String#hash:  79,259 ( 2.1%)
                          Process.clock_gettime:  74,658 ( 2.0%)
                                     Array#any?:  74,441 ( 2.0%)
                                     Integer#==:  71,067 ( 1.9%)
                                     Kernel#dup:  68,058 ( 1.8%)
                                  Regexp#match?:  62,336 ( 1.7%)
                                      Hash#key?:  62,306 ( 1.7%)
                        SQLite3::Statement#step:  61,172 ( 1.7%)
                       SQLite3::Statement#done?:  61,172 ( 1.7%)
                                   Kernel#Array:  55,048 ( 1.5%)
                                    Integer#<=>:  49,127 ( 1.3%)
                                     String.new:  48,363 ( 1.3%)
                                        IO#read:  47,753 ( 1.3%)
                                 Array#include?:  43,309 ( 1.2%)
                              Struct#initialize:  42,650 ( 1.2%)
    Top-3 not optimized method types for send (100.0% of total 1,026,413):
       iseq: 737,496 (71.9%)
      cfunc: 288,831 (28.1%)
       null:      86 ( 0.0%)
    Top-6 not optimized method types for send_without_block (100.0% of total 189,556):
             optimized_call: 115,966 (61.2%)
             optimized_send:  36,767 (19.4%)
      optimized_struct_aset:  33,788 (17.8%)
                       null:   2,521 ( 1.3%)
       optimized_block_call:     510 ( 0.3%)
                      cfunc:       4 ( 0.0%)
    Top-13 not optimized instructions (100.0% of total 1,648,949):
                 invokesuper: 697,452 (42.3%)
                 invokeblock: 496,687 (30.1%)
                 sendforward: 221,094 (13.4%)
                      opt_eq: 147,620 ( 9.0%)
                   opt_minus:  40,863 ( 2.5%)
                    opt_plus:  22,912 ( 1.4%)
      opt_send_without_block:  19,020 ( 1.2%)
                      opt_gt:     867 ( 0.1%)
                    opt_mult:     768 ( 0.0%)
                     opt_neq:     654 ( 0.0%)
                      opt_or:     508 ( 0.0%)
                      opt_lt:     359 ( 0.0%)
                      opt_ge:     145 ( 0.0%)
    Top-13 send fallback reasons (100.0% of total 8,318,975):
                              send_without_block_polymorphic: 3,177,471 (38.2%)
                                   not_optimized_instruction: 1,648,949 (19.8%)
                                          fancy_call_feature: 1,075,143 (12.9%)
                              send_not_optimized_method_type: 1,026,413 (12.3%)
                                            send_no_profiles:   599,748 ( 7.2%)
                              send_without_block_no_profiles:   486,190 ( 5.8%)
      send_without_block_not_optimized_optimized_method_type:   187,031 ( 2.2%)
                                            send_polymorphic:   102,497 ( 1.2%)
                                    obj_to_string_not_string:     8,412 ( 0.1%)
                send_without_block_not_optimized_method_type:     2,525 ( 0.0%)
                     send_without_block_direct_too_many_args:     2,369 ( 0.0%)
                     send_without_block_cfunc_array_variadic:     2,190 ( 0.0%)
                              ccall_with_frame_too_many_args:        37 ( 0.0%)
    Top-8 popular unsupported argument-parameter features (100.0% of total 1,211,457):
              param_opt: 584,073 (48.2%)
      param_forwardable: 178,907 (14.8%)
            param_block: 162,689 (13.4%)
               param_kw: 151,688 (12.5%)
             param_rest:  90,091 ( 7.4%)
           param_kwrest:  33,791 ( 2.8%)
           caller_splat:  10,214 ( 0.8%)
        caller_kw_splat:       4 ( 0.0%)
    Top-6 unhandled YARV insns (100.0% of total 39,334):
      invokesuperforward: 22,296 (56.7%)
           getblockparam: 16,292 (41.4%)
             getconstant:    336 ( 0.9%)
              checkmatch:    290 ( 0.7%)
           setblockparam:    101 ( 0.3%)
                    once:     19 ( 0.0%)
    Top-1 compile error reasons (100.0% of total 21,283):
      exception_handler: 21,283 (100.0%)
    Top-18 side exit reasons (100.0% of total 2,253,541):
                       guard_type_failure: 682,695 (30.3%)
                      guard_shape_failure: 410,183 (18.2%)
                          unhandled_kwarg: 236,780 (10.5%)
         patchpoint_stable_constant_names: 206,310 ( 9.2%)
      block_param_proxy_not_iseq_or_ifunc: 199,931 ( 8.9%)
            patchpoint_no_singleton_class: 188,438 ( 8.4%)
                    unknown_newarray_send: 124,805 ( 5.5%)
              patchpoint_method_redefined:  73,056 ( 3.2%)
                       unhandled_hir_insn:  56,686 ( 2.5%)
                      unhandled_yarv_insn:  39,334 ( 1.7%)
                            compile_error:  21,283 ( 0.9%)
               block_param_proxy_modified:  11,647 ( 0.5%)
                     fixnum_mult_overflow:     954 ( 0.0%)
                  patchpoint_no_ep_escape:     813 ( 0.0%)
                 guard_bit_equals_failure:     316 ( 0.0%)
                   obj_to_string_fallback:     230 ( 0.0%)
                                interrupt:      58 ( 0.0%)
                   guard_type_not_failure:      22 ( 0.0%)
                                 send_count: 27,032,751
                         dynamic_send_count:  8,318,975 (30.8%)
                       optimized_send_count: 18,713,776 (69.2%)
                  iseq_optimized_send_count:  7,809,698 (28.9%)
          inline_cfunc_optimized_send_count:  5,980,083 (22.1%)
           inline_iseq_optimized_send_count:    657,677 ( 2.4%)
    non_variadic_cfunc_optimized_send_count:  3,170,381 (11.7%)
        variadic_cfunc_optimized_send_count:  1,095,937 ( 4.1%)
    dynamic_getivar_count:                        2,793,987
    dynamic_setivar_count:                        3,350,905
    compiled_iseq_count:                              4,498
    failed_iseq_count:                                    0
    compile_time:                                     884ms
    profile_time:                                       6ms
    gc_time:                                            6ms
    invalidation_time:                                 19ms
    vm_write_pc_count:                           27,417,915
    vm_write_sp_count:                           26,327,928
    vm_write_locals_count:                       26,327,928
    vm_write_stack_count:                        26,327,928
    vm_write_to_parent_iseq_local_count:            106,036
    vm_read_from_parent_iseq_local_count:         3,213,992
    guard_type_count:                            27,937,831
    guard_type_exit_ratio:                             2.4%
    code_region_bytes:                           32,571,392
    side_exit_count:                              2,253,541
    total_insn_count:                           170,630,429
    vm_insn_count:                               26,617,244
    zjit_insn_count:                            144,013,185
    ratio_in_zjit:                                    84.4%

    ```

    </details>

  Notes:
    Merged-By: tekknolagi <donotemailthisaddress@bernsteinbear.com>

commit 9bbe4b600b2bc2866561d095c3409589a214a358
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-11-08 01:54:21 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-11-08 01:54:21 +0900

    ZJIT: Carve out IseqPayload into a separate module (#15098)

  Notes:
    Merged-By: k0kubun <takashikkbn@gmail.com>

commit a1366f21e3beb936fedcd2dcce51b2d10a5434a0
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-07 23:47:16 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-07 23:47:16 +0900

    [Feature #19630] [DOC] News about removal of IO operation with `|`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15096

commit 201ed7541b840310105c272625e5c0d01fe1d48b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-07 23:09:24 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-07 23:46:00 +0900

    Suppress sign-compare warnings

commit a2201570bd12e096b0cecf9d82f4d45eb19c8676
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-11-07 21:55:17 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-11-07 23:35:51 +0900

    Remove `rb_path_check` declaration

    Implementation was removed in https://github.com/ruby/ruby/commit/a4c051b870ac7f7b3c5482baf05600e1f6751b47

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15095

commit 41865bb6712a14ad1fc2e729316b4e2d8452babc
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-07 21:57:24 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-07 21:57:24 +0900

    Use `IO.popen` instead of `IO.foreach` with pipe

commit 1f32464a2dcaf641c9fd77a323a13e44dd1d2670
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-07 17:57:55 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-07 20:42:29 +0900

    Update Bundler::CurrentRuby::ALL_RUBY_VERSIONS

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15094

commit 996cae65f3cc8fed60c6bb758b00882cac49389d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-10-30 12:43:26 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-07 20:42:29 +0900

    Deprecate IO operation with `|`

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15094

commit f4e01783d3412b10f9978b5297142979cb067ce8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-10-30 14:14:58 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-07 20:42:29 +0900

    Prism update for 4.0

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15094

commit a4c051b870ac7f7b3c5482baf05600e1f6751b47
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-10-29 22:14:22 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-11-07 20:42:29 +0900

    Remove PATH check

  Notes:
    Merged: https://github.com/ruby/ruby/pull/15094

commit f3dd4bef786f8d56a2702b340f66e3a374c3ad3f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-11-07 18:41:04 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-11-07 20:07:47 +0900

    Skip removed test for JSON.deep_const_get

commit a881f2a0f441bf6d06a68bf711ca81dd6b3a1026
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-07 18:04:43 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-07 18:06:36 +0900

    [ruby/json] Release 2.16.0

    https://github.com/ruby/json/commit/5a12067f88

commit cd8902cce871144931a492408945d233f0926584
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-07 17:51:34 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-07 18:02:47 +0900

    [ruby/json] Deprecate `JSON::State#[]` and `JSON::State#[]=`

    This prevent from freezing and sharing state instances.

    If you needs some sort of arguments or extra state to the generator
    methods, consider using `JSON::Coder` instead.

    https://github.com/ruby/json/commit/e9fbc8937f

commit da6ba845545036f9bb89dae390dda78e23a3a337
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-11-07 17:45:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-11-07 17:46:00 +0900

    [ruby/json] Get rid of JSON.deep_const_get (private API)

    https://github.com/ruby/json/commit/826cb2a4f4

commit 6d81969b475262aba251e99b518181bdf7c5a523
  Author:     Yukihiro "Matz" Matsumoto <matz@ruby.or.jp>
  AuthorDate: 2025-11-07 16:41:47 +0900
  Commit:     Yukihiro "Matz" Matsumoto <matz@ruby.or.jp>
  CommitDate: 2025-11-07 16:41:47 +0900

    Development of 4.0.0 started.
