ruby-trunk-changes 2026-05-12

今日は主に拡張ライブラリ json の不具合修正や END ブロックの parse.y での不正な文法チェックの強化などがありました。

[da9e38460a] Takashi Kokubun 2026-05-11 21:20:56 UTC

ruby のリリースに使う GitHub Actions の手動で起動する workflow のバージョン番号を指定するパラメーターのデフォルト値を 4.0.0 に更新しています。

[24a1b097ce] Peter Zhu 2026-05-09 19:56:17 UTC

rb_classext_t 構造体を Ruby::Box ごとに管理するための st_table のキーにそのクラスの object_id を使っていましたが、GC の mmtk 実装でこのテーブルを lookup するために object_id を得るために rb_execution_context_t の参照を得るのに問題があったとのことでクラスの参照である VALUE の値そのものを key として使うように変更しています。key も value もどっちも同じクラスオブジェクトの参照なので Set のように使っています。クラスは GC.compact で移動しないよう pin されているオブジェクトなので VALUE を直接 key に使うことができるとのこと。なるほど。

[fb36961773] Jean Boussier 2026-05-12 06:19:06 UTC

拡張ライブラリ json の parser の内部的オブジェクトで RGenGC の Write Barrier 漏れがあったので修正しています。

[95c041bd3b] Jean Boussier 2026-05-12 06:49:34 UTC

拡張ライブラリ json で JSON.generate に indent キーワード引数でインデントを指定してネストした構造を表示するようにして、さらに depth キーワード引数にとても大きな数を指定した時に事前に用意するバッファサイズが size_t の範囲を越えてしまいオーバーフローする可能性があったので、チェックして ArgumentError 例外を発生させるようにしています。

[803b3169e0] Nobuyoshi Nakada 2025-11-14 07:21:00 UTC

parse.y でメソッド内に END ブロックが書かれている時の警告メッセージを出力するタイミングを予約語 END を読んだ瞬間に移動しています。テストの変更をみる感じだと警告の出力元のファイル位置がブロックの末尾になってたのを END 自体の位置にするためですかね?

[2f9432d211] Nobuyoshi Nakada 2025-11-14 08:38:59 UTC

parse.y で END のブロック内の break や next, redo が許容されていたのを SyntaxError を発生させるようにしています。 https://github.com/ruby/ruby/pull/15185 [ruby-core:117434] [Bug #20409]