-*- coding: utf-8 -*-

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

commit 7d4983803887a45c311ab954de4527333b976500
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-07 17:00:14 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 17:49:23 +0900

    [ruby/rubygems] bin/rubocop -A

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

commit 3657700c4069ffd5d9e9b900e75f484f80eb8e3f
  Author:     Takuya Noguchi <takninnovationresearch@gmail.com>
  AuthorDate: 2022-09-06 16:37:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 17:49:23 +0900

    [ruby/rubygems] Bundler: validate more options for add sub-command

    Signed-off-by: Takuya Noguchi <takninnovationresearch@gmail.com>

    https://github.com/ruby/rubygems/commit/6ca2e28680

commit 88467996862a15f64ee05e49c9df9b18296c66d6
  Author:     neimadTL <damientalbot26@gmail.com>
  AuthorDate: 2025-02-13 22:32:33 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 16:44:55 +0900

    [ruby/rubygems] Update custom errors with Exception#full_message

    The use of `Exception#full_message` makes more sense as it shows
    the cause and the backstrace.

    https://github.com/ruby/rubygems/commit/62a92c3f5e

commit e1087c1226f0a98c83842613066ba9ff48710887
  Author:     eileencodes <eileencodes@gmail.com>
  AuthorDate: 2025-12-20 01:27:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 16:30:26 +0900

    [ruby/rubygems] Fix dependency source bug in bundler

    I stumbled across a bundler bug that had me scratching my head for
    awhile, because I hadn't experienced it before.

    In some cases when changing the source in a gemfile from a
    `Source::Gemspec` to either a `Source::Path` or `Source::Git` only the
    parent gem will have it's gem replaced and updated and the child
    components will retain the original version. This only happens if the gem
    version of the `Source::Gemspec` and `Source::Git` are the same. It also
    requires another gem to share a dependency with the one being updated.

    For example if I have the following gemfile:

    ```
    gem "rails", "~> 8.1.1"
    gem "propshaft"
    ```

    Rails has a component called `actionpack` which `propshaft` depends on.

    If I change `rails` to point at a git source (or path source), only the
    path for `rails` gets updated:

    ```
    gem "rails", github: "rails/rails", branch: "8-1-stable"
    gem "propshaft"
    ```

    Because `actionpack` is a dependency of `propshaft`, it will remain in
    the rubygems source in the lock file WHILE the other gems are correctly
    pointing to the git source.

    Gemfile.lock:

    ```
    GIT
      remote: https://github.com/rails/rails.git
      revision: https://github.com/ruby/rubygems/commit/9439f463e0ef
      branch: 8-1-stable
      specs:
        actioncable (8.1.1)
          ...
        actionmailbox (8.1.1)
          ...
        actionmailer (8.1.1)
          ...
        actiontext (8.1.1)
          ...
        activejob (8.1.1)
          ...
        activemodel (8.1.1)
          ...
        activerecord (8.1.1)
          ...
        activestorage (8.1.1)
          ...
        rails (8.1.1)
          ...
        railties (8.1.1)
          ...

    GEM
      remote: https://rubygems.org/
      specs:
        action_text-trix (2.1.15)
          railties
        actionpack (8.1.1) <===== incorrectly left in Rubygems source
          ...
    ```

    The gemfile will contain `actionpack` in the rubygems source, but will
    be missing in the git source so the path will be incorrect. A bundle
    show on Rails will point to the correct place:

    ```
    $ bundle show rails
    /Users/eileencodes/.gem/ruby/3.4.4/bundler/gems/rails-9439f463e0ef
    ```

    but a bundle show on actionpack will be incorrect:

    ```
    $ bundle show actionpack
    /Users/eileencodes/.gem/ruby/3.4.4/gems/actionpack-8.1.1
    ```

    This bug requires the following to reproduce:

    1) A gem like Rails that contains components that are released as their
    own standalone gem is added to the gemfile pointing to rubygems
    2) A second gem is added that depends on one of the gems in the first
    gem (like propshaft does on actionpack)
    3) The Rails gem is updated to use a git source, pointing to the same
    version that is being used by rubygems (ie 8.1.1)
    4) `bundle` will only update the path for Rails component gems if no
    other gem depends on it.

    This incorrectly leaves Rails (or any gem like it) using two different
    codepaths / gem source code.

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

commit 25c72b0e8e206e5baec71d4ece7551b7da7da445
  Author:     Jarek Prokop <jprokop@redhat.com>
  AuthorDate: 2025-12-22 18:13:34 +0900
  Commit:     Alan Wu <XrXr@users.noreply.github.com>
  CommitDate: 2026-01-07 13:55:06 +0900

    Support customizable rustc_flags for rustc builds.

    Add `rustc_flags` option for configure that appends to RUSTC_FLAGS
    flags used when compiling with rustc for customizable build flags.
    It appends to existing defaults in RUSTC_FLAGS.

    Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>

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

commit 1abb609d667d4e07fb30192ef9da376bb288e230
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-06 08:32:02 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 09:58:14 +0900

    [ruby/mmtk] Check that a and b are valid objects in write barrier

    https://github.com/ruby/mmtk/commit/350625ebb3

commit 08f6b8673adea23d2e96ca983f5d843c17b9a0e7
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-06 08:31:38 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 09:58:14 +0900

    [ruby/mmtk] Set MMTK_DEBUG in C compiler for debug builds

    https://github.com/ruby/mmtk/commit/12a3904b04

commit a024dca391695d07b24598677ddd6509ae3febfb
  Author:     yui-knk <spiketeika@gmail.com>
  AuthorDate: 2026-01-06 12:08:48 +0900
  Commit:     yui-knk <spiketeika@gmail.com>
  CommitDate: 2026-01-07 09:26:37 +0900

    Remove `in_masgn` field from `struct iseq_compile_data`

    `in_masgn` has not been used since fb6e3a80009a744a4e0b75660f1ce6da65e20e6c.

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

commit b2ed4cdced26f8840e181960c776e950e8bb0396
  Author:     Philip Hallstrom <philip@pjkh.com>
  AuthorDate: 2026-01-07 07:29:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-07 08:05:30 +0900

    [ruby/time] Add changelog URI to time.gemspec

    https://github.com/ruby/time/commit/08f896ca0d

commit 5c24f4081d0d163ed91dd20692d09d0c88ac46b1
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-06 10:25:52 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-07 07:16:38 +0900

    Add potential missing GC guard in iseq_data_to_ary

    The iseq object might be optimized away by the compiler in iseq_data_to_ary
    because we mainly only use the iseq_body. With MMTk, this crash occasionally
    happens:

        TestIseqLoad#test_stressful_roundtrip [test/-ext-/iseq_load/test_iseq_load.rb:20]:
        pid 106677 killed by SIGSEGV (signal 11) (core dumped)
        | -:10: [BUG] Segmentation fault at 0x0000000000f1410c
        | ruby 4.1.0dev (2026-01-05T23:31:16Z master 5d26a2aeea) +PRISM +GC[mmtk] [x86_64-linux]
        |
        | -- Control frame information -----------------------------------------------
        | c:0005 p:---- s:0022 e:000021 l:y b:---- CFUNC  :to_a
        | c:0004 p:0039 s:0018 e:000017 l:y b:0001 METHOD -:10
        | c:0003 p:0013 s:0010 e:000009 l:y b:0001 METHOD -:16
        | c:0002 p:0054 s:0006 e:000005 l:n b:---- EVAL   -:26 [FINISH]
        | c:0001 p:0000 s:0003 E:0003a0 l:y b:---- DUMMY  [FINISH]
        |
        | -- Ruby level backtrace information ----------------------------------------
        | -:26:in '<main>'
        | -:16:in 'test_bug8543'
        | -:10:in 'assert_iseq_roundtrip'
        | -:10:in 'to_a'
        |
        | -- Threading information ---------------------------------------------------
        | Total ractor count: 1
        | Ruby thread count for this ractor: 1
        |
        | -- Machine register context ------------------------------------------------
        |  RIP: 0x000055b581f866f5 RBP: 0x0000000000000000 RSP: 0x00007ffccce2ffe0
        |  RAX: 0x00000200ffee2b08 RBX: 0x0000000000f1410c RCX: 0x0000000000000000
        |  RDX: 0x000000000010c7f2 RDI: 0x00000200ffee2b08 RSI: 0x00000200ffee2b08
        |   R8: 0x0000000000000004  R9: 0x00000c0803ffb8ac R10: 0x00007fe9074c0cc8
        |  R11: 0x0000000000000246 R12: 0x0000000000000000 R13: 0x0000000000000001
        |  R14: 0x0000000000000001 R15: 0x00000200ffee2208 EFL: 0x0000000000010246
        |
        | -- C level backtrace information -------------------------------------------
        | ruby(rb_print_backtrace+0x14) [0x55b582119a9f] vm_dump.c:1105
        | ruby(rb_vm_bugreport) vm_dump.c:1450
        | ruby(rb_bug_for_fatal_signal+0x102) [0x55b582409072] error.c:1131
        | ruby(sigsegv+0x46) [0x55b582051bf6] signal.c:948
        | /lib/x86_64-linux-gnu/libc.so.6(0x7fe907645330) [0x7fe907645330]
        | ruby(iseq_data_to_ary+0xe5) [0x55b581f866f5] iseq.c:3380
        | ruby(iseq_data_to_ary+0x6b2) [0x55b581f86cc2] iseq.c:3470
        | ruby(vm_call_cfunc_with_frame_+0x10d) [0x55b5820e4a0d] vm_insnhelper.c:3902

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

