-*- coding: utf-8 -*-

base-url = https://github.com/ruby/ruby

commit aec8563df22fb418566a9806e8b782c38b750f46
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-02-12 20:30:12 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-13 06:51:45 +0900

    Use Oregon mirror for cygwin download

commit 485a6037916fa09b07429d41e8699586271eb91c
  Author:     Chris Hasiński <krzysztof.hasinski@gmail.com>
  AuthorDate: 2026-01-20 02:35:52 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-13 03:41:49 +0900

    Fix bundled gems warning for all subfeatures of hyphenated gems

    PR #15822 fixed the warning for direct hyphenated gem requires like
    `benchmark/ips` → `benchmark-ips`. However, hyphenated gems often
    provide multiple files under their namespace.

    For example, `benchmark-ips` provides:
    - benchmark/ips.rb
    - benchmark/timing.rb
    - benchmark/compare.rb

    When requiring `benchmark/timing`, the previous fix only checked for
    `benchmark-timing` gem (doesn't exist), not `benchmark-ips` which
    actually provides the file.

    This fix checks if ANY gem matching `{prefix}-*` is in the bundle
    specs, which covers all subfeatures provided by hyphenated gems.

    Reported in https://github.com/ruby/ruby/pull/15822#issuecomment-123456

commit f3bfffe8565b08b3426003aebbe328a0ecedad26
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-02-11 03:46:40 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2026-02-11 03:46:40 +0900

    ZJIT: Avoid runtime exceptions from RubyVM::ZJIT.stats_string (#16139)

    Before this it would raise if zjit wasn't enabled
    and raise a different exception if zjit was but extended stats were
    not (_some_ stats are available).

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

commit 0768f08caff514b0ba616dc26d76aad90577eefe
  Author:     Mike Dalessio <mike@37signals.com>
  AuthorDate: 2026-02-11 02:10:21 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-11 03:32:51 +0900

    Fix UnboundMethod#== for methods from included/extended modules [Backport #21873]

    Method#unbind clones the method entry, preserving its defined_class.
    For methods mixed in via include/extend, defined_class is an ICLASS,
    causing UnboundMethod#== to return false when comparing against the
    same method obtained via Module#instance_method.

    Resolve ICLASS defined_class in method_eq.

    [Bug #21873]

commit e025c839ac71b609bb50ff74352f9a11cd164c3c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-02-10 10:07:39 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-10 10:38:24 +0900

    Merge RubyGems/Bundler 4.0.6

commit 87b544b8c4400ef2b37405f132846e5c3738213b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-02-10 10:07:38 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-10 10:38:24 +0900

    Merge RubyGems/Bundler 4.0.5

commit 91a4926c9a9cd12f43307a2c934766c000356f07
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-02-10 10:07:37 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-10 10:38:24 +0900

    Merge RubyGems/Bundler 4.0.4

commit d5d3fb8b80e81426517bf150ebcab83be4ed996d
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-02-10 08:39:41 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-10 08:39:41 +0900

    merge revision(s) 8a586af33b59cae93a1bee13c39e87dd087a4a6b: [Backport #21838]

            [PATCH] Don't force major GC when there are allocatable slots

            [Bug #21838]

            When we have allocatable slots, we can grow the heap instead of forcing
            a major GC. This prevents major GC to be ran very often in certain situations.
            See the ticket for more details.

            On ruby-bench, we can see that this patch doesn't cause any significant
            regressions:

                --------------  -----------  ----------  ---------  -----------  ----------  ---------  --------------  -------------
                bench           master (ms)  stddev (%)  RSS (MiB)  branch (ms)  stddev (%)  RSS (MiB)  branch 1st itr  master/branch
                activerecord    148.2        0.3         59.2       150.0        0.8         69.7       1.015           0.988
                chunky-png      435.2        0.3         72.9       438.8        0.1         66.7       0.993           0.992
                erubi-rails     733.8        1.2         118.7      704.8        0.2         98.3       1.077           1.041
                hexapdf         1400.4       1.1         247.0      1405.0       0.9         223.7      0.986           0.997
                liquid-c        32.5         3.3         32.8       32.5         2.1         30.7       1.042           0.999
                liquid-compile  31.0         1.7         35.1       33.4         3.9         32.8       0.938           0.928
                liquid-render   84.7         0.4         30.8       86.3         0.4         30.8       0.981           0.982
                lobsters        594.7        0.6         310.5      596.6        0.4         306.0      1.057           0.997
                mail            75.6         2.8         53.3       76.9         0.7         53.2       0.968           0.982
                psych-load      1122.8       1.2         29.2       1145.1       0.4         31.7       0.964           0.981
                railsbench      1244.7       0.3         115.5      1254.8       1.1         115.2      0.939           0.992
                rubocop         103.7        0.5         94.1       104.3        0.5         92.4       0.985           0.994
                ruby-lsp        88.3         0.6         78.5       88.5         1.2         77.9       0.992           0.997
                sequel          26.9         0.9         33.6       28.3         1.4         32.1       0.954           0.952
                shipit          1119.3       1.5         171.4      1075.7       2.1         162.5      1.873           1.040
                --------------  -----------  ----------  ---------  -----------  ----------  ---------  --------------  -------------

commit 306930ae1ac62fb3b7f96581f4a6e9ab4c083e84
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-02-10 06:44:42 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-10 06:44:42 +0900

    merge revision(s) 78b7646bdb91285873ac26bca060591e06c45afe, b4a62a1ca949d93332ad8bce0fcc273581160cc5: [Backport #21842]

            [PATCH] [Bug #21842] Let `rb_interned_str` return US-ASCII if possible

            [PATCH] [DOC] Update docs for rb_interned_str and related functions (#15897)

            Related to [Bug #21842].

            * rb_interned_str: document what decides whether the returned string is
              in US-ASCII or BINARY encoding.
            * rb_interned_str_cstr: include the same description as rb_interned_str
              for the encoding. This one was still missing the update for US-ASCII
              and erroneously said the returned string was alwasy in BINARY encoding
            * rb_str_to_interned_str: document how the encoding of the result is
              defined.

            Co-authored-by: Herwin <herwinw@users.noreply.github.com>

commit c6d9ba58c50fd9c07023453d71cb55b4b9c36957
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2026-02-08 01:44:08 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-02-10 06:38:18 +0900

    Fix signal crash during keyword argument call

    64f508ade8 changed rb_threadptr_raise to call rb_exception_setup,
    which uses rb_scan_args with RB_SCAN_ARGS_PASS_CALLED_KEYWORDS.
    This checked rb_keyword_given_p(), which read the interrupted
    frame's keyword state rather than the signal raise arguments,
    causing a crash when a signal arrived during a keyword call.

    Revert rb_threadptr_raise to use rb_make_exception directly, and
    have thread_raise_m call rb_exception_setup where
    rb_keyword_given_p() reflects the correct frame.

    [Bug #21865]

commit 584c3b6465ec40226687e9699d2b652d9ad31a8f
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2026-02-10 02:47:03 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2026-02-10 02:47:03 +0900

    [Backport #21866] Fix integer overflow checks in enumerator (#16088)

    Fix integer overflow checks in enumerator

    Co-authored-by: Jörmungandrk <github@zerodaysec.org>

commit e4dd078a2734f1f3b7169feb4da8c68587effc6e
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2026-01-22 02:40:08 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-22 03:11:17 +0900

    [ruby/syntax_suggest] v2.0.3

    https://github.com/ruby/syntax_suggest/commit/a81b92fcf2

    [Bug #21847]

commit 12203963d22a984154c1abb03782c345ba8f5129
  Author:     Schneems <richard.schneeman+foo@gmail.com>
  AuthorDate: 2026-01-21 06:32:33 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-22 03:11:17 +0900

    [ruby/syntax_suggest] Refactor multi-prism version logic

    The reason this logic for different methods branches in the class instead of internally was to be eagerly aggressive about runtime performance. This code is currently only used once for the document where it's invoked ~N times (where N is number of lines):

    ```ruby
    module SyntaxSuggest
      class CleanDocument
        # ...
        def join_trailing_slash!
          trailing_groups = @document.select(&:trailing_slash?).map do |code_line|
            take_while_including(code_line.index..) { |x| x.trailing_slash? }
          end
          join_groups(trailing_groups)
          self
        end
    ```

    Since this is not currently a hot-spot I think merging the branches and using a case statement is a reasonable tradeoff and avoids the need to do specific version testing.

    An alternative idea was presented in #241 of behavior-based testing for branch logic (which I would prefer), however, calling the code triggered requiring a `DelegateClass` when the `syntax_suggest/api` is being required.

    https://github.com/ruby/syntax_suggest/commit/ab122c455f

commit bbba57f22c7eb7279297e03f8124d51135a7e87a
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2026-01-20 21:38:50 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-22 03:11:17 +0900

    [ruby/syntax_suggest] Handle `on_sp` when using prism

    It used to not emit this token type, but now it does.
    So when a newer version of prism is present, we can fall back
    to the same code that ripper uses.

    Ref:
    * https://github.com/ruby/ruby/pull/15914
    * https://github.com/ruby/prism/pull/3859

    https://github.com/ruby/syntax_suggest/commit/42a3b8f6cb

commit 26777e8a79a43dcf86c10274af4507bd196b9050
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-15 16:52:01 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-21 03:49:33 +0900

    Restore irb to warning target

    Users should add `irb` to their Gemfile.
    `Gem::BUNDLED_GEMS.force_activate 'irb'` is workaround for short term.

commit a3dc71eb5fe8ae7c411067a58ec91201fec240ee
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-03 03:41:21 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-21 03:49:33 +0900

    Suppress bundled gem warning on `binding.irb'

    This patch silences the "this won't work in the next version of Ruby"
    warning displayed when irb is autoloaded via `binding.irb`.

        main.rb:1: warning: irb used to be loaded from the standard library, but is not part of the default gems since Ruby 4.0.0.
        You can add irb to your Gemfile or gemspec to fix this error.
        /.../irb.rb:9: warning: reline used to be loaded from the standard library, but is not part of the default gems since Ruby 4.0.0.
        You can add reline to your Gemfile or gemspec to fix this error.

        From: main.rb @ line 1 :

         => 1: binding.irb

        /.../input-method.rb:284: warning: rdoc used to be loaded from the standard library, but is not part of the default gems since Ruby 4.0.0.
        You can add rdoc to your Gemfile or gemspec to fix this error.

    This warning is incorrect and misleading: users should not need to
    include irb (and its dependencies) to their Gemfiles to use
    `binding.irb`, even in future versions of Ruby. It is agreed that the
    runtime takes care of that.

commit 310da6cd91ccdab82f5cb9cef482f5cf9da1bb19
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-15 15:29:22 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-21 03:49:33 +0900

    Added example for bundle/inline

commit 3046e27852c46e32872a8a08644366a859ceca1e
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-04 21:02:36 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-21 03:49:33 +0900

    Add comments

commit 20e4a9a807dc0e4489a31efe94328ec1bda7c488
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-04 20:56:31 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-21 03:49:33 +0900

    Fake BUNDLE_GEMFILE and BUNDLE_LOCKFILE to let checks pass

    Bundler::Runtime#setup requires a real existing lockfile (see
    Bundler::SharedHelpers#default_lockfile).

commit 83479483c96fdfffbde11af482c7fd920b0c1dea
  Author:     Daisuke Aritomo <osyoyu@osyoyu.com>
  AuthorDate: 2025-12-03 02:25:46 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-21 03:49:33 +0900

    [Bug #21723] Let `binding.irb` properly load irb by fixing force_activate()

    This patch fixes a problem where `binding.irb` (= force_activate('irb'))
    fails under `bundle exec` when the Gemfile does not contain `irb` and
    does contain a gem which is (1) not installed in GEM_HOME (2) sourced
    using `path:`/`git:`.

    The original approach constructing a temporary definition fails since
    it does not set the equalivent of `path:`/`git:`.

    Always reconstructing a definition from a Gemfile and applying lockfile
    constraints should be a more robust approach.

    [Bug #21723]

commit 33cae95c8afce2782c2808a8e74c81d9ac763a4e
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2026-01-15 03:02:51 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2026-01-15 03:02:51 +0900

    [Backport #21832] Add pushtoarray insn to fix segfault with forwarding + splat (#15870)

    Add pushtoarray insn to fix segfault with forwarding + splat

    Example insns diff for `def x = [3]; def a(...) = b(*x, 2, 3, ...)`

         == disasm: #<ISeq:a@-e:1 (1,13)-(1,42)>
         local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
         [ 1] "..."@0
         0000 putself                                                          (   1)[Ca]
         0000 putself
         0000 opt_send_without_block                 <calldata!mid:x, argc:0, FCALL|VCALL|ARGS_SIMPLE>
         0000 splatarray                             true
         0000 putobject                              2
         0000 putobject                              3
        +0000 pushtoarray                            2
         0000 getlocal_WC_0                          "..."@0
         0000 sendforward                            <calldata!mid:b, argc:1, ARGS_SPLAT|ARGS_SPLAT_MUT|FCALL|FORWARDING>, nil
         0000 leave                                  [Re]

    This matches the insns produced by parse.y

commit 3176790c0d15dd7a72bb6e349651b3a66111d6f7
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-14 03:57:06 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-14 03:57:31 +0900

    Add a test backport missed at a10f7fac1fb1dcbdb1ae41137bd7294764a34793

    https://bugs.ruby-lang.org/issues/21831

commit e04267a14b1a5dea2d2c368e48d41bd3db441f4f
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 11:02:40 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 11:02:40 +0900

    v4.0.1

commit a10f7fac1fb1dcbdb1ae41137bd7294764a34793
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 10:59:55 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:59:55 +0900

    Sync Prism to 1.8.0

commit ac596948d4008c6e117449786c62de4e45e434bf
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 10:14:52 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:14:52 +0900

    merge revision(s) 7e81bf5c0c8f43602e6d901f4253dca2f3d71745: [Backport #21812]

            [PATCH] Fix sleep spurious wakeup from sigchld (#15802)

            When sleeping with `sleep`, currently the main thread can get woken up from sigchld
            from any thread (subprocess exited). The timer thread wakes up the main thread when this
            happens, as it checks for signals. The main thread then executes the ruby sigchld handler
            if one is registered and is supposed to go back to sleep immediately. This is not ideal but
            it's the way it's worked for a while. In commit 8d8159e7d8 I added writes to `th->status`
            before and after `wait_running_turn` in `thread_sched_to_waiting_until_wakeup`, which is
            called from `sleep`. This is usually the right way to set the thread's status, but `sleep`
            is an exception because the writes to `th->status` are done in `sleep_forever`. There's a
            loop that checks `th->status` in `sleep_forever`. When the main thread got woken up from
            sigchld it saw the changed `th->status` and continued to run the main thread instead of
            going back to sleep.

            The following script shows the error. It was returning instead of sleeping forever.

            ```ruby
            t = Thread.new do
              sleep 0.3
              `echo hello`  # Spawns subprocess
              puts "Subprocess exited"
            end

            puts "Main thread sleeping..."
            result = sleep  # Should block forever
            puts "sleep returned: #{result.inspect}"
            ```

            Fixes [Bug #21812]

commit 6273c59a6e1f8587e549d5a5f44fd9363e6eb018
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 10:13:00 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:13:00 +0900

    merge revision(s) d7a6ff8224519005d2deeb3f4e98689a8a0835ad: [Backport #21819]

            [PATCH] [Bug #21819] Data objects without members should also be frozen

commit 3601b6c2c1226482a001b98863fe6f79cd84ad35
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 10:11:36 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:11:36 +0900

    merge revision(s) 9824724b2ffe583302e9318c6eff7a440478125f: [Backport #21815]

            [PATCH] Skip test_write_binary(GemSingletonTest) at rbs tests

            ```
            Errno::EACCES: Permission denied @ rb_file_s_rename
            ...
            D:/a/ruby/ruby/src/lib/rubygems/util/atomic_file_writer.rb:42:in 'File.rename'
            ```

            It may caused with atomic_file_writer.rb

commit 893dcb5f25cbb0574ae73aa8fc926fd26750a27f
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 10:05:12 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:05:12 +0900

    merge revision(s) 19e539c9ee1701b34189fa0c1feb942adeb0e326: [Backport #21814]

            [PATCH] [Bug #21814] Fix negative bignum modulo

            If modulo is zero, do not  apply bias even if the divisor is zero.
            `BIGNUM_POSITIVE_P` is true even on bignum zero.

commit b170f02e0f2a7831b51a9279ee2d35a5e4ecace9
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 10:02:01 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:02:01 +0900

    merge revision(s) 4e0bb58a0a374b40b7691e7b7aa88e759a0fc9f2: [Backport #21811]

            [PATCH] fix underflow

commit cc4ce48f1277125df6c981a21efa4256c350a8ae
  Author:     Stan Lo <stan001212@gmail.com>
  AuthorDate: 2026-01-09 08:07:50 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 10:01:27 +0900

    Remove ruby-bench excludes

    These benchmarks should be working fine now.

commit e52aee688b2e09237fca45c52d3bb4a55eda9baa
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-13 09:55:40 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-13 09:59:42 +0900

    redmine-backporter.rb: Check remote-tracking branch

    on `has_commit` check for the `backport` command.

    I don't maintain local "master" branch on my ruby repository for stable
    branch maintenance. I want just running `git fetch origin` to make it
    work. It should work for those who pull origin/master into their local
    master too.

commit 8d764da35768073c2e21ffeffa27ff2f3ab589b0
  Author:     Chris Hasiński <krzysztof.hasinski@gmail.com>
  AuthorDate: 2026-01-08 09:13:38 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-09 02:08:38 +0900

    Fix incorrect bundled gems warning for hyphenated gem names

    When requiring a file like "benchmark/ips", the warning system would
    incorrectly warn about the "benchmark" gem not being a default gem,
    even when the user has "benchmark-ips" (a separate third-party gem)
    in their Gemfile.

    The fix checks if a hyphenated version of the require path exists in
    the bundle specs before issuing a warning. For example, requiring
    "benchmark/ips" now checks for both "benchmark" and "benchmark-ips"
    in the Gemfile.

    [Bug #21828]

commit be5d24eb0380360d0a1aeea99545d837ffe3eb24
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-06 06:47:53 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 06:47:53 +0900

    Add k0kubun as CODEOWNERS

commit e7b92abf3ab1a5f1eb6bae74df9ee71cd13a96dd
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-06 06:33:57 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 06:42:15 +0900

    ruby-bench: Prefer --excludes over rm -rf

    to remind us of skipped benchmarks in the CI job names

commit 34aa97ed60a87cad9a4b016cf6393b83bc6b2797
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 10:14:16 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 06:41:58 +0900

    Disabled to run lobsters benchmark because it didn't work with Ruby 4.1 yet

commit d555ddcfb3ec3cce17ff78f1823a6c026a0d2b1e
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 11:11:56 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 06:21:10 +0900

    uutils-coreutils 0.5.0 has been removed uutils wrapper

commit 9b2ff68f17d225aed2ae9e72a51014cbfcaaaff1
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-30 22:01:54 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 06:00:14 +0900

    Box: skip checking the current box is the root box

    Because checking the current box is not a cheap process.

commit b3371c6ae5dd6fcecd12128f7b3e1e18e219bd3d
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-30 14:46:19 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 06:00:14 +0900

    Box: allocate classes as boxable when it happens in the root box

    Without this change, classes (including iclass) are allocated
    as un-boxable classes after initializing user boxes (after starting
    script evaluation). Under this situation, iclasses are created as
    un-boxabled class when core modules are included by a class in the
    root box, then it causes problems because it's in the root box but
    it can't have multiple classexts.

    This change makes it possible to allocate boxable classes even after
    initializing user boxes. Classes create in the root box will be
    boxable, and those can have 2 or more classexts.

commit 35c140f92be2c0676c6433e037996926aa935982
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-26 17:14:57 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2025-12-26 21:23:56 +0900

    [DOC] Remove outdated documentation about command injection

    [Feature #19630]

    This dangerous behavior was removed in 4.0 (996cae65f3cc8fed60c6bb758b00882cac49389d)
    but the documentation wasn't updated.

commit 553f1675f3a9cece340b90f374a4245dccac2272
  Author:     NARUSE, Yui <naruse@airemix.jp>
  AuthorDate: 2025-12-25 12:20:40 +0900
  Commit:     NARUSE, Yui <naruse@airemix.jp>
  CommitDate: 2025-12-25 12:20:40 +0900

    v4.0.0

commit d375bcc965d4a0c661785fa94150f6202e99c1ce
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-25 11:56:41 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-25 11:56:41 +0900

    [DOC] Escape capitalized word "data" not to be linked unexpectedly

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

commit b908306f99db834470167d569b81661d7b19a02b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-25 11:45:27 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 11:49:32 +0900

    [DOC] Reword "Regular Expression" to "Matched Data"

    `$~` and its accessors are related to regular expressions, but are not
    themselves.

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

commit 84edb8456e90ae79428bf5e5db3accf29cdc9999
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-25 11:47:08 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 11:47:08 +0900

    Revert "Rollback to minitest-5.27.0"

    This reverts commit 8d097bc472fc66221dee23bb8f9e0dddac16db23.

commit 3c4cda10eb80fa38f2b27d4774e3e3e82bf190c9
  Author:     Godfrey Chan <godfreykfc@gmail.com>
  AuthorDate: 2025-12-25 09:06:50 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-25 09:06:50 +0900

    [DOC] Add back Rust 1.85.0 requirement to NEWS.md (#15728)

    * [DOC] Add back Rust 1.85.0 requirement to NEWS.md

    Addresses k0kubun's review in https://github.com/ruby/ruby/pull/15711#issuecomment-3690541074

    NEWS.md serves both CRuby developers as well as end-users. As the
    release date closes in, it probably gets seen by more users than
    core developers (on the blog for example).

    Most users probably don't build Ruby by hand, and instead that is
    abstracted through tools like ruby-install or a package manager.
    For some users these tools may install pre-built binaries where
    they exist, in which case the Rust requirement doesn't apply. In
    other instances, the tools merely automate the build, in which case
    the correct rustc version is required to enable support.

    It is also a little confusing to talk about "enabling support for
    the JIT during the build" vs "enabling the JIT at runtime".

    This copy attempts to balance all of the above and hopefully gets
    the correct points across all intended audiences.

    * Apply suggestion from k0kubun

    Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>

    ---------

    Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>

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

commit 3e82da723241b7205dc2b7706c66e9ead1826cde
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2025-12-25 07:37:25 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-25 07:37:25 +0900

    ZJIT: Don't mark control-flow opcodes as invalidating locals (#15694)

    jump, branchif, etc don't invalidate locals in the JIT; they might in the interpreter because they can execute arbitrary code, but the JIT side exits before that happens.

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

commit 8d097bc472fc66221dee23bb8f9e0dddac16db23
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-25 05:52:41 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 06:52:46 +0900

    Rollback to minitest-5.27.0

    Test of 6.0.0 is not working with 4.0.0 stable version.

    https://github.com/ruby/actions/actions/runs/20488398805/job/58875672023#step:20:362

    ```
      rake aborted!
      NoMethodError: undefined method 'cov_filter=' for #<Hoe:0x00007fdb550fc840> (NoMethodError)

        self.cov_filter = %w[ tmp ]
            ^^^^^^^^^^^^^
      /home/runner/work/actions/actions/ruby-4.0.0/gems/src/minitest/Rakefile:20:in 'block in <top (required)>'
      /home/runner/work/actions/actions/ruby-4.0.0/.bundle/gems/hoe-3.20.0/lib/hoe.rb:394:in 'BasicObject#instance_eval'
      /home/runner/work/actions/actions/ruby-4.0.0/.bundle/gems/hoe-3.20.0/lib/hoe.rb:394:in 'Hoe.spec'
      /home/runner/work/actions/actions/ruby-4.0.0/gems/src/minitest/Rakefile:11:in '<top (required)>'
      /home/runner/work/actions/actions/ruby-4.0.0/.bundle/gems/rake-13.3.1/exe/rake:27:in '<top (required)>'
      (See full trace by running task with --trace)
    ```

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

commit 26a1a522b76cc9fd2ed2d963fd2df635f59b7a39
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-25 05:47:34 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 05:47:34 +0900

    Revert "Rollback to test-unit 3.7.3"

    This reverts commit c17307ac22f37f74786a4f016121c6ee8cc38915.

commit 8caea03213ff809544271d3135e0873d9c419532
  Author:     Soutaro Matsumoto <matsumoto@soutaro.com>
  AuthorDate: 2025-12-25 02:13:09 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 05:46:44 +0900

    rbs_skip_tests_windows

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

commit b92bc9654120547f9dd261ce04dacdb17bf720e1
  Author:     Soutaro Matsumoto <matsumoto@soutaro.com>
  AuthorDate: 2025-12-25 01:41:18 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 05:46:44 +0900

    Skip test to avoid NoMemoryError

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

commit d0193e924003b33ab46ee4ac13fbec5d53d02f1b
  Author:     Soutaro Matsumoto <matsumoto@soutaro.com>
  AuthorDate: 2025-12-25 01:40:57 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 05:46:44 +0900

    Bundle test-unit 3.7.5

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

commit 96d876534e115ffbb92a72f7378da84fd54a3a87
  Author:     Stan Lo <stan.lo@shopify.com>
  AuthorDate: 2025-12-25 03:54:39 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-25 05:45:16 +0900

    Bump RDoc to 7.0.3

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