今日は主に拡張ライブラリ openssl に HPKE 方式のサポートする API を追加する新規追加や require/load でのファイルパス操作の最適化などがありました。
[34d51d56e2] Jean Boussier 2026-06-20 13:23:57 UTC
拡張ライブラリ json の JSON.parse の不正なキーワード引数のチェックで例外を発生させる時のフォーマット文字列への埋め込みで %s で埋め込むため RSTRING_PTR() でバッファを取り出していたのを PRIsVALUE で VALUE 値をそのまま埋め込むことで RB_GC_GUARD() での最適化からの保護をなくしています。
[a2b9d6ff3b] Nobuyoshi Nakada 2026-06-21 02:53:56 UTC
拡張ライブラリ openssl の各種 OpenSSL::PKey のクラスの initialize_copy の実装で OpenSSL3 からは const になっている? 型にあわせて const をつけるため OSSL_3_const 修飾子をつけるようにしています。
[d57e5f41a1] Jean Boussier 2026-06-21 08:19:20 UTC
拡張ライブラリ json の大域脱出のために rb_throw_obj() と rb_catch_obj() を使うのが TruffleRuby で使えなかったことで例外を利用する fallback 実装していたのを TruffleRuby 側の修正で rb_throw_obj() を使えるようになったので TruffleRuby の時にバージョンでチェックして不具合のあるバージョンでのみ例外を利用するようにしています。 https://github.com/ruby/json/pull/1031
[6411a49121] Jean Boussier 2026-06-20 13:16:08 UTC
require で読み込むファイルパスを構築する時に rb_file_expand_path_internalI() を呼び出していましたが、この関数は相対パスの解決なども含んでいますがこの時には $LOAD_PATH に既に展開済みのパスが格納されていて、feature にも ".." などの相対パスの要素が含まれていなければこの関数の重い処理は不要なので、条件をチェックして fastpath を実装する最適化です。
[10676931e4] Jean Boussier 2026-06-20 15:42:33 UTC
file.c の rb_find_file_ext() と rb_find_file() から共通する処理を expand_feature() という関数に切り出して共有するリファクタリング。
[1d493d9054] Earlopain 2026-06-13 11:35:30 UTC
GC::Profiler クラスの rdoc 用コメントを gc.c から gc/default/default.c に移動していますまた .document に gc/default を追記して gc/default/ 配下のソースコードもドキュメント化の対象にしています。
[be5877d153] Ryo Kajiwara 2026-06-21 10:58:47 UTC
拡張ライブラリ openssl に HPKE (Hybrid Public Key Encryption) という方式を実装した OpenSSL::HPKE::Suite クラスなどの新規クラス/モジュールを追加しています。 NEWS に追記するに相応しい新機能っぽいですね。
[fe7f1fd722] Benoit Daloze 2026-06-21 11:24:51 UTC
d57e5f41a1115de0d792c98c9b7a98b6d0331295 で拡張ライブラリ json の大域脱出に rb_throw_obj() を使うかどうかで TruffleRuby のバージョンの確認に RUBY_VERSION を参照していたのを RUBY_ENGINE_VERSION でチェックするように修正しています。
[20e8c63fad] Kazuki Yamaguchi 2026-06-21 12:05:00 UTC
be5877d1539e2802743904662f532b2b8237ce1e で拡張ライブラリ openssl に OpenSSL::HPKE を追加した時にヘッダファイルやソースファイルが追加されているので ext/openssl/depend を再生成しています。