-*- coding: utf-8 -*-

commit 7a5688e2a27668e48f8d6ff4af5b2208b98a2f5e
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-10-08 01:42:48 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-10-08 01:42:48 +0900

    v3.4.7

commit ef3ce711fb29f7273216edb2fe41bb2604c835c3
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-10-08 01:41:15 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-10-08 01:41:15 +0900

    merge revision(s) 7ae67e8f6ad6e7fd0677b28a7a10961f79d55495: [Backport #21568]

            [PATCH] load.c: Fix dest and src of MEMMOVE

            When multiple files with the same name are required, the features_index
            hash stores the indexes in `$LOADED_FEATURES` array into a darray.
            The dest and src arguments for `MEMMOVE` were wrongly reversed when
            inserting a new index in the darray.

            [Bug #21568]

commit a7eb7e7c6fe02f7127ff527fff18a0914a7aa888
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-10-07 02:53:24 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-10-08 01:40:55 +0900

    tool/merger.rb: Fetch diff from GitHub instead of cgit

    Our cgit server has been shut down.

    tool/merger.rb: Fetch a diff in the patch format

    It expects "Subject:", so it needs to be a patch file.

commit d2cd7eaa11f57f81cdbacf0e8d5162d37e28337b
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-10-07 10:30:16 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-10-08 01:15:46 +0900

    Update rubyspec as of CVE-2025-27221

commit 71462666e0f1ea720062e12f97b2ea89166038d1
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-10-07 18:29:36 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-10-08 01:15:46 +0900

    Merge URI-1.0.4

commit 49d7295fc38583abf3018a16a2018667871d9f3d
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-10-03 02:05:27 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-10-03 02:05:39 +0900

    macos.yml: macOS 13 hosted runner image is closing down

    https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/

commit 264b2d78c366491834c9ce4499a4ad7b7564b89d
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-30 07:10:37 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-30 07:10:58 +0900

    Reapply "merge revision(s) 62430c19c9f1ab49429cebe65f30588472648c95: [Backport #21342]"

    This reverts commit c414b9871f263331cde0af1c08cf5c1a47e1aedf.

commit c414b9871f263331cde0af1c08cf5c1a47e1aedf
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-30 07:08:47 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-30 07:08:47 +0900

    Revert "merge revision(s) 62430c19c9f1ab49429cebe65f30588472648c95: [Backport #21342]"

    This reverts commit 4306c9048fb674d24b92dc46b6746a4749564147.

commit 22c2262b83224f6798d60d539f1f8609d9722766
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-30 06:36:06 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-30 06:36:06 +0900

    merge revision(s) 354d47ae5bc4edcc94db4a5391ed71a8b9844e57: [Backport #21569]

            IBF: Avoid unaligned load on 32 bit platforms

            [Bug #21569]

commit 4306c9048fb674d24b92dc46b6746a4749564147
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-30 06:35:15 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-30 06:35:15 +0900

    merge revision(s) 62430c19c9f1ab49429cebe65f30588472648c95: [Backport #21342]

            Properly unlock locked mutexes on thread cleanup.

            Mutexes were being improperly unlocked on thread cleanup. This bug was
            introduced in 050a8954395.

            We must keep a reference from the mutex to the thread, because if the fiber
            is collected before the mutex is, then we cannot unlink it from the thread in
            `mutex_free`. If it's not unlinked from the the thread when it's freed, it
            causes bugs in `rb_thread_unlock_all_locking_mutexes`.

            We now mark the fiber when a mutex is locked, and the thread is marked
            as well. However, a fiber can still be freed in the same GC cycle as the
            mutex, so the reference to the thread is still needed.

            The reason we need to mark the fiber is that `mutex_owned_p()` has an ABA
            issue where if the fiber is collected while it's locked, a new fiber could be
            allocated at the same memory address and we could get false positives.

            Fixes [Bug #21342]

            Co-authored-by: John Hawthorn <john@hawthorn.email>

commit 88a96147a21900a2c22d3ae84d05cd3f6ee795c7
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-30 06:31:05 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-30 06:31:05 +0900

    merge revision(s) ef2b26cc3eaed06c5c9d4ef2c6d8669ff357afa4: [Backport #21611]

            `struct iseq_catch_table` is packed

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

    Use `ec->interrupt_mask` to prevent interrupts. [Backport #21610]

    Disallow pending interrupts to be checked during `FiberScheduler#unblock`.

    Ractors can send signals at any time, so the previous debug assertion can fail if a Ractor sends a signal.

    Co-authored-by: Luke Gruber <luke.gruber@shopify.com>

commit 6882012473b3bd3a9eb53ad7f7754144c0e63ef0
  Author:     Jean Boussier <jean.boussier@gmail.com>
  AuthorDate: 2025-09-17 06:17:51 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-09-17 06:17:51 +0900

    [3.4] compile.c: Handle anonymous variables in `outer_variable_cmp` (#13493)

commit b5346f2c5be00f886c9ad2f4b807deb728265a0a
  Author:     Nick Dower <nicholasdower@gmail.com>
  AuthorDate: 2025-05-16 22:44:45 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-17 05:36:08 +0900

    Add a test case for `it` in a regex.

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

commit 1f6d845011cf8900c0e9c6fe5e4243a63a5ecae3
  Author:     Nick Dower <nicholasdower@gmail.com>
  AuthorDate: 2025-05-16 12:18:28 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-17 05:36:08 +0900

    [Bug #21313] Handle `it` in rescue and ensure blocks.

    The following is crashing for me:

    ```shell
    ruby --yjit --yjit-call-threshold=1 -e '1.tap { raise rescue p it }'

    ruby: YJIT has panicked. More info to follow...
    thread '<unnamed>' panicked at ./yjit/src/codegen.rs:2402:14:
    ...
    ```

    It seems `it` sometimes points to the wrong value:

    ```shell
    ruby -e '1.tap { raise rescue p it }'
    false

    ruby -e '1.tap { begin; raise; ensure; p it; end } rescue nil'
    false
    ```

    But only when `$!` is set:

    ```shell
    ruby -e '1.tap { begin; nil; ensure; p it; end }'
    1

    ruby -e '1.tap { begin; nil; rescue; ensure; p it; end }'
    1

    ruby -e '1.tap { begin; raise; rescue; ensure; p it; end }'
    1
    ```

commit dbd83256b1cec76c69756ecb8758b9e1079833de
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-16 07:38:23 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-16 07:38:23 +0900

    v3.4.6

commit 9c65da014548a141137e7e692699b129e3bc655f
  Author:     Takashi Kokubun <takashi.kokubun@shopify.com>
  AuthorDate: 2025-09-14 12:53:54 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-09-14 12:53:54 +0900

    Bump Prism version to 1.5.1 (#14549)

commit 09c067014fa27ad91d310de6a64b7a4443d7da0c
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-13 07:22:44 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-13 07:24:16 +0900

    Attempt to fix [Backport #21567]

commit 21709a58682b9fef53e3e3dec97a0fe4498334e3
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-13 06:58:07 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-13 06:58:07 +0900

    merge revision(s) 7a05dbc47831a655a1ef8a1635f88292acd325da: [Backport #21561]

            File.dirname: return consistent encoding for `"."`

            [Bug #21561]

            It's preferable if the method is consistent in the encoding in
            the returned string.

commit 00fa53d0ba9ad3c70b634834ff4ca35c2923a894
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-13 06:56:47 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-13 06:56:47 +0900

    merge revision(s) 928fea3bfa86053c0bc6f7a5bf7559b115a676b5: [Backport #21567]

            Fix crash when $LOADED_FEATURES is modified during require

            [Bug #21567]

            When we require an object that is not a string, it will attempt to convert
            it to a string by calling to_str on it. If we modify the $LOADED_FEATURES
            array while it calls to_str, Ruby can crash because it can end up inserting
            the string in the wrong index in the array.

            For example, the following script crashes:

                require "tempfile"

                class MyString
                  def initialize(path)
                    @path = path
                  end

                  def to_str
                    $LOADED_FEATURES.clear
                    @path
                  end

                  def to_path = @path
                end

                def create_ruby_file = Tempfile.create(["test", ".rb"]).path

                require MyString.new(create_ruby_file)
                $LOADED_FEATURES.unshift(create_ruby_file)
                $LOADED_FEATURES << MyString.new(create_ruby_file)
                require create_ruby_file

            Crash log:

                test.rb:21: [BUG] Segmentation fault at 0x0000000000000004
                ruby 3.5.0dev (2025-09-09T09:29:35Z master ce94add7fb) +PRISM [arm64-darwin24]

                -- Crash Report log information --------------------------------------------
                  See Crash Report log file in one of the following locations:
                    * ~/Library/Logs/DiagnosticReports
                    * /Library/Logs/DiagnosticReports
                  for more details.
                Don't forget to include the above Crash Report log file in bug reports.

                -- Control frame information -----------------------------------------------
                c:0003 p:---- s:0011 e:000010 CFUNC  :require
                c:0002 p:0076 s:0006 e:000005 EVAL   test.rb:21 [FINISH]
                c:0001 p:0000 s:0003 E:0001b0 DUMMY  [FINISH]

                -- Ruby level backtrace information ----------------------------------------
                test.rb:21:in '<main>'
                test.rb:21:in 'require'

                -- Threading information ---------------------------------------------------
                Total ractor count: 1
                Ruby thread count for this ractor: 1

                -- Machine register context ------------------------------------------------
                  x0: 0x0000000000000004  x1: 0x000000000000c800  x2: 0x0000000000000000
                  x3: 0x0000000000000000  x4: 0x0000000000000205  x5: 0x0000000000000000
                  x6: 0x0000000000000000  x7: 0x0000000000000001 x18: 0x0000000000000000
                x19: 0x0000000209dfc0b0 x20: 0x0000000209dfc018 x21: 0x000000016ee8ab58
                x22: 0x0fffffff0009d71d x23: 0x0000000209dfc018 x24: 0x0000000209dfc150
                x25: 0x000000016ee8acc0 x26: 0x0000000000000000 x27: 0x0000000000000000
                x28: 0x0000000000000000  lr: 0x0000000101244140  fp: 0x000000016ee887f0
                  sp: 0x000000016ee887d0

                -- C level backtrace information -------------------------------------------
                miniruby(rb_print_backtrace+0x24) [0x101317b08] vm_dump.c:843
                miniruby(rb_print_backtrace) (null):0
                miniruby(rb_vm_bugreport+0x26c) [0x101317d94] vm_dump.c:1175
                miniruby(rb_bug_for_fatal_signal+0xa4) [0x10105ddac] error.c:1130
                miniruby(sig_do_nothing+0x0) [0x1012278c0] signal.c:948
                miniruby(sigsegv) (null):0
                /usr/lib/system/libsystem_platform.dylib(_sigtramp+0x38) [0x19c1216a4]
                miniruby(rb_str_new_frozen+0x1c) [0x101244140] string.c:1495
                miniruby(rb_check_realpath_internal+0x68) [0x101077804] file.c:4679
                miniruby(rb_check_realpath+0x2c) [0x101077aa4] file.c:4765
                miniruby(get_loaded_features_index+0x37c) [0x1010f9c94] load.c:467
                miniruby(rb_feature_p+0xd0) [0x1010f8174] load.c:582
                miniruby(search_required+0xac) [0x1010f6ad4] load.c:1193
                miniruby(require_internal+0x274) [0x1010f7518] load.c:1424
                miniruby(rb_require_string_internal+0x94) [0x1010f6830] load.c:1571
                miniruby(rb_require_string+0x58) [0x1010f66e8] load.c:1557
                miniruby(rb_f_require+0x1c) [0x1010f6684] load.c:1150
                miniruby(ractor_safe_call_cfunc_1+0x38) [0x101306c28] vm_insnhelper.c:3696
                miniruby(vm_call_cfunc_with_frame_+0x250) [0x1012f857c] vm_insnhelper.c:3873
                miniruby(vm_call_cfunc_with_frame+0x6c) [0x1012f8834] vm_insnhelper.c:3919
                miniruby(vm_sendish+0x1a8) [0x1012c990c] vm_insnhelper.c:6087
                miniruby(vm_exec_core+0x4050) [0x1012cfb48] insns.def:900
                miniruby(vm_exec_loop+0x80) [0x1012e5448] vm.c:2666
                miniruby(rb_vm_exec+0x134) [0x1012c9b40] vm.c:2645
                miniruby(rb_iseq_eval_main+0x34) [0x1012e5628] vm.c:2919
                miniruby(rb_ec_exec_node+0xe4) [0x10106d094] eval.c:282
                miniruby(ruby_run_node+0x94) [0x10106cf64] eval.c:320
                miniruby(rb_main+0x40) [0x100f7499c] main.c:42
                miniruby(main+0x60) [0x100f74928] main.c:62

commit cdd1de636bfa7790c72949d01e4a083845781d87
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-22 09:06:02 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-13 06:30:16 +0900

    Revert "[ruby/prism] Clear flags on interpolated strings"

    This reverts commit a495e6a44ce8cff17461b250e32ab63e409a642d.

    This break extension builds:

    ```
    /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:321:in 'String#replace': can't modify frozen String: "$(SDKROOT)$(prefix)/include" (FrozenError)
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:321:in 'RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:314:in 'block in RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:307:in 'String#gsub'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:307:in 'RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:314:in 'block in RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:307:in 'String#gsub'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:307:in 'RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:314:in 'block in RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:307:in 'String#gsub'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:307:in 'RbConfig.expand'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:325:in 'block in <module:RbConfig>'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:324:in 'Hash#each_value'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:324:in '<module:RbConfig>'
            from /Users/hsbt/Documents/github.com/ruby/ruby/rbconfig.rb:11:in '<top (required)>'
            from ./ext/extmk.rb:42:in 'Kernel#require'
            from ./ext/extmk.rb:42:in '<main>'
    make[1]: *** [ext/configure-ext.mk:70: ext/json/exts.mk] Error 1
    ```

commit c63d6bee7b1bba0308e72cb8d54538ff84af612a
  Author:     Earlopain <14981592+Earlopain@users.noreply.github.com>
  AuthorDate: 2025-09-13 05:49:35 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-13 06:30:16 +0900

    Explicitly use a ruby version for prism to parse the code as

    Prism can parse multiple versions of ruby. Because of that branch release managers are ok with simply
    bumping prism to its latest version.

    However, if no version is specified, it will parse as the latest known version, which can be ahead of the maintenance branch.
    So we need to explicitly pass a version to not accidentally introduce new syntax to maintenance branches.

commit 52b3f006cb31672c45b26f6a44a609fd1b8e2ee5
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-13 05:09:30 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-13 06:30:16 +0900

    Bump Prism version to 1.5.0

commit 9cd1ac404e72587952d019df167e7793924699d6
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-09-11 06:02:21 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-11 07:35:06 +0900

    YJIT: Print more disassembly in release builds

    These `#[cfg(feature = "disasm")]` were unnecessary and we can provide
    the information like ruby source location regardless of the availability
    of capstone.

commit c866b9027b7429b402ed272ebaebb6c7831e3cb5
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-09-11 06:04:11 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-11 07:35:06 +0900

    YJIT: Remove dead code: `asm_comment!` checks `--yjit-dump-disasm`

commit ecebf1687dfd8defd44ff6514329224de4a598b1
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-09 05:30:57 +0900
  Commit:     GitHub <noreply@github.com>
  CommitDate: 2025-09-09 05:30:57 +0900

    YJIT: Add more information to an assert message (#14481)

    YJIT: Add more information to an assert message in jit_guard_known_class (#14480)

    ---------

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

commit 600dc9cf1f8f52ba673bb43a718f7f980ea82404
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-09-09 05:11:34 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-09 05:29:50 +0900

    YJIT: Make the workflow names consistent with file names

commit 6d338434e335b1d4164a10cf12c7243119fd32c7
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-14 16:07:01 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add missing write barrier for hash on iseq

    Found by wbcheck

commit 7de09550dad4f3921fba712009c1ec516a384fb2
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-13 07:06:38 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add write barrier to rb_cArray_empty_frozen

    Found by wbcheck

commit f6448d65846d374d5096f53170cc9148f42df583
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-14 16:20:18 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add write barrier to rb_cHash_empty_frozen

    Found by wbcheck

commit 4c0a2764b6634e6f2c11494fc015afd5c71537c2
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-10 02:09:10 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    More write barriers to local_iseq and parent_iseq

    Found by wbcheck

commit 3fb7c4f7e624de54fd18520585f3b294e83c2e20
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-08 12:10:05 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Use write barriers when loading catch table

    Found by wbcheck

commit eb2f79ff60065fd33a472f8e16d91b69b7a3735d
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-08 12:05:18 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add missing write barriers to ibf_load

    Found by wbcheck

commit d2caeb1e70ea65a909bf2722706b2fd558982cc6
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-08 10:37:46 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Fix a missing write barrier to mandatory_only_iseq

    Found by wbcheck

commit ffbccd45ce04c050ae8c05162eb697bccc948a3b
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-09 02:52:33 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add write barrier on tm_from_time->timew

    We want to always use time_set_timew, as timew is 64-bit even on 32-bit
    platforms so we need to be careful to both write that size, but still
    trigger write barriers if we end up with a heap object.

commit 34af4993bb57967d1ae3950472662667bce5d36c
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-09 02:59:13 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add missing write barrier to time_init_copy

commit 6312c4000b1c2271141357b808e13e56c7bb3d6c
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-08 15:30:04 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Write barrier for zone on time

commit c2bda5c359fdf5bb9f1b813a066a3e47d445e620
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-10 10:13:38 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Add write barrier for hash in obj_traverse_i

    We are inserting directly into the st_table, so we need to issue a write
    barrier from the hash.

commit e1081f3b1aaf0766f4f01ce131b34b4b7ddbafa3
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-11 03:15:47 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Fix early write barrier rb_marshal_define_compat

    This write barrier occurred before the entry was added to the table, so
    if GC occurred when inserting into the table, the write could be missed.

commit ff124e9f93975e40ae91cff272a1c1d05273e615
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-15 17:18:22 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-09-06 01:05:06 +0900

    Fix too early writebarrier in tally_up

    After returning from the callback in st_update is the point that the
    hash table may be resized, which could trigger a GC and mark the table
    being used for the tally.

        RUBY_GC_LIBRARY=wbcheck WBCHECK_VERIFY_AFTER_WB=1 ./miniruby -e '(0...100).map(&:to_s).tally'

commit 38297e47945593daa3f395121c340260b9fae82d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-08-16 21:38:03 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 09:34:34 +0900

    CI: windows: Skip rebuilding vcpkg packages when cache restored

commit 958bdafd8a2bd7f9247024753dbc540aa311094d
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-08-16 21:30:19 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 09:34:34 +0900

    CI: windows: Use possibly faster device for TMP/TEMP

commit ffc174470610eaa18e92254393f9b4a4c3ce54d8
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-31 10:36:23 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 09:34:34 +0900

    Save vcpkg cache with master and stable branches

commit 0d367ce65fe4e85f207a8ca5f1f331dd90c6992e
  Author:     Luke Gruber <luke.gruber@shopify.com>
  AuthorDate: 2025-08-27 22:26:57 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 07:19:58 +0900

    Fix bad NameError raised using sendforward instruction through vcall

    If you called a VCALL method and the method takes forwarding arguments
    and then you forward those arguments along using the sendforward
    instruction, the method_missing class was wrongly chosen as NameError
    instead of NoMethodError. This is because the VM looked at the CallInfo
    of the vcall and determined it needed to raise NameError. Now we detect
    that case and raise NoMethodError.

    [Backport #21535]

commit 5a42d267bfabc86f86cae2e83de24b1b86bc316a
  Author:     Janosch Müller <janosch84@gmail.com>
  AuthorDate: 2023-04-14 03:43:06 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 07:17:15 +0900

    Make word prop match join_control to conform to UTS 18

    See <https://bugs.ruby-lang.org/issues/19417#note-3>.

    https://unicode.org/reports/tr18/#word states word should match join_control chars.

    It did not previously:

    ```ruby
    [*0x0..0xD799, *0xE000..0x10FFFF].map { |n| n.chr 'utf-8' } => all_chars
    all_chars.grep(/\p{join_control}/) => jc
    jc.count # => 2
    jc.grep(/\p{word}/).count # => 0
    ```
    [Backport #19417]

    ---

    Backporting note: I regenerated `enc/unicode/15.0.0/name2ctype.h` using
    `make update-unicode`.

commit fd036dbc3f39e6bdce735edf9ca187a690fe2079
  Author:     Jeremy Evans <code@jeremyevans.net>
  AuthorDate: 2025-05-30 14:32:09 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 06:29:42 +0900

    Do not respect ruby2_keywords on method/proc with post arguments

    Previously, ruby2_keywords could be used on a method or proc with
    post arguments, but I don't think the behavior is desired:

    ```ruby
    def a(*c, **kw) [c, kw] end
    def b(*a, b) a(*a, b) end
    ruby2_keywords(:b)

    b({foo: 1}, bar: 1)
    ```

    This changes ruby2_keywords to emit a warning and not set the
    flag on a method/proc with post arguments.

    While here, fix the ruby2_keywords specs for warnings, since they
    weren't testing what they should be testing.  They all warned
    because the method didn't accept a rest argument, not because it
    accepted a keyword or keyword rest argument.

    [Backport #21402]

commit d49c7d0661faa964099b8c28ac316e33ae641051
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-08-17 17:13:15 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 06:13:52 +0900

    [Backport #21546] Make the generated pc file relocatable

commit b97a159dd9d9843673b4b1de2b056a0868e7e0f9
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-08-27 09:35:11 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 01:07:32 +0900

    Bump PRISM version number to avoid collision with RubyGems version

commit 1f421d092bb8c290df5cfc9e95a01e279ebadc42
  Author:     Aaron Patterson <tenderlove@ruby-lang.org>
  AuthorDate: 2025-07-18 07:20:20 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-28 01:07:32 +0900

    When reading from stdin, put a wrapper around the IO object

    The purpose of this commit is to fix Bug #21188.  We need to detect when
    stdin has run in to an EOF case.  Unfortunately we can't _call_ the eof
    function on IO because it will block.

    Here is a short script to demonstrate the issue:

    ```ruby
    x = STDIN.gets
    puts x
    puts x.eof?
    ```

    If you run the script, then type some characters (but _NOT_ a newline),
    then hit Ctrl-D twice, it will print the input string.  Unfortunately,
    calling `eof?` will try to read from STDIN again causing us to need a
    3rd Ctrl-D to exit the program.

    Before introducing the EOF callback to Prism, the input loop looked
    kind of like this:

    ```ruby
    loop do
      str = STDIN.gets
      process(str)

      if str.nil?
        p :DONE
      end
    end
    ```

    Which required 3 Ctrl-D to exit.  If we naively changed it to something
    like this:

    ```ruby
    loop do
      str = STDIN.gets
      process(str)

      if STDIN.eof?
        p :DONE
      end
    end
    ```

    It would still require 3 Ctrl-D because `eof?` would block.  In this
    patch, we're wrapping the IO object, checking the buffer for a newline
    and length, and then using that to simulate a non-blocking eof? method.

    This commit wraps STDIN and emulates a non-blocking `eof` function.

    [Backport #21188]

commit c6614d4cdcf36442c099c0d11a7cd24e530b35f1
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-08-12 03:31:52 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-12 04:21:19 +0900

    YJIT: Fix `mismatched_lifetime_syntaxes`, new in Rust 1.89.0

commit 5026609f47b79da093642d9a7731c3880d2a054e
  Author:     John Hawthorn <john@hawthorn.email>
  AuthorDate: 2025-06-10 03:26:49 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-06 07:42:27 +0900

    Fix missing write barrier through M_TBL

    When creating a new origin in ensure_origin, we need to fire a write
    barrier after RCLASS_SET_ORIGIN. rb_class_set_super allocates, so GC
    could happen there, either incrementally marking or promoting the newly
    allocated class, and only after RCLASS_SET_ORIGIN will origin mark
    object in the M_TBL.

commit 07f7832cffea879946a796e066ccb13ccb4b2abd
  Author:     TSUYUSATO Kitsune <make.just.on@gmail.com>
  AuthorDate: 2025-07-29 00:44:44 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-01 02:02:40 +0900

    Correct castings to use OnigDistance

commit e6e547f3e582d585bfa00f330d40473c74086c09
  Author:     TSUYUSATO Kitsune <make.just.on@gmail.com>
  AuthorDate: 2025-07-28 18:45:57 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-01 02:02:40 +0900

    Add castings to prevent warnings

commit 9e024046c5f3917149015b9458ec07b145c5428b
  Author:     TSUYUSATO Kitsune <make.just.on@gmail.com>
  AuthorDate: 2025-07-28 17:50:36 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-01 02:02:40 +0900

    Port a Oniguruma patch: Integer overflow in onig_search_gpos()

    https://github.com/kkos/oniguruma/commit/778a43dd56925ed58bbe26e3a7bb8202d72c3f3f

    It differs from the Oniguruma patch in that it dosen't use `onigenc_get_prev_char_head()`
    because this function's signature has been changed by Oniguruma and the change is not ported
    in Onigmo for now. This patch respects the current Onigmo implementation.

    Co-Authored-By: K.Kosako <kkos@users.noreply.github.com>

commit 142fc23975e9e240d6b4a5ee4d63c45ab969fd10
  Author:     TSUYUSATO Kitsune <make.just.on@gmail.com>
  AuthorDate: 2025-07-28 16:18:11 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-01 02:02:40 +0900

    Port a Oniguruma patch: Integer overflow in backward_search_range() and onig_search_gpos()

    https://github.com/kkos/oniguruma/commit/bfc36d3d8139b8be4d3df630d625c58687b0c7d4

    Co-Authored-By: K.Kosako <kkos@users.noreply.github.com>

commit 9f45db04ac36386aedfb35d1f3a5ff9603a24d68
  Author:     TSUYUSATO Kitsune <make.just.on@gmail.com>
  AuthorDate: 2025-07-28 16:05:41 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-08-01 02:02:40 +0900

    Port a Oniguruma patch: Integer overflow in forward_search_range()

    https://github.com/kkos/oniguruma/commit/db64ef3189f54917a5008a02bdb000adc514a90a

    Co-Authored-By: K.Kosako <kkos@users.noreply.github.com>

commit 8b505a286080fead52a603fcd2761c2d6b3e3aec
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-07-22 06:45:15 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-22 06:45:15 +0900

    merge revision(s) 148db9c80f11af1780f0f3685201f28de8f6b47a: [Backport #21259]

            Fix flipflop line numbers

            [ruby-core:121605]

commit d713896f19517ab688b13174e6346a87fd9e01ee
  Author:     Alan Wu <XrXr@users.noreply.github.com>
  AuthorDate: 2025-01-31 08:00:53 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-18 01:23:16 +0900

    YJIT: Explicitly specify C ABI to fix Rust warning

    Backport of 7e733ca55168e3b1f10b685f6e9a52cf1deb5aff to
    fix [Bug #21514].

commit 20cda200d3ce092571d0b5d342dadca69636cb0f
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-07-16 01:27:14 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:27:14 +0900

    v3.4.5

commit 8b1c313d4029715ea0371142fde2ac7de0b2b22c
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-06-03 15:57:06 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    [ruby/etc] Alias value or join to take in old Ruby

    https://github.com/ruby/etc/commit/3dbe760bed

commit d2264185fad4f272a8cb5b9865fd3cd47e5e8291
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-07-01 17:38:25 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    [ruby/json] [ruby/json] Run `have_func` with the header providing the declarations

    https://github.com/ruby/json/commit/95fb084027

    https://github.com/ruby/json/commit/9d080765cc

commit 8a9c6e0304f554b3d9d9c29bb07e1ab8544d5c37
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-07-01 17:38:25 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    [ruby/strscan] Run `have_func` with the header providing the declarations

    https://github.com/ruby/strscan/commit/18c0a59b65

commit 2473d0b6f758f3826de70f66412a6eb678fb9002
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-06-12 10:32:49 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    [ruby/strscan] Update extconf.rb
    (https://github.com/ruby/strscan/pull/158)

    - `have_func` includes "ruby.h" by default.
    - include "ruby/re.h" where `rb_reg_onig_match` is declared.

    https://github.com/ruby/strscan/commit/1ac96f47e9

commit 05a7d345ce0cc6fc5c55a4df0e633b145c3e6316
  Author:     Nobuyoshi Nakada <nobu@ruby-lang.org>
  AuthorDate: 2025-07-01 17:38:25 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    [ruby/openssl] [ruby/openssl] Run `have_func` with the header providing the declarations

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

    https://github.com/ruby/openssl/commit/5277ca1431

commit 9a11bc5a2456448381235f25f0b51b33d2baf946
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-15 17:34:50 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    Merge etc 1.4.6

commit 84d49322701ea1a2451440f53633ed9fd4a72f02
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-15 17:34:32 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    Merge io-nonblock 0.3.2

commit 854787a8b23f82f59f15c3253a8461534495d7f5
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-15 17:34:14 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    Merge io-wait 0.3.2

commit 282cbf68f0d4dcb75aeeefea1fac4ffd9e7a319b
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-15 17:33:40 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-16 01:23:42 +0900

    Merge io-console 0.8.1

commit cfdc2465d9fcd14eba512bfa80b5fd7c9e67f18e
  Author:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  AuthorDate: 2025-07-14 18:23:13 +0900
  Commit:     Hiroshi SHIBATA <hsbt@ruby-lang.org>
  CommitDate: 2025-07-15 18:34:31 +0900

    Split restore and save actions from action/cache. We need to save always vcpkg cache

commit 596126ee5aa35a65bcaca60b92b5547ef1a9d2da
  Author:     Takashi Kokubun <takashikkbn@gmail.com>
  AuthorDate: 2025-07-15 06:50:56 +0900
  Commit:     Takashi Kokubun <takashikkbn@gmail.com>
  CommitDate: 2025-07-15 06:50:56 +0900

    merge revision(s) b42afa1dbcbb91e89852b3b3bc72484d7f0a5528, f1f0cc14cc7d3f9be35b203e5583f9224b1e2387, 543e3a1896ae2fe3b5b954f6497d261ab5663a15, ed2806117a0b76e4439ce1a061fae21d9e116d69, 46e4c8673747de96838d2c5dec37446d23d99d88: [Backport #21500]

            Suppress gcc 15 unterminated-string-initialization warnings

            Separate `__has_attribute` from `defined(__has_attribute)`

            Fix Visual C warnings:
            ```
            regenc.h(121): warning C4067: unexpected tokens following preprocessor directive - expected a newline
            ```

            Cast up `int` instruction code to `VALUE`

            Fix Visual C warnings:
            ```
            iseq.c(3793): warning C4312: 'type cast': conversion from 'int' to 'void *' of greater size
            iseq.c(3794): warning C4312: 'type cast': conversion from 'int' to 'void *' of greater size
            ```

            Do not let files depend on a phony target

            Detect `clock_gettime` and `clock_getres` for winpthreads

commit 782aef10bbdb63aba6d71e4f5f1876888c70efcb
