ruby-trunk-changes 2026-05-21

今日は主に GC の xmalloc()/xfree() でのヒープのメモリ利用状況の管理のためのカウンタ実装の atomicity の改善や tarball パッケージテストの GitHub Actions workflow の整理の続き、protected なメソッドへの defined? の不具合修正などがありました。

[c124d5552a] Max Bernstein 2026-05-20 16:25:55 UTC

ZJIT の Rust 実装でメソッドの引数の数を判定する処理を関数に切り出して、ブロック引数も型プロファイルの対象とするようにしているようです。 https://github.com/ruby/ruby/pull/17038

[cb9f2ba804] John Hawthorn 2026-05-20 09:48:42 UTC

複数 Ractor 利用時にメソッドのキーワード引数の情報を保持する構造体 struct rb_callinfo_kwarg の参照カウンタの管理が atomic でなく解放したメモリを参照してしまう危険があったのを atomic なカウンタを利用するようにして修正しています。 [ruby-core:125546] [Bug #22075]

[ec114e5701] Matt Valentine-House 2026-05-06 11:40:32 UTC

GC の default 実装で xmalloc()/xfree() で管理している確保したメモリ領域の管理のためにカウンタを増減させていたのを、malloc と free のそれぞれで別のカウンタをインクリメントするだけにして、その差を元に計算するようにしています。これも atgomic 性のための変更みたいです。

[672ef4326c] Matt Valentine-House 2026-05-08 21:39:43 UTC

ec114e5701839ac5bb8a97f901333b865ff96c8a で変更した GC の default 実装での xmalloc()/xfree() の管理のためのカウンタの情報を GC.stat でそれぞれ :total_malloc_bytes/:total_free_bytes という項目で返すようにしています。

[8f7e07bb22] Matt Valentine-House 2026-05-11 14:30:30 UTC

GC の default 実装の GC.stat でその処理自身で T_BIGNUM 型のオブジェクトの生成が発生してしまう可能性があるため影響する可能性のある項目のセットをメモリ使用量の設定後に移動しています。

[cb3b126eee] Matt Valentine-House 2026-05-14 10:12:12 UTC

GC の default 実装での xmalloc()/xfree() のメモリ確保量管理のためのカウンタの atomic 処理まわりの条件コンパイルを整理して、環境によっては不要なロック利用を避けるように最適化しています。

[ed882010cc] Matt Valentine-House 2026-05-14 11:13:11 UTC

GC の default 実装の GC.stat の total_allocated_objects と total_freed_objects の項目のセット前に ractor_cache_flush_count() を呼ぶようにしています。Ractor 毎のオブジェクトキャッシュ関係だっけこれ?

[8b7c4342af] Matt Valentine-House 2026-05-14 22:54:52 UTC

GC の default 実装で前回の GC からの xmalloc()/xfree() でのメモリ確保/解放の差分をとるための snapshot 保存を sweep 完了直後に移動して、free() の数が sweep 中のものを漏らしていた? のを修正しています。

[4c8f07275d] Matt Valentine-House 2026-05-19 10:37:16 UTC

GC の default 実装の atomic なカウンタ操作を rbimpl_atomic_u64_fetch_add_relaxed() を利用するようにリファクタリングしています。

[3002cea4db] Matt Valentine-House 2026-05-20 16:51:19 UTC

case 文の最適化のために内部的に確保する cdhash の T_IMEMO 型オブジェクトで構造体の初期化漏れがあったのを修正しています。

[989cbe8576] BurdetteLamar 2026-05-20 19:18:00 UTC

Pathname#ctime などの rdoc 用コメントの手直し。

[dfef7ecdbd] BurdetteLamar 2026-05-20 20:14:57 UTC

Pathname.directory? の rdoc 用コメントを追加しています。

[63c35b40bc] BurdetteLamar 2026-05-20 20:03:13 UTC

Pathname#descend の rdoc 用コメントを強化しています。

[eeed9ea3c4] Peter Zhu 2026-05-20 00:06:29 UTC

gc/gc.h から rb_gc_update_set_refs() のための関数群を gc.c に移動してインライン展開するリファクタリング。

[633a692aa4] Hiroshi SHIBATA 2026-05-21 00:49:44 UTC

GitHub Actions のリリースパッケージテスト用 workflow の不要になったパッチを当てる処理を削除しています。

[a2cff6ac35] Hiroshi SHIBATA 2026-05-21 01:00:22 UTC

GitHub Actions のリリースパッケージテスト用の workflow の macOS 版で不要になってた HomeBrew のインストール処理を削除しています。

[1d76e0fc18] Hiroshi SHIBATA 2026-05-21 01:11:50 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の引数でエラーを許容する bundled gem の指定を受け付けていたのを削除しています。

[1fa99b488c] Hiroshi SHIBATA 2026-05-21 01:23:25 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で ~/.gnupg/ ディレクトリを削除していたのをやめています。こういう歴史的経緯で必要だった(けど不要になった) workaround がいっぱいあるんですねぇ。

[53c39788d2] Hiroshi SHIBATA 2026-05-21 01:26:00 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で test-bundled-gems のために ruby/setup-ruby で 3.2 の ruby をインストールさせていたのを削除しています。

[2c3c4f20f8] Hiroshi SHIBATA 2026-05-21 01:29:04 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で apt のパッケージをなにやら再インストール? していた workaround ももう不要になってたみたいなので削除しています。

[85e95675d1] Hiroshi SHIBATA 2026-05-21 01:48:03 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で ruby -v でバージョン番号確認するために実行する ruby のパスを指定できるようにしていたのをやめています。

[d9b727c530] Hiroshi SHIBATA 2026-05-21 01:49:24 UTC

85e95675d142f7fa8637484aba59b4e07ad8f2fe の続きで GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で ruby -v を実行してたところで gem -v, bundle -v も実行するようにしています。

[aa04c2c478] Hiroshi SHIBATA 2026-05-21 01:50:42 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で world writable directory による警告抑制のための前処理の step を統合するリファクタリング。

[07b258bd1c] Hiroshi SHIBATA 2026-05-21 01:53:21 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の macOS と Windows 版でも gem -v と bundle -v を実行させるようにしています。

[187a056e78] Hiroshi SHIBATA 2026-05-21 02:14:08 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の失敗時の Slack 通知を整理して workflow 間で共通にしています。

[32aad3f7f3] Hiroshi SHIBATA 2026-05-21 02:27:52 UTC

GitHub Actions のリリースパッケージのテスト用の独自アクションでパッケージを actions/upload-artifact でアップロードするかどうかを制御できる引数を追加しています。

[ee7c8df543] Hiroshi SHIBATA 2026-05-21 03:20:51 UTC

GitHub Actions のリリースパッケージのテスト用 workflow で 187a056e78dcea0dd69645955b0994485e05d0fc で追加した Slack 通知のための notify-release-channel を workflow_dispatch での起動時のみ参照するように制限しています。

[8e9b2b839c] Hiroshi SHIBATA 2026-05-21 03:39:12 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Ubuntu 版で ~/.gnupg/ の削除はまだ必要だったみたいで復活させています。

[6759ef4b66] Hiroshi SHIBATA 2026-05-21 03:40:40 UTC

GitHub Actions のリリースパッケージのテスト用 workflow の Windows 版でも確認のため gem -v と bundle -v を実行させてたのを revert しています。

[43f17f1672] Nobuyoshi Nakada 2026-05-21 03:40:36 UTC

template/configure-ext.mk.tmpl にて --with-ext と --without-ext というオプションの対応を追加して特定の拡張ライブラリをビルド対象から外すなどの指定ができるようにしています。

[5de4b1188f] Nobuyoshi Nakada 2026-05-21 03:40:47 UTC

common.mk で cross-compiling 時に ext/configure-ext.mk の生成時に 43f17f167266ef951fa0c1d77810a655e3eb9a23 で追加した --without-ext オプションを利用して ext/-text-/ の拡張ライブラリのビルドを抑制するようにしています。

[bf920ef6af] Sorah Fukumori 2026-05-21 07:19:38 UTC

non-blocking Fiber の Scheduler のテストで Thread の leak の可能性があったので Thread#join を呼んで終了後にテストメソッドを抜けるように修正しています。 https://github.com/ruby/ruby/pull/17068

[d1391a0003] Sampo Kuokkanen 2026-05-21 08:14:30 UTC

defined? が protected なメソッドの呼び出しの式に対して nil を返すことがあるという不具合を修正しています。発生している現象は Refinements とは関係ないのですが修正箇所をみると Refinements 関連の対応で発生した不具合っぽいですね。 [ruby-core:125553] [Bug #22076]

[81c68150a3] USAMI Kenta 2026-05-21 11:25:48 UTC

拡張ライブラリ strscan の StringScanner#match?, #skip, #scan_full, #scan_byte などの rdoc 用コメントの call-seq の戻り値の記述の間違いを修正しています。 https://github.com/ruby/strscan/pull/207