commit 58fb95af36c86b00b134db5275becf7455ba4790
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2026-01-07 07:13:15 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2026-01-07 07:13:15 +0900

    [DOC] Harmonize #== methods (#15805)

  Notes:
    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 49ca241d6d5f589dec8f42fecdc8ecb96690b859
  Author:     Matt Valentine-House <matt@eightbitraptor.com>
  AuthorDate: 2026-01-06 06:30:06 +0900
  Commit:     Matt Valentine-House <matt@eightbitraptor.com>
  CommitDate: 2026-01-07 02:09:27 +0900

    Show a more verbose message if BASERUBY is too old

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

commit 925d04108b8fff7dfa14ccd8ac19fd1522cc99c3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-06 15:16:40 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2026-01-06 18:37:41 +0900

    Add `rake` target to run the bundled `rake`

commit bff7c6d9e9a423d4a7158b81658b3e77733b9be3
  Author:     Steve Savio <hi@stevos.dev>
  AuthorDate: 2026-01-06 16:34:44 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-06 18:30:33 +0900

    [DOC] Fix minor typo on shareable procs section

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

commit ad6b85450db1b252660dae4b514f5be35ccd38b9
  Author:     Schneems <richard.schneeman+foo@gmail.com>
  AuthorDate: 2025-12-27 03:21:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-06 13:38:13 +0900

    [ruby/rubygems] Retain current bundler version on `bundle clean`

    Previously: In #9218 a reproduction is shared where running `bundle clean` using a binstub (`bin/bundle`) results in bundler removing itself. This results in Ruby falling back to its default bundler version. This behavior seems to be present for as long as there has been a default version of bundler (Ruby 2.6+).

    Now: Bundler will explicitly add its current version number to the specs to be preserved. This prevents `bundle clean` from removing the current bundler version.

    close https://github.com/ruby/rubygems/pull/9218

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

commit 4377249bbf1a27b3d860ab8948b508f1b024ba1c
  Author:     Schneems <richard.schneeman+foo@gmail.com>
  AuthorDate: 2025-12-27 03:21:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-06 13:38:13 +0900

    [ruby/rubygems] Test for removing current bundler version

    https://github.com/ruby/rubygems/commit/675342e6d0

commit 16bdfa1b2a6b4cb40417e7673ad9eaa80664e4f0
  Author:     Schneems <richard.schneeman+foo@gmail.com>
  AuthorDate: 2025-12-27 03:21:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-06 13:38:12 +0900

    [ruby/rubygems] Split logic to two lines

    https://github.com/ruby/rubygems/commit/5a6eca4cf9

commit 3143543f958d4fa90d0423f84c598286098f1704
  Author:     lolwut <lol@wut.com>
  AuthorDate: 2025-12-26 12:05:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-06 13:38:12 +0900

    [ruby/rubygems] Compare like values in find_bundler

    The input to this method is not guaranteed to be a string, it could be a `Gem::Version` this normalizes the comparison.

    https://github.com/ruby/rubygems/commit/1f43c7a988

commit 1b476606f2294d0ce52a7429c597491ff68b11ce
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-06 13:07:49 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2026-01-06 13:07:49 +0900

    Update the latest versions of actions

commit 5d26a2aeea1368c5e37cb75ca511e62c5e21960f
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-05 04:14:26 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-06 08:31:16 +0900

    [ruby/mmtk] Assert pinning object is not moved

    https://github.com/ruby/mmtk/commit/8813e76bf8

commit dd67874ad9ef1beb57e2c76528ff715c525163c6
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2026-01-06 03:29:04 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-06 08:30:40 +0900

    [DOC] Harmonize #=== methods

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

commit a25f4689175b5b0f7da0831dbcedf86b62f67e19
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2026-01-06 01:18:16 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-06 08:23:55 +0900

    [DOC] Harmonize #>= methods

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

commit 7a1180afb665286556315bcf27188263854b213b
  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:33:58 +0900

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

    to remind us of skipped benchmarks in the CI job names

commit 23765a5e094f61b11bddce98f7fdd425d1c8ed87
  Author:     Max Bernstein <rubybugs@bernsteinbear.com>
  AuthorDate: 2026-01-06 05:16:48 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2026-01-06 05:16:48 +0900

    ZJIT: Update Iongraph (#15806)

    Fix some rendering bugs and remove React.

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

commit 7e81bf5c0c8f43602e6d901f4253dca2f3d71745
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2026-01-06 02:18:47 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2026-01-06 02:18:47 +0900

    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]

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

commit c65a5548a80f955ad71decabf0f29183fef8d6d7
  Author:     Brandon Zylstra <9854+brandonzylstra@users.noreply.github.com>
  AuthorDate: 2026-01-05 12:26:21 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-05 17:11:06 +0900

    Update box.md

    "Code" (when used to refer to what we create in Ruby or any other programming language) is an abstract non-count noun, so it cannot be pluralized.  ("Codes" would be used when referring to specific countable things like PIN codes, which is a different use of the word "code".)

    This is somewhat confusing because English allows converting count nouns into non-count nouns, and converting non-count nouns into count nouns, and because many words have both forms.

    For an example of converting a non-count noun to a count noun, "water" is normally a non-count noun:

    > The world is covered with water.

    but people who work in restaurants often use the word as a count noun, as a shorthand for "cup of water":

    > I need 7 waters on the big table by the window.

    For an example of the opposite conversion, "worm" is normally a count noun:

    > There are lots of worms in the puddle.

    but someone might use it as a non-count noun when talking about non-distinct remains of worms:

    > You have worm all over the bottom of your shoe!

    So although a given noun can be flexible enough to be used in either way—even when it is unconventional—there is a definite change of meaning when using a word as a count noun or a non-count noun.

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

commit 32674606102d21ec56635ff4b496544dd01775a6
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-05 16:16:29 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-05 16:47:14 +0900

    Update bindgen

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

commit 28b0e5125f1dd62b202a28aaa1e79190dad7eb02
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-05 15:47:40 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-05 16:47:14 +0900

    [Bug #18433] Remove unneeded declaration

    This `rb_cObject` declaration was only for `rb_cData()` that was
    removed at 7c738ce5e649b82bdc1305d5c347e81886ee759a.

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

commit d3ecd9d2ab4478ca29db20c1ab6c425a24bee83d
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-05 15:36:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-05 16:22:11 +0900

    [ruby/rubygems] Lock minitest ~> 5.1

    https://github.com/ruby/rubygems/commit/7b9bfb4e18

commit b87b6edf2e557db7b2787d7a213a6aa03f93a146
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-05 14:15:46 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-05 16:22:10 +0900

    [ruby/rubygems] Update vendored net-http to 0.9.1

    https://github.com/ruby/rubygems/commit/12072e8d23

commit 8c8561adbc3d8761ef70983c01d6ade0004d0fb8
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-05 14:15:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-05 16:22:10 +0900

    [ruby/rubygems] Update vendored connection_pool to 2.5.5

    https://github.com/ruby/rubygems/commit/4c1eb2b274

commit 05f791bf41d9a14cb4db2d529413928db539affc
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-05 13:59:47 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-05 16:22:09 +0900

    [ruby/rubygems] rake update

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

commit 99bd18b5b8071659ac9f035eea173b445326f8ad
  Author:     Tsutomu Katsube <tsuto.katsube@gmail.com>
  AuthorDate: 2026-01-02 20:10:16 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2026-01-05 13:48:29 +0900

    Unskip RBS test on Windows for NoMemoryError workaround

    test-unit 3.7.7 has been fixed this problem.

    See also:
    https://github.com/test-unit/test-unit/releases/tag/3.7.7

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

commit e6762d23cb14411ec026b324c5c15c339158ddc4
  Author:     Shugo Maeda <shugo@ruby-lang.org>
  AuthorDate: 2026-01-05 11:49:48 +0900
  Commit:     Shugo Maeda <shugo@ruby-lang.org>
  CommitDate: 2026-01-05 11:49:48 +0900

    [DOC] Fix a typo and trim trailing whitespace per .editorconfig

commit 01e8b38f601c4866738a76df4361f2b4df0fc300
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-05 10:55:47 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2026-01-05 11:32:42 +0900

    Use RUBY_VERSION in specs instead of hardcoded 'Ruby 4.0.0' to make tests version-independent

commit 699813b65f8504c6bb787ac3c8b7fe6419e76cdf
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2026-01-04 03:12:19 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-05 09:58:13 +0900

    [ruby/rubygems] Remove date require from rebuild command

    As far as I can see, this isn't used.

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

commit 7d5c0247eb2fb67bb0ac2fd6060bf2996c8c4c46
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-04 23:33:39 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-05 02:26:06 +0900

    Dump fstr and frozen status in rb_raw_obj_info_buitin_type

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

commit 6eadc01cdaa70895d464843de5b6c4d35cab2e27
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-05 02:13:08 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2026-01-05 02:13:08 +0900

    Fix condition for UTF-8 default in magic_comment_spec.rb

commit 9888a3e8bda75a417f15e3936d5d9a16051c9256
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-05 02:10:42 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2026-01-05 02:10:42 +0900

    UNIXSocket#recvfrom only returns the path on Linux

    * Notably it does not on BSD, macOS and Windows.

commit 2bf954305323857418b917f4a987c300245ee0eb
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-05 00:04:02 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2026-01-05 00:04:02 +0900

    Remove assertion which does not hold

    * https://github.com/ruby/ruby/actions/runs/20694508956/job/59407571754
      1)
      UNIXSocket.pair emulates unnamed sockets with a temporary file with a path FAILED
      Expected "C:\\a\\_temp\\102424668889-2384.($)".match? /\\AppData\\Local\\Temp\\\d+-\d+\.\(\$\)\z/
      to be truthy but was false

