ruby-trunk-changes 2026-05-30

今日は拡張ライブラリ openssl の ASN1 のネストレベル上限の設定などがありました。

[7a07a54298] Nobuyoshi Nakada 2026-05-29 14:34:40 UTC

RUBY_ABI_VERSION マクロを 2 → 3 に更新しています。 T_DATA 型オブジェクトのメモリレイアウト変更で一度上げてましたが、struct RData の廃止と rbimpl_rtypeddata_p() の削除でさらに上げるみたいです。

[9239d3dd99] Takashi Kokubun 2026-05-29 16:27:28 UTC

ZJIT で control frame を軽量化した JITFrame を利用しておいて side-exit 発生時に C 実装に戻る前に正式な control frame に書き戻す処理を vm.c で rb_zjit_materialize_frames() の呼び出しで行なっていた実装を ZJIT の Rust 実装で rb_zjit_materialize_frames() を呼び出してから exit_trampoline() にジャンプする trampoline 実装を追加してこれで書き戻すように変更しています。 https://github.com/ruby/ruby/pull/17132

[92c31fe1cb] Max Bernstein 2026-05-29 16:56:31 UTC

ZJIT で T_DATA 型オブジェクトの対応処理が残っていたところがあったので削除するリファクタリング。 https://github.com/ruby/ruby/pull/17140

[de5545202d] Takashi Kokubun 2026-05-29 17:16:02 UTC

ZJIT で JIT コンパイルしたコードへの引数をレジスタで足りない時にスタックも利用していたのをエラーにするようにしています。そもそもそのような条件ではコンパイルされないはず? ということでしょうか。 https://github.com/ruby/ruby/pull/17138

[d901035136] John Hawthorn 2026-05-29 17:18:53 UTC

locale encoding を得る rb_locale_encindex() という関数で enc_table を操作する時に RUBY_ATOMIC_LOAD()/RUBY_ATOMIC_SET() を利用して atomic に操作されるようにしています。おそらく複数 Ractor 対応かと思われます。

[63d9f090b5] Aaron Patterson 2026-05-29 22:09:34 UTC

Object Shapes の shape_id_t 型のビットレイアウトに shape_id_layout という 2 bit の情報を埋め込んで、ここをみればインスタンス変数のロードのためにどの操作をすればいいかわかるようにして高速化しようとしています。ただしこのコミットはすぐ次のコミットで revert されています。 https://github.com/ruby/ruby/pull/17139

[ddb5055d96] Aaron Patterson 2026-05-29 23:41:31 UTC

ということで直前の shape_id_t のビットレイアウトについての変更 63d9f090b5d9461cf0b9446e0039d9c56156b826 は revert されています。

[6fa38d3625] Jun Aruga 2026-05-21 14:56:46 UTC

拡張ライブラリ openssl のテストの FIPS モード対応をしています。

[0765e35cba] Kazuki Yamaguchi 2026-04-13 10:16:59 UTC

拡張ライブラリ openssl の OpenSSL::ASN1.decode で構造のネストレベルの上限を設けて再帰が深くなって SystemStackError を起こすのを抑制しています。