ruby-trunk-changes 2023-06-19

今日は主に拡張ライブラリ openssl の不具合修正や機能追加などがありました。

[0a84bd6b0b] Jun Aruga 2023-05-30 22:10:41 UTC

拡張ライブラリ openssl の extconf.rb で環境変数 RUBY_OPENSSL_EXTCFLAGS および RUBY_OPENSSL_EXTLDFLAGS から CFLAGS や LDFLAGS にセットしたいオプションを指定できるようにしています。

[1965c09ee5] Jean Boussier 2023-03-13 08:51:53 UTC

拡張ライブラリ openssl で定義している T_TYPEDDATA 型クラスの struct RBasic::flags に全般的に RUBY_TYPED_WB_PROTECTED を追加して RGenGC の WB-protected にするようにしています。

[2a4834057b] Jun Aruga 2023-04-12 15:15:21 UTC

拡張ライブラリ openssl を FIPS モードでビルドした時に OpenSSL 側の不具合で OpenSSL::PKey.read が失敗することがある不具合の対策をしているそうです。

[920bc71284] Jun Aruga 2023-04-13 15:28:27 UTC

拡張ライブラリ openssl のテストでは OpenSSL.fips_mode = false をセットして FIPS モードを無効化してテストするようにしていたのを消しています。

[366d8005b1] Jun Aruga 2023-04-17 17:05:48 UTC

920bc71284f417f9044b0dc1822b1d29a8fc61e5 に対応して拡張ライブラリ openssl のテストで FIPS モードで失敗するようになったものを一時的に(?) skip するようにしています。

[1d0a087d45] Kazuki Yamaguchi 2023-06-01 16:51:03 UTC

0a84bd6b0b5f947b4727b022c5768222b3e6d7d9 で拡張ライブラリ openssl の extconf.rb に追加した環境変数からのコンパイラオプションの取得処理を have_func などのサードパーティライブラリのチェックの後に行なうように移動しています。have_func などのメソッド内でも試しにコンパイルするのでその時にオプションが追加されないようにするため?

[bc0539a9b7] Theo Buehler 2023-04-11 17:43:49 UTC

拡張ライブラリ openssl の OpenSSL::BN#mod_sqrt のテストの修正。戻り値に複数の候補がある結果のうち LibreSSL の 3.8 以降で異なる結果が返ってきてエラーになることがあったみたいです。

[397ebbc62d] Kazuki Yamaguchi 2023-06-06 18:44:07 UTC

拡張ライブラリ openssl の gemspec ファイルで required_ruby_version を 2.7 以降に引き上げています。また古い C の規格のために用意していた可変長引数のための代替実装の分岐を削除しています。

[af66b9b720] Kazuki Yamaguchi 2023-06-06 18:46:43 UTC

拡張ライブラリ openssl の ext/openssl/ossl_pkey.c で定義している struct pkey_blocking_generate_arg という構造体のビットフィールドのメンバーの型に明示的に unsigned をつけています。コンパイル時の警告の抑制のためみたいです。

[10e4a9a5c2] Nobuyoshi Nakada 2023-06-16 14:55:47 UTC

rubygems のテストで assert_match で正規表現でメッセージをチェックしているところのエスケープの追加や正規表現を利用する必要のないところは assert_include で部分文字列チェックをするようにするリファクタリング

[e7440dcaea] Nobuyoshi Nakada 2023-06-16 14:58:19 UTC

rubygems のテストで一時ディレクトリのパスに "+" という文字が含まれているとうまく動かないものがあったみたいで skip するようにしています。

[e9f62fa5a7] qwyng 2023-06-02 12:12:21 UTC

拡張ライブラリ openssl に OpenSSL::Provider というクラスを追加しています。これはなんだろう。 OpenSSL::Provider.load というクラスメソッドで文字列による指定で OpenSSL::Provider のインスタンスを返すもので、OSSL_PROVIDER_load() という関数の wrapper となっています。検索してみると "default" とか "legacy" とかの名前を指定して呼ぶみたいで、FIPS のように OpenSSL の動作モードの指定とかをする機能なのかな?

[2a80bac9f0] Nobuyoshi Nakada 2023-06-19 09:28:10 UTC

template/configure-ext.mk.tmpl というファイルで拡張ライブラリの並列ビルド対応のための Makefile の設定を作ってるところで --jobserver-auth オプションを子 make に渡さないように除外する処理を追加しています。

[b8cd79c82f] tomoya ishida 2023-06-19 10:38:20 UTC

irbIRB::RubyLex に拡張ライブラリ ripper を使って ruby スクリプトを解析すると失なわれるトークンというのがあるらしくてその部分を切り出して Ripper::Lexer::Elem にして補う処理を追加しています。なにか特定のトークンをみつけるというより ripper で処理した結果のトークンのソースコード上の位置情報を元に抜けてる範囲を切り出して on_ignored_by_ripper という種類にして詰めておくという感じのことをしています。