commit e79f8974b55de2ef8135c3fad03860e8ad36dfb0
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-04 23:39:31 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2026-01-04 23:39:31 +0900

    Get better error if UNIXSocket.socketpair spec fails

commit 29e7973e055cc82622cdd4511d78d74ad784c80e
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-04 23:36:02 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2026-01-04 23:36:02 +0900

    Update to ruby/spec@94dbd55

commit 6939f03f4cec6c50cbc1d214a38cdcdcf1d3f705
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-31 06:03:35 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-04 23:02:40 +0900

    Add field handle_weak_references to TypedData

    This commit adds a field handle_weak_references to rb_data_type_struct for
    the callback when handling weak references. This avoids TypedData objects
    from needing to expose their rb_data_type_struct and weak references function.

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

commit 1b3382cbab83f0dbf21b0d3683d4ab5335f6c342
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-04 22:53:24 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2026-01-04 22:53:24 +0900

    Update to ruby/spec@f54296d

commit 18672b392b7164c783381979ad34d550955d0416
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-04 16:00:23 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2026-01-04 16:01:27 +0900

    [DOC] Add `base-url` to ChangeLog by default

    It is used to expand repository references to URL.

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

commit 912cf819b96a7ada89db044add26e94746f3ebb5
  Author:     Augustin Gottlieb <33221555+aguspe@users.noreply.github.com>
  AuthorDate: 2026-01-03 01:54:42 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-04 15:56:57 +0900

    [ruby/openssl] Improve Argument Error Message in EC:Group.new

    Before, passing the wrong number of arguments (e.g., 2) to
    OpenSSL::PKey::EC::Group.new raised a generic "wrong number of
    arguments"
    error.

    This change updates it to show the actual argument count and the
    expected
    options (1 or 4), making debugging easier for the user.

    Example:
    ArgumentError: wrong number of arguments (given 2, expected 1 or 4)

    I hope it helps!

    https://github.com/ruby/openssl/commit/783c99e6c7

commit ca0fece56a3ddfa6b9ec9cf1652e414929040614
  Author:     Koichi ITO <koic.ito@gmail.com>
  AuthorDate: 2025-12-21 04:47:55 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2026-01-04 12:53:42 +0900

    [DOC] Tweak an example in language/box.md

    Although the example code comments indicate that it returns `false`,
    a non-matching result for `=~` is actually `nil`.

    ```ruby
    Foo.foo.blank? #=> false
    "foo".blank?   #=> false
    ```

    https://github.com/ruby/ruby/blob/v4.0.0-preview3/doc/language/box.md?plain=1#L115-L122

    This PR replaces `=~` with `match?` so that it returns the expected `false`.
    Since this makes the result a boolean, it also aligns with the expected behavior of
    a predicate method name like `blank?`.

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

commit d8d41d7441aabae5e5948f89cd759bbdc3bf5532
  Author:     Koichi ITO <koic.ito@gmail.com>
  AuthorDate: 2025-12-21 23:14:22 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2026-01-04 12:52:40 +0900

    [DOC] Use `Ruby::Box#require_relative` in box.md examples

    Based on the example, it appears that `foo.rb` and `main.rb` are expected to be in the same directory.
    Since Ruby 1.9, the current directory is not included in `$LOAD_PATH` by default.
    As a result, running `box.require('foo')` as shown in the sample code raises a `LoadError`:

    ```console
    main.rb:2:in `Ruby::Box#require': cannot load such file -- foo (LoadError)
            from main.rb:2:in `<main>'
    ```

    To avoid this, it seems simplest to show either `box.require('./foo')` or `box.require_relative('foo')`.
    In this PR, `box.require('foo')` is replaced with `box.require_relative('foo')` to make the intention of
    using a relative path explicit.

    This should reduce the chance that users trying Ruby Box will run into an unexpected error.

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

commit 5064af7ed120b1d14ad5020ea39a4a6ff2a4a4ec
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-03 23:39:54 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-04 10:26:54 +0900

    [ruby/mmtk] Process obj_free candidates in parallel

    Redos commit 544770d which seems to have accidentally been undone in b27d935.

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

commit a0c483fcfb9b8a2009cf21a8bce5fa2ad54d4fda
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-03 23:51:00 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-04 00:43:24 +0900

    Also output GC thread backtrace in rb_mmtk_gc_thread_bug

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

commit 5b87294d2fc84b7039a703cbbd02c7cf50c5b560
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-03 23:27:15 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-04 00:43:24 +0900

    Add rb_gc_print_backtrace

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

commit 65f9c4a06a17368c452bcda7f0e6325ea1d51eba
  Author:     Shannon Skipper <shannonskipper@gmail.com>
  AuthorDate: 2026-01-02 11:15:11 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-03 18:12:44 +0900

    Drop memberless Data/Struct#inspect trailing space

    Anonymous memberless Structs and Data were returning `#<struct >` and
    `#<data >` with a trailing space. Now they return `#<struct>` and
    `#<data>` to match attrless class behavior and look a bit more compact.

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

commit b6463d59e7c52dd4493796ff1cbd10b5e25caaca
  Author:     Scott Myron <samyron@gmail.com>
  AuthorDate: 2026-01-03 11:47:59 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-03 17:30:20 +0900

    [ruby/json] Directly write to the output buffer when converting UTF32 to UTF8.

    https://github.com/ruby/json/commit/a51317c949

commit d7a6ff8224519005d2deeb3f4e98689a8a0835ad
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-03 15:03:57 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2026-01-03 15:03:57 +0900

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

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

