ruby-trunk-changes 2026-01-27

今日は GC の sweep 処理に fastpath を実装する最適化などがありました。

[2947aa41d4] Kevin Newton 2026-01-26 14:08:27 UTC

標準添付ライブラリ prism の Prism::LexCompat の中間オブジェクト生成を抑制する最適化。

[5add7c3ea9] Chris Hasiński 2026-01-26 15:17:35 UTC

M:N Threads 利用時の Kernel#sleep がまれに sleep せずにかえってきてしまう不具合を修正しています。ごく短い interval を指定した時に発生する問題みたいなのであまりひっかかることはなさそうですけど。 https://github.com/ruby/ruby/pull/15868 [ruby-core:124518] [Bug #21836]

[c21f3490d1] Matt Valentine-House 2026-01-14 21:51:49 UTC

GC の sweep 処理時にオブジェクトが外部ヒープを使っているかどうか、finalizer や id2ref の管理や Object Shapes などの追加でリソースを解放する処理が必要ないかをチェックして、不要な時に解放処理に fastpath を実装する最適化を行なっています。判定自体に時間かかりそうだけどマイクロベンチマークでけっこう効果があるみたいですね。 https://github.com/ruby/ruby/pull/15885 [ruby-core:124599] [Feature #21846]

[211714f1bf] Matt Valentine-House 2026-01-20 18:49:03 UTC

GC の default 実装で struct RBasic::flags のビットフラグチェックに RUBY_FL_USERPRIV0 という汎用的な定数を使っていたのを意味に合わせて RUBY_TYPED_FL_IS_TYPED_DATA マクロを使うようにリファクタリングしています。

[efde37b712] Matt Valentine-House 2026-01-22 22:28:24 UTC

c21f3490d1f28b43564639ae8563bc2e02e828a4 で追加した GC の sweep 処理の fastpath 実装を GC の default 実装から本体の gc.c のほうに移動しています。

[8e73aa7ffe] Matt Valentine-House 2026-01-23 16:11:17 UTC

GC の default 実装で efde37b7122b23775b906ad90cf4e88e05b756a8 の sweep の fastpath 移動により gc_sweep_fast_path_p() 関数を定義する必要がなくなったので削除しています。

[7444f415db] Matt Valentine-House 2026-01-23 16:45:57 UTC

gc.c の rb_gc_obj_free_on_sweep_p() という関数名を rb_gc_obj_needs_cleanup_p() に改名しています。

[d15117e293] Matt Valentine-House 2026-01-26 10:48:48 UTC

GC の sweep 処理で fastpath を使えるかどうかの判定で T_BIGNUM の時に不要な Object Shapes の判定を削っています。

[3c634893e2] Matt Valentine-House 2026-01-26 12:46:00 UTC

GC の sweep 処理で fastpath を使えるかどうかの判定で T_DATA 型の時の dfree 関数ポインタの判定を修正しています。

[994257ab06] Luke Gruber 2026-01-26 19:34:37 UTC

Mutex を繰り返しロック取得する Thread がいた時に同じ Thread が動き続けて他の Thread に処理が回ってこなくなる可能性があった不具合を修正しています。構造体 rb_mutex_t に saved_running_time_us と wait_waking というメンバーを追加して、すぐに Mutex を取りなおした Thread の実行時間がリセットされてずっと割り当て対象になり続けるのを防いでいるようです https://github.com/ruby/ruby/pull/15877 [ruby-core:124563] [Bug #21840]

[ed0a5c6f0f] BurdetteLamar 2026-01-25 23:40:57 UTC

Complex クラスの rdoc 用コメントのリンク修正。

[21f8472e77] BurdetteLamar 2026-01-25 23:19:16 UTC

Array クラスの rdoc 用コメントのリンク修正。

[b7102933ee] BurdetteLamar 2026-01-25 17:18:51 UTC

Module.nesting の rdoc 用コメントのサンプルをすこし拡張しています。

[6b0dda496e] Max Bernstein 2026-01-26 22:11:06 UTC

ZJIT の中間表現 HIR で変数の定義の漏れがないかのチェックを行うバリデーションを追加しています。 https://github.com/ruby/ruby/pull/15973

[491e38902c] Peter Zhu 2026-01-26 22:10:35 UTC

あちこちの rdoc 用コメントのリンクを一括で修正しています。

[969fd30cb1] Peter Zhu 2026-01-27 02:00:32 UTC

標準添付ライブラリ net/http の rdoc 用コメントのリンク切れを修正しています。

[09872ea950] Michael Yang 2025-12-20 11:11:07 UTC

標準添付ライブラリ resolv の rdoc 用コメントの Resolv::DNS#getresource の rdocl 用コメント(?)の定数リストの漏れを修正しています。

[c55d214ed3] Michael Yang 2025-12-20 11:23:56 UTC

標準添付ライブラリ resolv の Resolv::DNS#getresources のテストを追加しています。

[ade85c45da] Michael Yang 2026-01-16 09:10:16 UTC

c55d214ed383b6583ee68cffee69a63a2c92fe32 の標準添付ライブラリ resolv の Resolv::DNS#getresource のテスト追加を revert しています。