ruby-trunk-changes 2026-05-27

今日は prism の不具合修正や Ruby::Box 利用時のメソッドキャッシュクリアが不完全だった不具合の修正などがありました。

[e8144a1217] Daichi Kamiyama 2026-05-26 14:14:49 UTC

zjit.rb のコメント内で YJIT と書いてたところを ZJIT に修正。

[986a7ed4fa] Earlopain 2026-05-26 09:54:56 UTC

prism で単項演算子メソッドの -@ として parse すべきところがリテラルの一部になるケースがあった不具合を修正しています。 https://github.com/ruby/prism/issues/4112

[d6fa8e3e0f] Alex Kitchens 2026-05-26 13:41:06 UTC

thread_sync.rb の rdoc 用コメント内のインデント修正。

[01a19896e7] Kevin Newton 2026-05-26 15:31:23 UTC

prism で文字列リテラル内の \n で行番号がずれるのを回避する処理の条件を修正。

[dc0bb7a577] Alan Wu 2026-05-23 20:09:15 UTC

YJIT の Rust 実装から C 関数の rb_reg_new_ary() を使っていたのを Array オブジェクトではなく C の VALUE の配列(バッファ)を受け取る rb_reg_new_from_values() を直接呼ぶようにリファクタリングしています。

[b1bf8f31ca] Alan Wu 2026-05-23 20:11:22 UTC

ZJIT の C binding から不要になっていた rb_reg_new_ary() を削除しています。

[e4cba2df17] Alan Wu 2026-05-23 20:21:31 UTC

re.c の rb_reg_new_ary() という関数は YJIT/ZJIT から呼ぶために定義してたみたいで、 rb_reg_new_from_values() を呼ぶように変更したことで不要になったので関数定義自体を削除しています。

[012b72fdd6] Satoshi Tagomori 2026-05-20 13:22:55 UTC

vm_dump.c の rb_bug() での異常終了時のダンプで C 関数定義のメソッドの frame に box の情報も表示するようにしているようです。

[29a596f87d] Satoshi Tagomori 2026-05-23 14:29:57 UTC

Ruby::Box 利用時にメソッドキャッシュの invalidate で method entry の me->owner のキャッシュからもクリアするようにしています。

[b2715bf268] Satoshi Tagomori 2026-05-26 14:18:15 UTC

29a596f87deb06779bef6549d88e6f7b26974c3d からのさらに続きで Ruby::Box 利用時のメソッドキャッシュの invalidate でメソッド定義されている Box ではない Box から呼ばれている可能性も考慮して? 全 Box 用の rb_classext_t について invalidate_callable_method_entry_in_every_m_table() を呼ぶようにしています。
invalidate_callable_method_entry_in_every_m_table() で GC が走る可能性があったら rb_ary_new() で確保している内部的な Array オブジェクトを klass=0 にして ObjectSpace.each_object から隠すのがより安全ですね。

[ce7f3ed832] alanwu-shopify-inc 2026-05-26 17:56:56 UTC

ZJIT の低レベル中間表現 LIR で C の関数呼び出し時のコード生成でレジスタのマシンスタックへの退避時のレイアウトが x86_64 版と arm64 版で少し異なっていたのを統一するようにしているようです。

[dcfba57257] Takashi Kokubun 2026-05-26 21:50:45 UTC

internal/class.h でコンパイラの警告抑制のために明示的な RBIMPL_ASSUME() の追加をしています。冗長にみえますがコンパイラの不具合で誤った警告が出てるのを回避するためみたいです。

[b237d9f361] Aidan Coyle 2026-05-26 13:09:00 UTC

bundler の bundle gem で作成するプロジェクトのテストや rubocop などの開発用の gem の依存関係のバージョン指定をしないようにしています。

[b766d174b1] Max Bernstein 2026-05-22 04:21:59 UTC

ZJIT の低レベル中間表現 LIR の不要になった命令の定義を削除しています。

[8b33519a5f] Max Bernstein 2026-05-22 04:44:19 UTC

ZJIT の Rust 実装の関数切り出しのリファクタリング?

[b070c494ac] Jacob 2026-05-27 04:06:29 UTC

ZJIT のメソッド名を意味のある名前に改名するリファクタリング。 https://github.com/ruby/ruby/pull/17122

[eb70a0d0c4] "dependabot[bot]" 2026-05-27 04:25:49 UTC

GitHub Actions の workflows で利用しているアクションのバージョンを更新するリファクタリング。

[261eea422a] Sampo Kuokkanen 2026-05-27 04:00:24 UTC

Hash#each_value のテストで意図したチェックになっていなかった不具合を修正しています。