commit a8a989b6f651b878c690f5fd0a728e19a54dd2b9
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-03 12:28:00 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2026-01-03 13:28:58 +0900

    Test net-imap with ruby/net-imap#593

    Delete test/net/imap/test_data_lite.rb, because the target of this
    test file has been deleted by [ruby/net-imap#543].

    [ruby/net-imap#543]: https://github.com/ruby/net-imap/pull/543

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

commit 2f4119eaea5416ae69c9256a72ab98237e221b91
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-03 06:37:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-03 09:02:22 +0900

    [ruby/mmtk] Use rb_mmtk_gc_thread_bug for rb_mmtk_call_object_closure

    https://github.com/ruby/mmtk/commit/308936296a

commit 60d9b10dab9c9e92518f5579e6d36006c0dd359d
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-03 06:36:05 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-03 09:02:22 +0900

    [ruby/mmtk] Propagate crash of GC thread to mutator thread

    This allows the mutator thread to dump its backtrace when a GC thread crashes.

    https://github.com/ruby/mmtk/commit/40ff9ffee7

commit 16feb46fa27fdbdec4f7a0914787300b77fa232a
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2026-01-02 20:33:34 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2026-01-03 08:07:44 +0900

    Convert Queue and SizedQueue to rb builtin

    A large part of `thread_sync.c` was migrated already, might as well
    go all the way. It also allow to remove a bunch of Rdoc commands.

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

commit e7695ba3d9f0e8ee17025af4d42ecaf2dad47f29
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-03 01:41:24 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-03 05:42:11 +0900

    [ruby/mmtk] Check for T_NONE during marking

    https://github.com/ruby/mmtk/commit/c3e338bb25

commit 31fb970c18734455c2a2e6eb93bdc67db1edb88c
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-01 23:04:15 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-03 02:58:49 +0900

    [ruby/mmtk] Assert target is not pinned during normal tracing

    https://github.com/ruby/mmtk/commit/58210c88ed

commit c47a8052f6ecd3fb981416d6bfd918590572bb37
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2026-01-02 18:47:55 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2026-01-03 00:59:00 +0900

    Add a test case for complex argument forward reference

    Using `eval` it's possible to reference a later argument, and
    this requires careful initialization of the stack.

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

commit 1596853428393136ee9964ad4c11b0120ed648d1
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-31 22:52:16 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2026-01-03 00:59:00 +0900

    Skip initializing optional arguments to `nil`

    They are optional because they have a default value, so I don't
    understand why we'd need to initialize them to nil.

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

commit b9819ad06c883e6ea4f9e903c5bab06f175efb62
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-02 06:36:17 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-02 22:54:56 +0900

    Register a dupped identity hash as pinning

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

commit 177949c8b28587a0e0c0709d726cef846bdc51aa
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2026-01-02 20:57:00 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2026-01-02 21:51:36 +0900

    Speedup Queue initialization

    Rather than to push items one by one we can directly memcpy.

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

commit 0ec5678cd55aa0f2d900d028497bb444c4ce4b7b
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2026-01-02 15:55:45 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-02 15:55:45 +0900

    Update bundled gems list as of 2026-01-02

commit dd34d6273a08b821d049fd653db43b032674c7d8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-02 09:26:54 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2026-01-02 13:13:40 +0900

    Extract git version only

    The version message may contain other info such as the distribution.
    e.g.:
    ```console
    $ /usr/bin/git --version
    git version 2.50.1 (Apple Git-155)
    ```

commit 0e9d69893007b1a17372fbc2fbcc7f0ee92be5fb
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-07-08 21:12:32 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2026-01-02 11:40:27 +0900

    Prefer dedicated assertions

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

commit acda63debc1e7d056d2fe934caa05a930f8f3f2d
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-01 05:02:25 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-01 23:03:49 +0900

    [ruby/mmtk] Format imports to be each on a new line

    https://github.com/ruby/mmtk/commit/42adba630e

commit 26a5bcd6de806fa460cafd0906651a66cac33e7e
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2026-01-01 02:29:01 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2026-01-01 21:30:20 +0900

    [ruby/prism] Fix spacing in the generated #each_child_node

    https://github.com/ruby/prism/commit/91f60cb736

commit 8ce61f90ba4aea3d52e92e258c3803b8b885726e
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-31 21:54:00 +0900
  Commit:     Jean Boussier <jean.boussier@gmail.com>
  CommitDate: 2026-01-01 18:20:08 +0900

    Thread::Queue use a ring buffer

    Thread::Queue spends a significant amount of time in array functions,
    checking for invariants we know aren't a problem, and whether the backing
    array need to reordered.

    By using a ring buffer we can remove a lot of overhead (~23% faster).

    ```
    $ hyperfine './miniruby --yjit /tmp/q.rb' './miniruby-qrb --yjit /tmp/q.rb'
    Benchmark 1: ./miniruby --yjit /tmp/q.rb
      Time (mean ± σ):      1.050 s ±  0.191 s    [User: 0.988 s, System: 0.004 s]
      Range (min … max):    0.984 s …  1.595 s    10 runs

    Benchmark 2: ./miniruby-qrb --yjit /tmp/q.rb
      Time (mean ± σ):     844.2 ms ±   3.1 ms    [User: 840.4 ms, System: 2.8 ms]
      Range (min … max):   838.6 ms … 848.9 ms    10 runs

    Summary
      ./miniruby-qrb --yjit /tmp/q.rb ran
        1.24 ± 0.23 times faster than ./miniruby --yjit /tmp/q.rb
    ```

    ```
    q = Queue.new([1, 2, 3, 4, 5, 6, 7, 8])
    i = 2_000_000
    while i > 0
      i -= 1
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
    end
    ```

commit 41292562141118147c6a4eff5552097b0ecc79f0
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-01 05:41:47 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-01 11:57:01 +0900

    Use STR_SET_SHARED in str_duplicate_setup_heap

    str_duplicate_setup_heap is missing a call to rb_gc_register_pinning_obj
    that STR_SET_SHARED correctly calls.

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

commit ea05c23ee8f258463156c3e3a276e2e16d777238
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2026-01-01 09:24:32 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2026-01-01 10:00:33 +0900

    Extract `RBIMPL_TYPEDDATA_PRECONDITION`

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

commit 7cf6cc83f3d34dbff6a30457fb008d87106f5e0c
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2026-01-01 01:36:19 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2026-01-01 02:47:43 +0900

    Register imemo_ment as a pinning object

    It sometimes pins itself when it is in the overloaded_cme table.

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

commit b27d9353a73179f1f8e582d651382b1b4404cab2
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 23:56:58 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-31 23:56:58 +0900

    Use `is_obj_encoding` instead of `is_data_encoding`

    The argument to `is_data_encoding` is assumed to be `T_DATA`.

commit dbfedeb3a30be711fa17bf6ab9e1f4a83338f7d9
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-31 04:03:40 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-31 23:22:38 +0900

    [ruby/mmtk] Split ProcessObjFreeCandidates to parallel and non-parallel

    This makes it easier to visualize in profilers which one is non-parallel.

    https://github.com/ruby/mmtk/commit/ba68b2ef3b

commit 544770d566ae6b9cbdb79b24a555f10f60b3e5e3
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-31 03:42:21 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-31 23:22:38 +0900

    [ruby/mmtk] Process obj_free candidates in parallel

    This commit allows objects that are safe to be freed in parallel to do so.
    A decrease in object freeing time can be seen in profiles.

    The benchmarks don't show much difference.

    Before:

    --------------  --------------------  ----------  ---------
    bench           sequential free (ms)  stddev (%)  RSS (MiB)
    activerecord    242.3                 7.4         84.3
    chunky-png      439.1                 0.6         75.6
    erubi-rails     1221.2                4.2         132.7
    hexapdf         1544.8                1.8         429.1
    liquid-c        42.7                  7.4         48.5
    liquid-compile  41.4                  8.3         52.2
    liquid-render   100.6                 3.0         56.8
    mail            108.9                 2.1         65.1
    psych-load      1536.9                0.6         43.4
    railsbench      1633.5                2.6         146.2
    rubocop         126.5                 15.8        142.1
    ruby-lsp        129.6                 9.7         112.2
    sequel          47.9                  6.5         44.6
    shipit          1152.0                2.7         315.2
    --------------  --------------------  ----------  ---------

    After:

    --------------  ------------------  ----------  ---------
    bench           parallel free (ms)  stddev (%)  RSS (MiB)
    activerecord    235.1               5.5         87.4
    chunky-png      440.8               0.8         68.1
    erubi-rails     1105.3              0.8         128.0
    hexapdf         1578.3              4.1         405.1
    liquid-c        42.6                7.1         48.4
    liquid-compile  41.5                8.1         52.1
    liquid-render   101.2               2.8         53.3
    mail            109.7               2.7         64.8
    psych-load      1567.7              1.1         44.4
    railsbench      1644.9              1.9         150.9
    rubocop         125.6               15.4        148.5
    ruby-lsp        127.9               5.8         104.6
    sequel          48.2                6.1         44.1
    shipit          1215.3              4.7         320.5
    --------------  ------------------  ----------  ---------

    https://github.com/ruby/mmtk/commit/4f0b5fd2eb

commit 99249cc582177f05baf2a9c45e3fa21b891c70e9
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 21:40:16 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-31 21:44:18 +0900

    [ruby/json] Fix non-portable code

    A plain `char` may be `signed` or `unsigned` depending on the
    implementation.  Also, bitwise ORing of `signed` values ​​is not
    guaranteed to be `signed`.  To ensure portability, should logical-OR
    each comparison, but casting to `signed char` is usually sufficient.

    https://github.com/ruby/json/commit/8ad744c532

commit c97f5d591b17b8194b8ddfccc6fb9d94b66c6bce
  Author:     Scott Myron <samyron@gmail.com>
  AuthorDate: 2025-12-31 12:32:03 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-31 19:07:33 +0900

    [ruby/json] Simplify unescape_unicode

    https://github.com/ruby/json/commit/976ba36629

    Co-Authored-By: Jean Boussier <jean.boussier@gmail.com>

commit 61d45c857b6f92ef0df853cdeba02aefd0e6ffc4
  Author:     Scott Myron <samyron@gmail.com>
  AuthorDate: 2025-12-31 11:48:18 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-31 18:54:25 +0900

    [ruby/json] Keep track of the the number of additional backslashes to avoid an extra memchr searching the remaining characters when no more backslashes exist.

    https://github.com/ruby/json/commit/d21d9362fa

commit 094145fbc11afc444c8cd641e0715172f1c8a3db
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 17:54:42 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-31 17:54:42 +0900

    [DOC] Move typed-data related macros

    The flags for `rb_data_type_t::flags` are public constants for
    defining `rb_data_type_t`.  The embedded data flag and mask are
    internal implementation detail.

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

commit d95bebe06c076cdf6951b81665e2b2e779937123
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 11:29:29 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-31 11:29:29 +0900

    Make `RTYPEDDATA_EMBEDDABLE_P` internal-use only

    It should not be exposed because it is so implementation specific that
    it is only used in gc.c even within the entire Ruby source tree.

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

commit c352808fa9eb650ce8c1b268a348ad553df55caa
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 11:27:46 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-31 11:27:46 +0900

    Introduce typed-data embeddable predicate macros

    The combination of `&` and `&&` is confusing.

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

commit 9d37155cfc74258374134cbcc64f796b01f807d5
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-31 03:01:06 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-31 03:02:00 +0900

    [ruby/mmtk] Use MMTK_HEAP_COUNT for SIZE_POOL_COUNT

    https://github.com/ruby/mmtk/commit/290a2aec4e

commit d40e056cc8cb5c21fb3f7c25bf9463548dd14873
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 02:24:21 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-31 02:24:21 +0900

    Skip the hang-up test on Windows

commit 3086d58263b36d364a1187cd7678e6020806e6f3
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-31 01:34:43 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-31 02:24:03 +0900

    Run also test-tool on mingw

commit b7bf8c20b045c4dce5daa894d95d48c0983b9481
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-30 23:48:20 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-31 00:59:21 +0900

    Add RVALUE_OLD_AGE to GC::INTERNAL_CONSTANTS for MMTk

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

commit f2833e358cf58c3e69038cab80e87e40b7694541
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-30 23:46:42 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-31 00:59:21 +0900

    Fix generational GC for weak references

    Fixes issue pointed out in https://bugs.ruby-lang.org/issues/21084#note-7.
    The following script crashes:

        wmap = ObjectSpace::WeakMap.new

        GC.disable # only manual GCs
        GC.start
        GC.start

        retain = []
        50.times do
          k = Object.new
          wmap[k] = true
          retain << k
        end

        GC.start # wmap promoted, other objects still young

        retain.clear

        GC.start(full_mark: false)

        wmap.keys.each(&:itself) # call method on keys to cause crash

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

commit c05e10605e46106397fb4af4ea0f322c4d6d68ea
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-30 23:30:31 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-31 00:02:39 +0900

    Exclude rbs tests which need updates for {Method,UnboundMethod,Proc}#source_location

    * See https://github.com/ruby/ruby/pull/15580

commit a7fec4d6619384b0b0277e751a56f7b91e5d8d5b
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-30 20:47:01 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-31 00:02:39 +0900

    Update version guards in ruby/spec

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

commit c970d2941d56a862bb9bb3b808cb588c2982f436
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 05:46:17 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-31 00:02:39 +0900

    [Bug #21784] Fix the Proc#source_location start_column for stabby lambdas

    * Consistent with plain `blocks` and `for` blocks and methods
      where the source_location covers their entire definition.
    * Matches the documentation which mentions
      "where the definition starts/ends".
    * Partially reverts d357d50f0a74409446f4cccec78593373f5adf2f
      which was a workaround to be compatible with parse.y.

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

commit cd66d15858a06406d1de854f3e9690d3557a9864
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 17:52:31 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-31 00:02:39 +0900

    [Bug #21783] Fix documentation of {Method,UnboundMethod,Proc}#source_location

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

commit d82fc3360d7cfa7e1e1a4dddb668b4c38808538a
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-16 17:48:41 +0900
  Commit:     Benoit Daloze <eregontp@gmail.com>
  CommitDate: 2025-12-31 00:02:39 +0900

    Reapply "[Feature #6012] Extend `source_location` for end position

    * This reverts commit 065c48cdf11a1c4cece84db44ed8624d294f8fd5.
    * This functionality is very valuable and has already taken 14 years
      to agree on the API.
    * Let's just document it's byte columns (in the next commit).
    * See https://bugs.ruby-lang.org/issues/21783#note-9

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

commit 19e539c9ee1701b34189fa0c1feb942adeb0e326
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-30 23:00:18 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-30 23:00:18 +0900

    [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.

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

commit 966dbba8db970f13065a35d893662a981d0abae5
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-30 22:01:54 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-30 22:31:51 +0900

    Box: skip checking the current box is the root box

    Because checking the current box is not a cheap process.

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

commit 27d6c966583c65c9ffd02f931d9c4efe8d7232e0
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-30 17:58:44 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-30 18:33:20 +0900

    Add 4.0 to the spec_guards workflow

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

commit 3f616d5701592360cf07dae885aa706596ad07fd
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-30 18:33:03 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-30 18:33:03 +0900

    Update ruby/setup-ruby action to v1.276.0

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

commit d5af8d785888f3af5efb844be5948df71d777b22
  Author:     Satoshi Tagomori <s-tagomori@sakura.ad.jp>
  AuthorDate: 2025-12-30 14:46:19 +0900
  Commit:     Satoshi Tagomori <tagomoris@gmail.com>
  CommitDate: 2025-12-30 17:06:34 +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.

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

commit 65634d8df57ea1636efffb5f040fa31c156d307f
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-12-23 22:41:09 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-29 23:14:00 +0900

    [ruby/prism] Optimize ruby visitor

    `compact_child_nodes` allocates an array. We can skip that step by simply yielding the nodes.

    Benchmark for visiting the rails codebase:

    ```rb
    require "prism"
    require "benchmark/ips"

    files = Dir.glob("../rails/**/*.rb")
    results = files.map { Prism.parse_file(it) }
    visitor = Prism::Visitor.new

    Benchmark.ips do |x|
      x.config(warmup: 3, time: 10)

      x.report do
        results.each do
          visitor.visit(it.value)
        end
      end
    end

    RubyVM::YJIT.enable

    Benchmark.ips do |x|
      x.config(warmup: 3, time: 10)

      x.report do
        results.each do
          visitor.visit(it.value)
        end
      end
    end
    ```

    Before:
    ```
    ruby 3.4.8 (2025-12-17 revision https://github.com/ruby/prism/commit/995b59f666) +PRISM [x86_64-linux]
    Warming up --------------------------------------
                             1.000 i/100ms
    Calculating -------------------------------------
                              2.691 (± 0.0%) i/s  (371.55 ms/i) -     27.000 in  10.089422s
    ruby 3.4.8 (2025-12-17 revision https://github.com/ruby/prism/commit/995b59f666) +YJIT +PRISM [x86_64-linux]
    Warming up --------------------------------------
                             1.000 i/100ms
    Calculating -------------------------------------
                              7.278 (±13.7%) i/s  (137.39 ms/i) -     70.000 in  10.071568s
    ```
    After:
    ```
    ruby 3.4.8 (2025-12-17 revision https://github.com/ruby/prism/commit/995b59f666) +PRISM [x86_64-linux]
    Warming up --------------------------------------
                             1.000 i/100ms
    Calculating -------------------------------------
                              3.429 (± 0.0%) i/s  (291.65 ms/i) -     35.000 in  10.208580s
    ruby 3.4.8 (2025-12-17 revision https://github.com/ruby/prism/commit/995b59f666) +YJIT +PRISM [x86_64-linux]
    Warming up --------------------------------------
                             1.000 i/100ms
    Calculating -------------------------------------
                             16.815 (± 0.0%) i/s   (59.47 ms/i) -    169.000 in  10.054668s
    ```

    ~21% faster on the interpreter, ~56% with YJIT

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

commit 14fbcf0e6ed37c4a0d15fd3f016778465f774f2c
  Author:     Thomas Marshall <thomas@thomasmarshall.com>
  AuthorDate: 2025-12-29 21:55:18 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-29 23:12:20 +0900

    [ruby/prism] Report missing end errors at opening token

    This commit adds an `expect1_opening` function that expects a token and
    attaches the error to the opening token location rather than the current
    position. This is useful for errors about missing closing tokens, where
    we want to point to the line with the opening token rather than the end
    of the file.

    For example:

    ```ruby
    def foo
    def bar
    def baz
           ^ expected an `end` to close the `def` statement
           ^ expected an `end` to close the `def` statement
           ^ expected an `end` to close the `def` statement
    ```

    This would previously produce three identical errors at the end of the
    file. After this commit, they would be reported at the opening token
    location:

    ```ruby
    def foo
    ^~~ expected an `end` to close the `def` statement
    def bar
    ^~~ expected an `end` to close the `def` statement
    def baz
    ^~~ expected an `end` to close the `def` statement
    ```

    I considered using the end of the line where the opening token is
    located, but in some cases that would be less useful than the opening
    token location itself. For example:

    ```ruby
    def foo def bar def baz
    ```

    Here the end of the line where the opening token is located would be the
    same for each of the unclosed `def` nodes.

    https://github.com/ruby/prism/commit/2d7829f060

commit 8afd4fade69b3a53a5e309499595f7b192f87726
  Author:     Thomas Marshall <thomas@thomasmarshall.com>
  AuthorDate: 2025-12-29 21:54:28 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-29 23:12:20 +0900

    [ruby/prism] Add unterminated construct tests

    https://github.com/ruby/prism/commit/166764f794

commit 782d959f674b5088377191a4b34ed2f5bbb7c022
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-27 01:55:42 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-29 23:03:31 +0900

    Implement moving Immix in MMTk

    This commit implements moving Immix in MMTk, which allows objects to move
    in the GC.

    The performance of this implementation is not yet amazing. It is very
    similar to non-moving Immix in many of them and slightly slower in others.
    The benchmark results is shown below.

        --------------  -----------------  ----------  ---------
        bench           Moving Immix (ms)  stddev (%)  RSS (MiB)
        activerecord    241.9              0.5         86.6
        chunky-png      447.8              0.8         74.9
        erubi-rails     1183.9             0.8         136.1
        hexapdf         1607.9             2.6         402.3
        liquid-c        45.4               6.7         44.9
        liquid-compile  44.1               9.3         53.0
        liquid-render   105.4              4.5         55.9
        lobsters        650.1              9.7         418.4
        mail            115.4              2.1         64.4
        psych-load      1656.8             0.8         43.6
        railsbench      1653.5             1.3         149.8
        rubocop         127.0              15.6        142.1
        ruby-lsp        130.7              10.5        99.4
        sequel          52.8               7.2         45.6
        shipit          1187.0             3.9         311.0
        --------------  -----------------  ----------  ---------

        --------------  ---------------------  ----------  ---------
        bench           Non-moving Immix (ms)  stddev (%)  RSS (MiB)
        activerecord    218.9                  2.7         86.1
        chunky-png      464.6                  0.8         66.7
        erubi-rails     1119.0                 4.3         132.7
        hexapdf         1539.8                 1.8         425.2
        liquid-c        40.6                   6.9         45.2
        liquid-compile  40.6                   8.1         52.9
        liquid-render   99.3                   2.3         48.3
        mail            107.4                  5.3         65.4
        psych-load      1535.6                 1.0         39.5
        railsbench      1565.6                 1.1         149.6
        rubocop         122.5                  14.3        146.7
        ruby-lsp        128.4                  10.7        106.4
        sequel          44.1                   4.0         45.7
        shipit          1154.5                 2.7         358.5
        --------------  ---------------------  ----------  ---------

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

commit 7902ae34d01a142fcbc0f669d93b1af5664ece42
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-25 10:38:22 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-29 23:03:31 +0900

    Add rb_gc_move_obj_during_marking

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

commit 01cd9c9fade0c1c6f13f11c86e86c0caeefd38bc
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-24 01:45:16 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-29 23:03:31 +0900

    Add rb_gc_register_pinning_obj

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

commit 56147001ec439a7d6b887402c8a66d3ee625e598
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-23 09:38:47 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-29 23:03:31 +0900

    Move MEMO_NEW to imemo.c and rename to rb_imemo_memo_new

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

commit da89f7f58d6e0a662dfdeaf7df7aea9e3e7c02b5
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-29 20:26:00 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 20:26:00 +0900

    Prefer `ALLOCV` over `ALLOCA` for unknown size

    `ALLOCA` with too large size may result in stack overflow.
    Incidentally, this suppresses the GCC false maybe-uninitialized
    warning in `product_each`.

    Also shrink `struct product_state` when `sizeof(int) < sizeof(VALUE)`.

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

commit 26088dcd4a1f1784ae24387ce6a98fcad48749c5
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-29 18:41:58 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 18:41:58 +0900

    [DOC] State that `rb_unexpected_type` is private

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

commit 56a6a21f28bd2b47bc96c58ae276b272933e7f62
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-29 18:19:28 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 18:40:48 +0900

    Return `NULL` in a `void *` function

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

commit 0f64da9672d88921439f6fdb306d16fece9b9c90
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-29 18:14:28 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 18:40:47 +0900

    Make `rb_check_typeddata` and `rbimpl_check_typeddata` identical

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

commit 72627d85e337e5d8c7fa5738dc4ec7f253f0738e
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-29 12:52:29 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 18:20:36 +0900

    Declare `rb_data_typed_t` parameters and return values as  nonull

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

commit 4e0bb58a0a374b40b7691e7b7aa88e759a0fc9f2
  Author:     Luke Jahnke <luke.jahnke@gmail.com>
  AuthorDate: 2025-12-29 14:51:17 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-29 17:21:33 +0900

    fix underflow

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

commit 38701a4de83c72d855ce79f898526d5f079c96c5
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-12-29 11:48:45 +0900
  Commit:     Jeremy Evans <code@jeremyevans.net>
  CommitDate: 2025-12-29 14:54:41 +0900

    Remove deprecated support for to_set taking arguments

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

commit cb01b9023ec2007c03bddc992416c33f2c59a0e1
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-29 03:15:03 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 10:33:31 +0900

    rtypeddata.h: Add missing `RBIMPL_CAST`

    In public headers, casts should be enclosed in `RBIMPL_CAST` for
    compilation in C++.

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

commit 9e78353c0f840bf4aa7cceb4d1676f4d090d0096
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-29 05:43:36 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-29 06:25:49 +0900

    Fix maybe uninitialized warnings in random.c

    Fixes the following compiler warnings:

        random.c: In function `random_init`:
        random.c:416:38: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized]
          416 |     unsigned int major = rng->version.major;
              |                          ~~~~~~~~~~~~^~~~~~
        random.c: In function `random_bytes`:
        random.c:1284:8: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized]
        1284 |     rng->get_bytes(rnd, ptr, n);
             |     ~~~^~~~~~~~~~~
        random.c:1299:34: note: `rng` was declared here
        1299 |     const rb_random_interface_t *rng;
             |                                  ^~~
        random.c: In function `rand_random_number`:
        random.c:1606:12: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized]
        1606 |     return rand_range(obj, rng, rnd, vmax);
             |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        random.c:1624:34: note: `rng` was declared here
        1624 |     const rb_random_interface_t *rng;
              |                                  ^~~
        random.c: In function `random_rand`:
        random.c:1120:15: warning: `rng` may be used uninitialized in this function [-Wmaybe-uninitialized]
        1120 |     return rng->get_int32(rnd);
             |            ~~~^~~~~~~~~~~
        random.c:1573:34: note: `rng` was declared here
        1573 |     const rb_random_interface_t *rng;
             |                                  ^~~

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

commit d615dbf4e28d26c3fd7a54ad58d7365521378599
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-29 05:51:10 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-29 05:51:10 +0900

    [DOC] Japanese for multi-byte characters

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

    Merged-By: peterzhu2118 <peter@peterzhu.ca>

commit 44e762a99c2234756594382f36fc64db1d6c31d0
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-28 13:49:02 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 02:01:12 +0900

    Extract `rb_random_interface_t`  alongside `rb_random_t` as well

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

commit 68cd46353c34cd87917930f80925b2ac8ddaaa9b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-28 13:38:39 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-29 02:01:12 +0900

    Ensure `T_DATA` before `RTYPEDDATA_P`

    For the precondition of `RTYPEDDATA_P` that the argument must be a
    Ruby object of `::RUBY_T_DATA`.

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

commit eaa83e505fdcddd1d354f1d9a375b22f33748060
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-28 03:19:56 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-28 22:55:38 +0900

    Always allocate Fiber objects in Thread

    Currently, root fibers of threads do not have a corresponding Ruby object
    backing it by default (it does have one when an object is required, such
    as when Fiber.current is called). This is a problem for the new GC weak
    references design in #12606 since Thread is not declared as having weak
    references but it does hold weak references (the generic ivar cache).

    This commit changes it to always allocate a Fiber object for the root
    fiber.

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

commit 3fe2ebf8e4127bca0a57d4ed8eb6035792420a26
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-28 17:23:50 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-28 17:23:50 +0900

    Remove unnecessary comparison from is_local_port_fixed (#15757)

    Simplify the conditions:
    - Return false if the port is 0 or a negative number
    - Return true if the port is a positive number

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

commit 6544c89708d94b894012e0587f770f33bbce4a3b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-27 18:32:07 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-28 10:34:17 +0900

    Skip the hang-up test on mingw

commit 8415f8faccffd426ed9c1168abddc2b3e727b659
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-27 06:24:52 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-28 03:28:57 +0900

    [DOC] Use Japanese for multi-byte characters

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

commit a92c0342dd35efac8c08845b23412e5f70ecd769
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-27 23:12:02 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-28 00:59:48 +0900

    [DOC] Japanese only for multi-byte chars examples

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

commit 38d24294acdf2fba8ab54fc05483e881b16dc7f1
  Author:     BurdetteLamar <burdettelamar@yahoo.com>
  AuthorDate: 2025-12-27 22:50:32 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-28 00:59:23 +0900

    [DOC] Multibyte chars Japanese only

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

commit a8c3d5e127776d74eb068c95610277feb99adcf0
  Author:     Misaki Shioi <31817032+shioimm@users.noreply.github.com>
  AuthorDate: 2025-12-27 18:26:56 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-27 18:26:56 +0900

    Fix: Do not fast_fallback if local_port is explicitly specified (#15732)

    `fast fallback` cannot be used with explicitly specified local port,
    because concurrent binds to the same `local_host:local_port`
    can raise `Errno::EADDRINUSE`.

    This issue is more likely to occur on hosts with `IPV6_V6ONLY` disabled,
    because IPv6 binds can also occupy IPv4-mapped IPv6 address space.

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

commit 3c9e61f5ef8190e082b36e056f59be49692ae8aa
  Author:     Kazuki Yamaguchi <k@rhe.jp>
  AuthorDate: 2025-12-27 16:18:58 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-27 16:46:03 +0900

    [ruby/openssl] cipher: remove incorrect assertion in Cipher#update

    Commit https://github.com/ruby/openssl/commit/1de3b80a46c2 (cipher: make output buffer String independent,
    2024-12-10) ensures the output buffer String has sufficient capacity,
    but the length can be shorter. The assert() is simply incorrect and
    should be removed.

    Also remove a similar assert() in Cipher#final. While not incorrect, it
    is not useful either.

    https://github.com/ruby/openssl/commit/0ce6ab97dd

commit b8201a09e026b3f2948a19eddf1341eb4b9668cf
  Author:     git[bot] <svn-admin@ruby-lang.org>
  AuthorDate: 2025-12-27 15:53:51 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-27 15:53:51 +0900

    Update bundled gems list as of 2025-12-27

commit dedde996762dbed72d3f1e11a02d69a9d080edc4
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-27 05:06:21 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-12-27 05:06:21 +0900

    [DOC] Use Japanese for multi-byte characters (#15745)

  Notes:
    Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>

commit 7b3b1a1442a6665ab300207bf064ae360272525a
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-27 00:04:51 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-27 00:14:04 +0900

    [DOC] Use self in call-seq for Method#call

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

commit 6ae69e9ac1db89c0ee2e8ced251cc31e7f0c96d2
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-27 00:03:49 +0900
  Commit:     Peter Zhu <peter@peterzhu.ca>
  CommitDate: 2025-12-27 00:14:04 +0900

    [DOC] Remove args from call-seq of Method#call

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

commit b304c149aa2fe845872ccdf6ea88e7fe155c61f3
  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:05:29 +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.

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

commit c3424615821192488f644d41eff21fa349a1eb2f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-26 19:33:03 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 19:33:03 +0900

    Remove an useless macro definition `RSTRUCT_PTR`

    The underlying definition, `rb_struct_ptr`, was removed four years
    ago.

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

commit 8c7b1401a50687dfd1d0c253c03eefdb8815154a
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 14:16:11 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:53:23 +0900

    Remove `rb_iterate` deprecated since 1.9

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

commit 2ac4cc0a1bcd55be456aa12c1b6d7f52a5725fed
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 14:01:39 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:53:23 +0900

    Remove `RUBY_FL_DUPPED` deprecated for 4 years

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

commit a3ac83b7b86f61f3bb9f82bba69e06e7cbc6a592
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 13:59:50 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:53:22 +0900

    Remove taintedness/trustedness enums/macros deprecated for 4 years

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

commit a447d39da267cff10a4e8d07e74d65b6c4e64207
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 13:47:51 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:02:42 +0900

    Remove `rb_gc_force_recycle` deprecated as "removed soon"

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

commit cf60dc2642b6c84794e7b6a1a2a1eff4b2e0f1cf
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 13:44:46 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:02:42 +0900

    Remove `rb_clone_setup` and `rb_dup_setup` deprecated for 4 years

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

commit a41b1540291d1469caae58d2271f3671aee7431c
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 13:25:52 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:02:42 +0900

    Remove `rb_complex_polar` deprecated for 7 years

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

commit f84110e601399c389f6d0c4b3c59be97e6dff935
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 13:19:20 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 17:02:41 +0900

    Remove old APIs to allocate a data object deprecated for 5 years

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

commit 5c2f6639c53c2dcde60544b1b53ab8f5d10cd12f
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-08 13:05:02 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 16:48:16 +0900

    Remove `rb_clear_constant_cache` deprecated for 3 years

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

commit 1ca464347a526ec6539df37146a0005f95f6e3db
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-06-04 09:27:35 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 15:11:23 +0900

    CI: Warn deprecated features to be removed at this version

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

commit ccc8610b660ef225b304aae7b820bad036621a87
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-06-04 00:21:33 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 15:11:23 +0900

    Remove `RUBY_GC_HEAP_INIT_SLOTS` environment variable

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

commit 4c07e61bc937b39774862e33bbac8c9c234f3dbf
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-10-24 19:35:05 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 15:11:23 +0900

    Deprecate old VC

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

commit 0b65ac6daff08dd30ee66e85f9bcfe756d27b742
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2024-10-24 18:39:51 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 15:11:23 +0900

    Remove a no longer used prototype declaration in re.c

    Include internal/error.h instead.

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

commit 704ac72fb67bc431c7d77d0d0aaa7e5b5331b096
  Author:     Yusuke Endoh <mame@ruby-lang.org>
  AuthorDate: 2025-12-25 00:08:38 +0900
  Commit:     Yusuke Endoh <mame@ruby-lang.org>
  CommitDate: 2025-12-26 14:20:00 +0900

    Clarify the intent of the test for "ruby -h" to fit in 80x25

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

commit b01fd2d8c3195cc9936f6be6f89df0de12394a28
  Author:     Andrii Furmanets <furmanets.andriy@gmail.com>
  AuthorDate: 2025-12-25 19:05:06 +0900
  Commit:     Nobuyoshi Nakada <nobu.nakada@gmail.com>
  CommitDate: 2025-12-26 14:05:11 +0900

    Fix RSET_IS_MEMBER macro parameter mismatch

    The RSET_IS_MEMBER macro had a parameter named 'sobj' but the macro
    body used 'set' instead, causing the first argument to be ignored.

    This worked by accident because all current callers use a variable
    named 'set', but would cause compilation failure if called with a
    differently named variable:

        error: use of undeclared identifier 'set'

    Changed the parameter name from 'sobj' to 'set' to match the macro
    body and be consistent with other RSET_* macros.

commit bad7dd5d74e9d14e84faf8cc8907dcdfdb8751e8
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-12-26 09:16:36 +0900
  Commit:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  CommitDate: 2025-12-26 13:27:32 +0900

    [DOC] Separate updated gems lists into sections in NEWS.md

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

commit 594dd8bfd4c2b380dc7185d421d71b29c379356b
  Author:     Takashi Sakaguchi <takashi.sakaguchi@ummm.info>
  AuthorDate: 2025-12-26 12:37:46 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-26 12:38:16 +0900

    [ruby/pp] Support private instance_variables_to_inspect
    (https://github.com/ruby/pp/pull/70)

    * Support private instance_variables_to_inspect in pp

    Ruby supports calling instance_variables_to_inspect even when
    it is defined as a private method ([ruby/ruby#13555](https://github.com/ruby/ruby/pull/13555)).

    This change aligns pp with Ruby's behavior.

    https://github.com/ruby/pp/commit/8450e76db6

commit 9824724b2ffe583302e9318c6eff7a440478125f
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 11:39:43 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 12:12:05 +0900

    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 02275b1e53339f34e46b7e69e1512895ea105042
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 11:11:56 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 12:12:05 +0900

    uutils-coreutils 0.5.0 has been removed uutils wrapper

commit 565ea26ad10ea8c3c6ce9bdae6cbb78353a9ad36
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 10:14:16 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

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

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

commit 89af235435a911d86e04abdb1a54f4fe25dcaa6a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 09:44:55 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    Added ruby_41? platform

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

commit 93df96684860ea437de982d6778fc9d845d0505a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 09:37:17 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    Mark development version for unreleased gems

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

commit 70c7f3ad77c09e379b9e7ffb8009ccc2cb47f234
  Author:     Sutou Kouhei <kou@clear-code.com>
  AuthorDate: 2025-12-17 14:28:48 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/strscan] Bump version

    https://github.com/ruby/strscan/commit/747a3b5def

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

commit fda7019c80c1026ee89ba772fb7db547c89e541a
  Author:     Benoit Daloze <eregontp@gmail.com>
  AuthorDate: 2025-12-08 21:06:08 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/net-protocol] Add Net::Protocol::TCP_SOCKET_NEW_HAS_OPEN_TIMEOUT

    * To find out efficiently if TCPSocket#initialize supports the open_timeout keyword argument.

    https://github.com/ruby/net-protocol/commit/738c06f950

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

commit 4d7db86a794581f1be405dcc70bb06549b8cf28f
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-12-22 17:16:09 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/json] Add missing documentation for `allow_control_characters` parsing option

    https://github.com/ruby/json/commit/a5c160f372

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

commit 8ccfb375b9ade4504c4012ce8c31adc7e12dc49c
  Author:     久我山菜々 <nna@nna774.net>
  AuthorDate: 2025-12-19 01:30:37 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/json] Update `fpconv_dtoa` definition to use `dest[32]`

    https://github.com/ruby/json/commit/4808fee9af

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

commit 1f526b348978bf71efc75f562227c1e872df27fd
  Author:     Taketo Takashima <t.taketo1113@gmail.com>
  AuthorDate: 2025-12-17 23:39:43 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/ipaddr] Follow-up fix for InvalidAddressError messages

    https://github.com/ruby/ipaddr/commit/b92ef74b91

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

commit f3149af35a30c4eb334006faef729a6e514d4cf2
  Author:     Koichi ITO <koic.ito@gmail.com>
  AuthorDate: 2025-12-21 05:58:23 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/prism] Sync `Prism::Translation::ParserCurrent` with Ruby 4.0

    This PR updates the fallback version for `Prism::Translation::ParserCurrent` from 3.4 to 4.0.

    Currently, the fallback resolves to `Parser34`, as shown below:

    ```console
    $ ruby -v -rprism -rprism/translation/parser_current -e 'p Prism::Translation::ParserCurrent'
    ruby 3.0.7p220 (2024-04-23 revision https://github.com/ruby/prism/commit/724a071175) [x86_64-darwin23]
    warning: `Prism::Translation::Current` is loading Prism::Translation::Parser34, but you are running 3.0.
    Prism::Translation::Parser34
    ```

    Following the comment "Keep this in sync with released Ruby.",
    it seems like the right time to set this to Ruby 4.0, which is scheduled for release this week.

    https://github.com/ruby/prism/commit/115f0a118c

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

commit 44a17656842a567eb82c43024daaf9fcaff61e5d
  Author:     t-mangoe <m.takashi.xpair@gmail.com>
  AuthorDate: 2025-12-21 09:16:58 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/timeout] add test case for string argument

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

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

