ruby-trunk-changes 2026-06-06

今日は主に ZJIT の不具合修正や拡張ライブラリ json の最適化などがありました。

[2a5394cee7] Nobuyoshi Nakada 2021-07-11 06:19:30 UTC

拡張ライブラリ socket の Socket::AncillaryData#inspect メソッドで FreeBSD 環境での出力を強化しているそうです。なんだろこのクラス。

[24ce2563d7] Scott Myron 2026-06-05 14:04:22 UTC

拡張ライブラリ json の enum 型 json_frame_phase の定数の順番を変更して json_frame_type の類似の定数と値を揃えるように値の指定も追加しています。

[dba570e575] Jean Boussier 2026-06-05 16:23:15 UTC

拡張ライブラリ json の parser でキーワードを読んでバッファを消費(カーソルを進める)処理を json_match_keyword() という関数に切り出すリファクタリング。

[a2433947b7] Kevin Menard 2026-06-05 16:39:52 UTC

ZJIT の中間表現 HIR の LoadField 命令の最適化時の型推論の不具合で異常終了する恐れがあった不具合を修正しています。

[dd9213c41d] John Hawthorn 2026-06-04 00:39:07 UTC

拡張ライブラリ objspace の ObjectSpace.trace_object_allocations などのメソッドでオブジェクトの確保をトレースする時に GC の解放処理にも TracePoint でフックを登録して内部的オブジェクト参照を解放していたのが trace を終了した後に解放される場合フックが呼ばれずリークする可能性があったので weak ref 用の関数を使って st_table_t から弱参照としてオブジェクトを保持するように修正しています。

[cdc31cfc42] Jean Boussier 2026-06-05 16:57:19 UTC

拡張ライブラリ json の json_parse_any() という関数で switch 文の各 case で json_push_value() と json_value_completed() を呼んでいたのを switch 文の後でまとめて呼ぶようにリファクタリングしています。

[e90a7ce80f] Aaron Patterson 2026-06-05 19:37:12 UTC

ZJIT で super の呼び出しにより引数の数が 6を越える C 関数を呼ぼうとすると異常終了する可能性があった不具合を修正しています。そのようなケースでは side-exit するようにしているようです。 https://github.com/ruby/ruby/pull/17186

[0d632bd429] Jacob 2026-06-05 19:39:09 UTC

ZJIT の中間表現 GuardType で side-exit 時に再 JIT コンパイルできるようにサポートを追加しています。 https://github.com/ruby/ruby/pull/17133

[08efe07a7b] Benoit Daloze 2026-06-05 21:13:47 UTC

拡張ライブラリ json の json_match_keyword() という関数の宣言に ALWAYS_INLINE() マクロを利用して inline されるようにしています。

[954f4dc4c8] Satoshi Tagomori 2026-06-06 04:38:45 UTC

b2715bf268583ee476000db66797aa0858980b12 で Ruby::Box 用の rb_classext_t のリストに対して invalidate_callable_method_entry_in_every_m_table() を呼ぶ処理を追加した際に中間オブジェクトの配列を rb_ary_new() で作成していたのを rb_ary_hidden_new() を使って ObjectSpace.each_object で検出されないようにしています。

[61e15ee5f5] Jean Boussier 2026-06-06 06:52:23 UTC

拡張ライブラリ json の parser で while ループで大きな switch 文で分岐する実装を goto で関数内をジャンプして回るというヤバい実装に書き換えています。可読性という意味だとよくない気がしますがパフォーマンスのためなんでしょうねぇ。

[7cce6d23c4] Jean Boussier 2026-06-06 08:45:11 UTC

拡張ライブラリ json の JSON_Parser_rvalue_stack_type という変数の初期化子に RGenGC 用の WriteBarrier unprotected である旨コメントを追加しています。

[e98f95b4fd] thekuwayama 2026-06-06 10:09:12 UTC

M:N Threads の実装で CPU 数を推定? する変数 default_max_cpu を 8 固定にしていたのを sysconf(2) で CPU 数を取得するようにしています。 https://github.com/ruby/ruby/pull/17100

[5f1288759f] Benoit Daloze 2026-06-06 10:53:15 UTC

spec/mspec に upstream から最新版をマージしています。

[937a1d9a6f] Benoit Daloze 2026-06-06 10:53:17 UTC

spec/ruby に upstream から最新版をマージしています。

[b08d3f8f11] Nobuyoshi Nakada 2026-06-06 08:57:15 UTC

string.c で共通の処理を str_to_cstr() という関数に切り出すリファクタリング。

[2d9827db8b] Nobuyoshi Nakada 2026-06-06 09:00:42 UTC

string.c でローカル変数の const 修飾子を追加。