ruby-trunk-changes 2021-10-16

今日は標準添付ライブラリ rdoc の機能追加や拡張ライブラリ openssl の変更とバージョン更新などがありました。

[9225f3c1c6] Mike Dalessio 2021-10-11 20:46:27 UTC

標準添付ライブラリ rdoc のテストに C ソースコードのメソッド定義のコメントの解釈についてのテストを追加しています。

[d4894e81c0] Mike Dalessio 2021-10-11 20:47:36 UTC

標準添付ライブラリ rdoc の C ソースコードのパーサーの共通処理をメソッドに切り出すリファクタリング

[fbd0516afc] Mike Dalessio 2021-10-11 21:01:52 UTC

標準添付ライブラリ rdoc の d4894e81c0a2acb826686f178e4b1b1ed88adefa で切り出したメソッドで抽出したドキュメント用コメントのマークアップ方式をグローバルなオプションに従って設定するように変更しています。

[c322069a67] git 2021-10-15 16:39:22 UTC

version.h の日付更新

[7aec65add4] Mike Dalessio 2021-10-11 17:44:37 UTC

標準添付ライブラリ rdoc の C のコメントに :category: というタグをつけることでセクションのタイトルを指定できるようにしています。

[4c42540da2] Mike Dalessio 2021-10-11 14:47:12 UTC

標準添付ライブラリ rdoc でメソッド名にマッチさせる正規表現を "==" にもマッチできるように修正しています。

[2043c2e7e4] Burdette Lamar 2021-10-15 16:57:49 UTC

Float#% と Integer#% の rdoc 用コメントにサンプルを追加しています。 https://github.com/ruby/ruby/pull/4964

[37ea909f42] Burdette Lamar 2021-10-15 17:51:37 UTC

Integer#divmod, Float#divmod, Numeric#divmod の rdoc 用コメントを追加/手直ししています。 https://github.com/ruby/ruby/pull/4973

[2a5c3a4d0f] Jeremy Evans 2021-10-15 20:54:03 UTC

Symbol クラスの rdoc 用コメントに Module#constants や Module#instance_methods などのメソッドが名前を返す時は Symbol で返すことや Symbol が識別子を返すために設計されたということを追記しています。 [ruby-core:84794] [Feature #14347]

[5d975684da] Burdette Lamar 2021-10-15 21:20:52 UTC

Integer#remainder と Numeric#remainder の rdoc 用コメントの手直し。 https://github.com/ruby/ruby/pull/4975

[4ffc3fb019] Mike Dalessio 2021-09-20 14:09:14 UTC

標準添付ライブラリ rdoc の RDoc::AnyMethod#deduplicate_call_seq というメソッドでドキュメント用コメントの call-seq で別名での呼び出しがみつからなかった時に空文字列でなく nil を返すようにしています。

[49217086ad] Kazuki Yamaguchi 2021-03-18 09:40:58 UTC

拡張ライブラリ openssl の不要になってた private メソッドを削除しています。

[6105ef7629] Kazuki Yamaguchi 2021-03-18 11:04:59 UTC

拡張ライブラリ openssl に SSL_CTX_set0_tmp_dh_pkey() または SSL_CTX_set_tmp_dh() の wrapper である OpenSSL::SSL::SSLContext#tmp_dh= メソッドを追加しています。

[ed7ea35d74] Nobuyoshi Nakada 2019-12-20 03:19:45 UTC

拡張ライブラリ openssl のテスト test/openssl/test_config.rb のメッセージなどの typo を修正しています。 [ruby-core:96342] [Bug #16437]

[5828807626] Kazuki Yamaguchi 2021-08-30 07:09:04 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket#syswrite で引数に渡された文字列を一度 rb_str_new_frozen() で fstring にしてから利用するようにしています。書き込み途中で Thread 切り替えが起きてバッファが変更されないようにするためみたいです。

[daeb914a52] Kazuki Yamaguchi 2021-08-30 09:55:10 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket#sysread で IO と同様に読み込み用のバッファの文字列オブジェクトに対する rb_str_locktmp() および rb_str_unlocktmp() を呼んで読み込みのためのブロック中に変更されないようにしています。

[6dcc74155f] David Carlier 2021-09-04 15:03:49 UTC

拡張ライブラリ openssl の ossl_tsfac_time_cb() という関数の宣言を LibreSSL でビルドする時のために引数の型を変更するようにしています。

[f88401f38e] Nobuhiro IMAI 2020-09-28 15:05:36 UTC

拡張ライブラリ openssl() で TS_REQ や TS_RESP、TS_TST_INFO という構造体を wrap するオブジェクトで構造体のメモリ確保に失敗した時に DATA_PTR() を NULL にクリアしておいて不正なアクセスがおこらないように修正しています。

[c6c2190c4c] Kazuki Yamaguchi 2021-10-12 09:19:55 UTC

拡張ライブラリ openssl の OpenSSL::Digest のクラス定義時に rb_require() で digest ライブラリをロードしてたのを rb_funcall() で require メソッドを起動する方法で読み込むように変更しています。digest も default gem になっているので rubygems が再定義した require を使わないといけないのでこうする必要があるみたいです。なるほどー。

[ca28545b51] Kazuki Yamaguchi 2021-10-14 06:50:02 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext や OpenSSL::SSL::SSLSocket のオブジェクトの mark 関数を追加して SSL_get_ex_data() や SSL_CTX_get_ex_data() で取得したオブジェクトの mark をするようにしています。これは GC で解放される恐れはないんだけど、GC.compact の移動を禁止するために pin するために明示的に呼ぶ必要があったとのことです。なるほどー。こういうの他にもありそうだな……。

[f6612203fa] Kazuki Yamaguchi 2021-10-14 06:52:39 UTC

ca28545b517057613f57e4814622e553d6fae442 と同様に拡張ライブラリ openssl の OpenSSL::X509::Store のオブジェクトの mark 関数も追加しています。これも GC.compact での移動を防ぐためだと思われます。

[c1147f7f71] Kazuki Yamaguchi 2021-10-14 06:53:00 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext からコールバック関数に渡すオブジェクトを直接引数で渡していたのをインスタンス変数にセットしたものを関数内で取得しなおすようにしています。コメントによると参照時までに GC.compact で移動する可能性を考慮してインスタンス変数から取得しなおすことで不正な参照になるのを防いでいるそうです。

[e36906f9ab] Kazuki Yamaguchi 2021-09-28 08:49:04 UTC

拡張ライブラリ openssl のテストで LibreSSL とリンクしている場合に OpenSSL::SSL::SSLSocket#finish_message のテストで TLS 1.2 を利用するようにしています。 LibreSSL では不具合があるためみたいです。

[75e72baba1] Kazuki Yamaguchi 2021-10-16 07:56:40 UTC

拡張ライブラリ openssl の ext/openssl/History.md というファイルに 2.1.3 の変更履歴を追記しています。

[cea3c55d58] Kazuki Yamaguchi 2021-10-16 07:59:59 UTC

拡張ライブラリ openssl のバージョンを 2.2.1 に更新して ext/openssl/History.md にも追記しています。

[4991dabdd0] Kazuki Yamaguchi 2021-10-16 09:47:11 UTC

拡張ライブラリ openssl のバージョンを 3.0.0.pre に更新しています。

[cc8ff8b50d] Kazuki Yamaguchi 2021-10-13 05:24:53 UTC

拡張ライブラリ openssl の 2.5 以前の ruby をサポートするためのコードを削除しています。また ext/openssl/depend の依存関係を再生成しています。