commit f8d0960af260219ab7c10a797ac62ecad25b2974
  Author:     Jean-Samuel Aubry-Guzzi <js.aubry@shopify.com>
  AuthorDate: 2025-12-09 01:22:55 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/resolv] Handle TCP Requester #recv_reply incomplete data

    https://github.com/ruby/resolv/commit/9c640bdc4a

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

commit 4b7bbd43408f230997e216a557d586edd492172d
  Author:     Jean-Samuel Aubry-Guzzi <js.aubry@shopify.com>
  AuthorDate: 2025-10-29 21:31:26 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/resolv] Fix TCP Requester #recv_reply

    https://github.com/ruby/resolv/commit/96dc3d15fe

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

commit 74becf1b61272c66e835c446525920eae0b8574a
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 09:32:02 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    Start to develop 4.1.0.dev

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

commit bdbe8d50150447748eaa92a0cce7327d8dec9903
  Author:     eileencodes <eileencodes@gmail.com>
  AuthorDate: 2025-11-26 04:17:03 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +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

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

commit c5376a3a167cbb90023e7610a4fafda22a5c381c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-05 11:11:31 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/rubygems] Remove deprecated, unused Gem::List

    https://github.com/ruby/rubygems/commit/43371085f4

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

commit 8024245854ac9e92947e7bd4a58223d8998d3893
  Author:     Maciej Mensfeld <maciej@mensfeld.pl>
  AuthorDate: 2025-12-18 22:03:00 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/date] remove conditional for uint64_t

    https://github.com/ruby/date/commit/47778c32d8

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

