-*- coding: utf-8 -*-

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

commit 3e9494c70bb7b23a5982e8b21087938e8a753b91
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-03-07 14:13:14 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-03-07 14:50:06 +0900

    Bump zlib version to 3.2.3.

commit 0097b87b1e2c6aa60489527e421e8bf2e2791d69
  Author:     Mike Dalessio <mike@37signals.com>
  AuthorDate: 2026-02-11 02:10:21 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-03-07 14:41:17 +0900

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

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

    Resolve ICLASS defined_class in method_eq.

    [Bug #21873]

commit 153fa85994f3f06c93e2b10726c98b6f3b824225
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2026-02-10 11:39:51 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-03-07 14:17:15 +0900

    objspace_dump: Skip invalid CME when dumping CCs

    When a CC is invalidated only the klass field is set to 0. After it's
    invalidated it isn't safe to access the CME, as it may have been freed.

    I made a similar change in Ruby 4.0 in
    640a2f1dc77c0ecf226dbd71cf7a1eb876a1f037, but assumed it was due to the
    changes we'd made to callcaches making klass a weak-reference.

    Co-authored-by: Christian Bruckmayer <christian.bruckmayer@shopify.com>

commit 43771bb0efcd139acd9112a770e8b8d719118dce
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2026-02-04 21:12:42 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-03-07 13:41:44 +0900

    [3.4] Fix deadlock on th->interrupt_lock after fork

    [Bug #21860]

    If a thread was holding this lock before fork, it will not exist in the
    child process. We should re-initialize these locks as we do with the VM
    locks when forking.

    Co-Authored-By: John Hawthorn <john@hawthorn.email>
    Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>

commit a93ff4880da5c4e56f7ec2066a9c3f7748892231
  Author:     Jörmungandrk <github@zerodaysec.org>
  AuthorDate: 2026-01-09 12:22:01 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-03-07 13:40:05 +0900

    Fix integer overflow checks in enumerator

commit 46f51cb3a26e5bfc92251e7971697a9c31bcab44
  Author:     ZHIJIE XIE <40601688+dummyx@users.noreply.github.com>
  AuthorDate: 2026-03-03 02:40:57 +0900
  Commit:     Luke Gruber <luke.gru@gmail.com>
  CommitDate: 2026-03-06 10:57:24 +0900

    string.c: guard tmp in rb_str_format_m (GH-16280)

    [Bug #21931]

    Keep tmp alive while RARRAY_CONST_PTR(tmp) is used by rb_str_format.

    [alan: sunk the guard below usage]
    Reviewed-by: Alan Wu <XrXr@users.noreply.github.com>

commit 981097a7390db47e06d78b760ed198bff8eb184b
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 18:21:53 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 18:21:53 +0900

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

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

            [Bug #21838]

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

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

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

commit 02eb4eec87cbbb14c24b63678aa0cca625777414
  Author:     Randy Stauner <randy@r4s6.net>
  AuthorDate: 2026-01-13 10:35:12 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 18:18:10 +0900

    Add pushtoarray insn to fix segfault with forwarding + splat

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

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

    This matches the insns produced by parse.y

commit 86e65fa1677180f5108157206edb01cfd25f24b6
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 17:48:12 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 17:48:12 +0900

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

            [PATCH] fix underflow

commit d5ca99a71ccb170db08e4b610d661ce3a18626f2
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 17:47:37 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 17:47:37 +0900

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

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

commit 8fa17ea3b2c857369c808a4384ff7ff8174d69f8
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 17:41:02 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 17:41:02 +0900

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

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

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

commit 55920677854fe757c36368785f6dfdbce0b49ab7
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 17:12:40 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 17:20:48 +0900

    merge revision(s) 86320a53002a3adaf35ad7434c70e86747a8b345: [Backport #21326] [Backport #21807]

            [PATCH] Fix compilation for forwarding params in Prism

            [Bug #21326]

commit 28db1b5c3d3a9a5c60762622cb0c3c36c021e8e4
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 16:41:13 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 16:41:13 +0900

    merge revision(s) 61bab1889048f758396acf671c9797d6bc52504b: [Backport #21757]

            [PATCH] Rename to `struct rbimpl_size_overflow_tag`

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

commit c409e343fb14438c2e5304f10ad4c6919e30ac2e
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 16:40:50 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 16:40:50 +0900

    merge revision(s) 99ff0224a564b59df3ba8fbd7911dd41a7fdde34: [Backport #21757]

            [PATCH] Move rbimpl_size_add_overflow from gc.c to memory.h

commit 45100545b056792fb5701a93abd1f78259a6224e
  Author:     nagachika <nagachika@ruby-lang.org>
  AuthorDate: 2026-01-25 16:37:10 +0900
  Commit:     nagachika <nagachika@ruby-lang.org>
  CommitDate: 2026-01-25 16:37:10 +0900

    merge revision(s) f430fbbfacea5690d790dd9060ca4118431fc2fb, c353b625297162024b5a80480664e599dd49a294: [Backport #21787]

            [PATCH] IO::Buffer: Fill the test for `IO::Buffer#clear`

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

            https://hackerone.com/reports/3437743

commit 2bbc06e21d040ecbf4e32d3c4805685baf957d51
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2026-01-19 11:25:11 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2026-01-21 16:52:39 +0900

    merge revision(s) d209e6f1c0a93ad3ce1cc64dd165a6b67672614d: [Backport #21715]

            [PATCH] search_nonascii(): Replace UB pointer cast with memcpy

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

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

commit c04363c0a09d1e9cd03ff2e5cf6dd83e87a8a90c
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2026-01-06 07:08:15 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2026-01-06 07:08:17 +0900

    Remove k0kubun from CODEOWNERS

    nagachika will take over the maintenance of ruby_3_4 going forward.