commit 5960fb9fa000898b863565a8f48b81fd25bff88a
  Author:     Maciej Mensfeld <maciej@mensfeld.pl>
  AuthorDate: 2025-12-18 20:43:22 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/date] remove redundant code

    https://github.com/ruby/date/commit/5e6a458179

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

commit bcaa127ecd4f408299c8514569329df1b124f556
  Author:     Maciej Mensfeld <maciej@mensfeld.pl>
  AuthorDate: 2025-12-18 20:36:36 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/date] code remarks, macros and r2.6 support

    https://github.com/ruby/date/commit/2682dc79c0

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

commit ea03f263b51cfae3163e19dad5800c3a54d7cd1c
  Author:     Maciej Mensfeld <maciej@mensfeld.pl>
  AuthorDate: 2025-12-18 18:38:51 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/date] improve styling

    https://github.com/ruby/date/commit/cd7a329dfd

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

commit f09e35ee4a5283c1b6185383f9b89eb4caf99868
  Author:     Maciej Mensfeld <maciej@mensfeld.pl>
  AuthorDate: 2025-12-18 17:36:35 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/date] [ruby/date] Optimize Gregorian date conversions with Neri-Schneider algorithm

    Replace floating-point arithmetic and iterative loops with pure integer
    operations for ~40% faster Date operations. Date.ordinal and Date.commercial
    are ~2x faster due to O(1) first-day-of-year calculation.

    Reference: https://arxiv.org/abs/2102.06959

    https://github.com/ruby/date/commit/cc639549d6

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

commit ae46f916f1e686b5f7cc80402f2e8b5f299abc3c
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-23 09:43:58 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/stringio] [DOC] Doc for StringIO#read
    (https://github.com/ruby/stringio/pull/197)

    Previous doc merely linked to `IO#read`; new doc stays local, shows
    examples using `StringIO`.

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

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

commit 9a76ccdbabbd7d2814a3106cc10d2740b6120ab9
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-23 09:43:00 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/stringio] [DOC] Doc for StringIO#putc
    (https://github.com/ruby/stringio/pull/196)

    Previous doc merely linked to `IO#putc`. The new doc stays local,
    provides examples using `StringIO` objects.

    https://github.com/ruby/stringio/commit/8983f32c50

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

commit 354dc574de421e6cbfb4404abc49a5be462042a9
  Author:     Burdette Lamar <BurdetteLamar@Yahoo.com>
  AuthorDate: 2025-12-23 09:42:36 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/stringio] [DOC] Doc for StringIO#pread
    (https://github.com/ruby/stringio/pull/195)

    Previous doc unhelpfully pointed to `IO#pread`; this PR documents
    locally, with StringIO examples.

    https://github.com/ruby/stringio/commit/806f3d9741

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

commit 67f830e0925c328c19fc1c2f513a174c6e3ca63d
  Author:     Sutou Kouhei <kou@clear-code.com>
  AuthorDate: 2025-12-17 14:18:43 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 11:00:51 +0900

    [ruby/stringio] Development of 3.2.1 started.

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

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

commit 290fa0d8b4e0145f389c6fdaff3ef45b915d706b
  Author:     Peter Zhu <peter@peterzhu.ca>
  AuthorDate: 2025-12-26 09:30:50 +0900
  Commit:     git[bot] <svn-admin@ruby-lang.org>
  CommitDate: 2025-12-26 09:31:28 +0900

    [ruby/mmtk] Fix cargo fmt

    https://github.com/ruby/mmtk/commit/f4c46cabc7

commit a06a59e3b34cd5227363dc3af14dc6d1ce93e665
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 09:06:11 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 09:06:11 +0900

    Rename and enabled auto-update bundled gems again

commit 2fa02d6d2e325e0c746f353e70403389072b5dee
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-12-26 09:06:05 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-12-26 09:06:05 +0900

    Enabled auto-update NEWS.md and sync for default gems again

commit 010dcf85567ee1898706a4a8e353ac915a3d8873
  Author:     Yukihiro "Matz" Matsumoto <matz@ruby.or.jp>
  AuthorDate: 2025-12-25 21:14:35 +0900
  Commit:     Yukihiro "Matz" Matsumoto <matz@ruby.or.jp>
  CommitDate: 2025-12-26 08:59:23 +0900

    Development of 4.1.0 started.
