ruby-trunk-changes 2021-03-16

今日は主に標準添付ライブラリ rdoc と拡張ライブラリ openssl の更新がありました。

[18a3bf5a0e] Nobuyoshi Nakada 2021-03-15 11:05:03 UTC

82b6f89283042b670975f3f7986432647101984e の File.dirname の省略可能引数追加について NEWS に追記しています。 [ruby-core:74448] [Feature #12194]

[b346935cbc] aycabta 2021-03-13 03:14:18 UTC

tool/sync_default_gems.rb の rdoc の同期処理時に自動生成されるソースコードの元の .ry ファイルをコピーしないようにしています。

[ff5ff75cdb] git 2021-03-15 16:15:31 UTC

version.h の日付更新

[31b19ba84e] Kazuhiro NISHIYAMA 2021-03-16 05:07:27 UTC

18a3bf5a0e6fd9de8dd1347fb70575147a513c7e の続きで NEWS のチケットが参照になるように footnote を追加しています。

[05898c5b90] Pankaj Doharey 2021-01-08 16:59:12 UTC

lib/rdoc/generator/template/darkfish/css/rdoc.css の nav タグのスタイルの修正。

[3651f678a7] Nobuyoshi Nakada 2021-01-25 15:31:00 UTC

標準添付ライブラリ rdoc で GitHub Flavored Markdownテーブル記法をサポートするようにしているようです。

[10b082064e] Nobuyoshi Nakada 2021-01-25 16:21:13 UTC

10b082064e6ab0943cce4ef43e567d8044c7096d の続きで標準添付ライブラリ rdoc の css ファイルでテーブルタグのスタイルを追加しています。

[de8e6218a3] Nobuyoshi Nakada 2021-02-22 12:34:11 UTC

3651f678a719ae3a35825bcb4e0dabbc7c60d8df の再修正(?)で Markdown の記法でコードブロックの前に空行が必須になっているのを修正しているみたいです。

[971a0cd246] aycabta 2021-03-07 01:13:14 UTC

標準添付ライブラリ rdoc で .rdoc_options ファイルによってオプションを上書きした時の挙動の修正。

[61a29a41e1] aycabta 2021-03-07 21:14:03 UTC

標準添付ライブラリ rdoc で .rdoc_options ファイルが空ファイルの場合を許容するように修正しています。

[ff9a008871] aycabta 2021-03-12 10:30:48 UTC

lib/rdoc/markdown.rb の未使用変数の警告対処らしいのですが、それにしては差分が大きいな。

[fad3412d47] Nobuyoshi Nakada 2021-03-15 23:16:19 UTC

標準添付ライブラリ rdoc で自動生成されるコード? の余分な空白を除去するための対応?

[4d8bce227c] Spencer McIntyre 2020-03-30 18:42:53 UTC

拡張ライブラリ openssl の OpenSSL::Cipher#cmm_data_len= メソッドを追加して AES の CCM モードでのデータサイズの指定ができるようにしています。

[67f5847c61] Kazuki Yamaguchi 2020-02-19 04:44:31 UTC

拡張ライブラリ openssl の OpenSSL::Config#value と OpenSSL::Config#section は長らく deprecated になっていたので削除しています。また OpenSSL::Config#add_value と OpenSSL::Config#[]= も対応する OpenSSL の実装が 1.1.0 で消えているため削除しています。

[ffc01afc47] Kazuki Yamaguchi 2020-02-19 05:05:41 UTC

拡張ライブラリ openssl の OpenSSL::Config.parse_config のテストを追加しています。

[0c66784602] Kazuki Yamaguchi 2020-04-22 12:46:39 UTC

拡張ライブラリ OpenSSL::Config.parse のテストで結果の配列の順序が不定なのに順序に依存してたのを sort してからチェックするように修正しています。

[7c13d2b3cc] Kazuki Yamaguchi 2020-02-21 19:58:08 UTC

拡張ライブラリ openssl の環境変数を得る? OpenSSL::Config.get_value のテストが LibreSSL では動かないらしいので実行除外するようにしています。

[22aeb6373e] Kazuki Yamaguchi 2020-02-19 05:06:09 UTC

拡張ライブラリ openssl の OpenSSL::Config の実装を ext/openssl/lib/openssl/config.rb で独自にしていたのを削除して C の拡張ライブラリで実装しなおしています。

[10289e9f22] Kazuki Yamaguchi 2020-02-19 05:11:54 UTC

拡張ライブラリ openssl の DupConfigPtr() という関数は冗長なので削除してかわりに GetConfig() の static を外しています。

[27859c09a6] Kazuki Yamaguchi 2017-03-16 07:06:53 UTC

拡張ライブラリ openssl の OpenSSL::PKey まわりの初期化 pkey_new0() の実装のリファクタリング

[c157f6e787] Kazuki Yamaguchi 2017-03-16 07:09:35 UTC

同じく拡張ライブラリ openssl の OpenSSL::PKey の各種鍵の生成時の実装をリファクタリングして潜在的メモリリークを解消しています。

[efad0166c6] Kazuki Yamaguchi 2017-03-18 08:26:33 UTC

拡張ライブラリ openssl の OpenSSL::PKey.read の実装 ossl_pkey_new_from_data() で OpenSSL の PEM_read_bio_Parameters() という関数も試すようにしています。

[10d360847b] Kazuki Yamaguchi 2017-03-21 18:51:24 UTC

拡張ライブラリ openssl の rdoc 用コメントや sample/ で OpenSSL::PKey::RSA.new を使ってるところをかわりにタイプを自動判定する OpenSSL::PKey.read を利用するように変更しています。

[707e3d49cb] Kazuki Yamaguchi 2017-06-13 14:39:41 UTC

拡張ライブラリ openssl の OpenSSL::PKey のエンコード文字列からの読み込み処理まわりのリファクタリング

[1f44640677] Kazuki Yamaguchi 2017-06-13 15:25:43 UTC

拡張ライブラリ openssl の OpenSSL::PKey#to_pem や #to_der のための実装の共有化するようにするリファクタリング

[498c8e8f17] Kazuki Yamaguchi 2017-03-21 09:23:53 UTC

拡張ライブラリ openssl の OpneSSL::PKey のオブジェクトから構造体を取り出す GetPrivPKeyPtr() で秘密鍵かどうかの判定に rb_funcallv() いよるメソッド呼び出しを使ってたのを先に OSSL_PKEY_IS_PRIVATE() マクロでチェックするようにし、さらに呼べれば private? メソッドの呼び出しも行なうようにしています。private? メソッドがない場合は private だとみなしています。これでいいのかな。

[d60ab95398] Kazuki Yamaguchi 2020-05-13 07:37:16 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket.open のテストで Errno::EACCES 例外も無視するようにしています。 MinGW で発生することがあった模様。

[1e3590fe22] Kazuki Yamaguchi 2017-03-20 14:18:26 UTC

拡張ライブラリ openssl に OpenSSL::PKey.generate_parameters と OpenSSL::PKey.generate_key というメソッドを新規追加しています。

[5cae289682] Kazuki Yamaguchi 2017-05-15 14:47:47 UTC

拡張ライブラリ openssl の OpenSSL::PKey::#sign および #verify の実装で利用する OpenSSL のインターフェースを EVP_Xxxx から EVP_DigestXxxx に変更しています。 OpenSSL 1.0.0 以降で追加されたインターフェースとのこと。

[b2dc4880f5] Kazuki Yamaguchi 2017-05-15 14:47:47 UTC

拡張ライブラリ openssl の OpenSSL::PKey#sign と OpenSSL::PKey#verify の実装で OpenSSL 1.1.1 以降を利用していた場合に使える EVP_DigestSign() と EVP_DigestVerify() というシンプルなインターフェースを利用するようにしています。

[fbadb01d6e] Kazuki Yamaguchi 2017-03-18 12:58:46 UTC

拡張ライブラリ openssl の OpenSSL::PKey::PKey#derive というメソッドを新規追加しています。 EVP_PKEY_derive() という API を使うためのメソッドのようです。専用のクラスのないタイプの OpenSSL の鍵タイプを利用するための低レベル API という感じみたいです。

[9d3ffe09c4] Kazuki Yamaguchi 2017-03-18 13:34:19 UTC

拡張ライブラリ openssl の OpenSSL::PKey::DH#compute_key と OpenSSL::PKey::EC#dh_compute_key の実装を C から ruby 実装に移植しています。 fbadb01d6e0881ef6c6e5e105b8ac20fe663c817 で追加した OpenSSL::PKey::PKey#derive を利用することで可能になったようです。なるほどー。

[15863069c9] Kazuki Yamaguchi 2020-05-13 09:15:08 UTC

拡張ライブラリ openssl の rdoc 用コメント内のサンプルでファイルの読み込みに File.read を使っていたところを File.binread を使うようにしています。

[fde9f806cb] Kazuki Yamaguchi 2020-05-18 06:43:18 UTC

拡張ライブラリ openssl の OpenSSL::PKey::EC::Point#mul というメソッドで引数を 2つ受け取る呼びかたを deprecated として警告を出力するようにしています。

[baea36c955] Kazuki Yamaguchi 2020-06-30 05:27:13 UTC

拡張ライブラリ openssl の OpenSSL::HMAC.digest や .hexdigest などのクラスメソッドのテストを追加しています。

[b91f62f384] Kazuki Yamaguchi 2020-05-18 07:15:07 UTC

拡張ライブラリ OpenSSL で利用する関数として HMAC_CTX_xxx() のかわりに EVP_DigestXxx() を利用するようにしています。 OpenSSL 3.0.0 でなくなる予定なのでとのこと。さらにクラスメソッドの実装は C から Ruby 実装に移植しています。

[13198d4968] Kazuki Yamaguchi 2020-06-29 13:09:35 UTC

拡張ライブラリ openssl に OpenSSL::HMAC#base64digest および特異メソッド OpenSSL::HMAC.base64digest を新規追加しています。

[da6341b709] Bart de Water 2020-07-07 16:59:11 UTC

拡張ライブラリ openssl の rdoc 用コメントのサンプルやテストで OpenSSL::Cipher.new の引数に渡している方式を示す文字列を大文字で渡していたのを小文字にしています。世には大文字だと受け付けられなくなる環境があるみたいです。

[c71afc9db7] Colton Jenkins 2020-07-05 21:25:54 UTC

拡張ライブラリ openssl に OpenSSL::PKey#compare? メソッドを追加しています。 EVP_PKEY_cmp() という API の wrapper です。

[57a57e6e56] Kazuki Yamaguchi 2020-07-18 07:45:01 UTC

拡張ライブラリ openssl の誤った証明書を使った時の OpenSSL::SSL::SSLSocket のテストをリファクタリングしてテスト対象を明確にするようにメソッド名の改名とコメントを追記しています。

[3b43e3fa10] Kazuki Yamaguchi 2020-07-18 08:09:37 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext#verify_mode についてのテストメソッドを追加しています。

[81325db5f8] Kazuki Yamaguchi 2020-07-18 08:14:55 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext の verify_mode と verify_host のデフォルト値での初期化を追加しています。 元は nil になってたけど挙動は変わらないとのこと。

[be1e88a277] Claus Lensbøl 2020-07-23 12:52:10 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLServer の rdoc 用コメントのサンプル内の typo 修正。

[92f19f7bb0] Nobuhiro IMAI 2020-07-29 03:39:09 UTC

拡張ライブラリ openssl の OpenSSL::PKey.read の rdoc 用コメントのマークアップのミスを修正。

[88b8b3ac15] Kazuki Yamaguchi 2020-08-08 10:03:46 UTC

拡張ライブラリ openssl の OpenSSL::X509::Store#add_file の引数に nil が渡された時に TypeError 例外を発生させるようにしています。

[08c99a4208] Kazuki Yamaguchi 2020-08-08 10:28:11 UTC

拡張ライブラリ openssl の OpenSSL::X509::Store.new に引数が渡されたら単に無視されるようになってるので警告を出力するようにしています。

[be3ba2ee4d] Kazuki Yamaguchi 2020-08-08 14:00:10 UTC

拡張ライブラリ openssl の OpenSSL::X509::StoreContext#chain の実装のリファクタリング。 ossl_x509_sk2ary() という API が有用だったのでこれを使うようにしているようです。

[871c61d5d0] Kazuki Yamaguchi 2020-08-08 15:04:56 UTC

拡張ライブラリ openssl の ext/openssl/ossl_x509store.c 内で ossl_raise() の第2引数に NULL を渡していたところを何か適当な文字列を渡しておくようにしています。NULL を渡すとまずいというよりなにかしら例外メッセージに情報を増やそうということみたいです

[62d889c857] Kazuki Yamaguchi 2020-08-08 15:22:08 UTC

拡張ライブラリ openssl の OpenSSL::X509::StoreContext.new で例外発生時にメモリリークする可能性があったのを修正しています。

[c46b1f0bec] Kazuki Yamaguchi 2020-08-12 08:45:36 UTC

拡張ライブラリ openssl の OpenSSL::X509::Store および OpenSSL::X509::StoreContext のメソッドの rdoc 用コメントの説明を追記しています。

[d4ad1e71ca] Kazuki Yamaguchi 2020-08-11 09:52:37 UTC

拡張ライブラリ openssl のテスト test/openssl/test_x509store.rb の test_verify を複数のテストメソッドに分割するリファクタリング

[0b1bb1bc32] Kazuki Yamaguchi 2020-08-11 15:00:40 UTC

拡張ライブラリ openssl の OpenSSL::X509::Store のテストのリファクタリング

[945ed40862] Kazuki Yamaguchi 2018-10-22 01:26:33 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket で macOS において OpenSSL のエラーが errno == EPROTOTYPE を返した時にリトライするようにしています。 https://github.com/ruby/openssl/issues/227 [ruby-core:86690] [Bug #14713]

[d47210b113] Kazuki Yamaguchi 2020-08-12 11:57:52 UTC

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext#tmp_ecdh_callback の実装を削除しています。なんか見覚えがあるなと思ったら 2.3 で入ったけど r55214 ですぐに deprecated になったメソッドでした。なのでもう 5年ほど deprecated になってたのですね。

[4756ac00b7] Kazuki Yamaguchi 2020-06-30 06:46:14 UTC

拡張ライブラリ openssl の OpenSSL::PKey::EC::Group.new の引数に Symbol で :GFp_simple などの EC_METHOD なるものを指定する呼びかたのサポートを削除しています。

[e2ce383044] Jeremy Evans 2020-12-03 17:12:12 UTC

拡張ライブラリ openssl で LiberSSL とリンクしている時の TLS 1.3 サポートの有無のチェック方法を LibreSSL のバージョンをみて行うようにしています。

[1ad2224773] Nobuyoshi Nakada 2021-02-14 09:16:06 UTC

OpenSSL::Timestamp::Response#failure_info で Symbol を使うべきところに ID を使ってて結果がおかしくなっていたのを修正しています。 [ruby-core:102475] [Bug #17625]

[1eb6d8aa63] Kazuki Yamaguchi 2021-02-17 13:58:40 UTC

拡張ライブラリ openssl で BN_xxxx() という関数群がドキュメント上はエラー時に 0 を返すと書かれているけど実際には古い(といってもちょっと前くらい?)バージョンや LibreSSL では -1 を返すようになってるので、どちらが返ってきてもエラーとみなすように <= 0 でチェックするようにしています。

[a3f97007bb] Kazuki Yamaguchi 2021-02-25 08:28:23 UTC

拡張ライブラリ openssl のテストで LibreSSL の 3.2.4 での証明書検証の挙動の変更に対応して LibreSSL 用に特別扱いをしていた部分が不要になったりしたのに対応しています。

[e35d3623de] Kazuki Yamaguchi 2021-02-25 07:49:11 UTC

拡張ライブラリ openssl のサンプル sample/openssl/ 配下のスクリプトでトップレベルに include OpenSSL や include OpenSSL::X509 などしていたのをやめています。

[7f0b3fb906] Kazuki Yamaguchi 2021-02-25 07:55:40 UTC

拡張ライブラリ openssl のサンプル sample/openssl/ 配下のスクリプトで Digest や PKey の使いかたや鍵長などが古くなっているのを修正しています。

[6c7cb00c09] Yusuke Endoh 2021-03-16 12:38:00 UTC

0846c2da457e7523819236ac7da492029b3ef73d で追加していた不正な後方参照を含む正規表現のテストで使ってたスクリプト片に文法エラーがあったのを修正しています。

[44d67128a8] Kazuki Yamaguchi 2021-03-16 13:05:04 UTC

拡張ライブラリ openssl のテストで OpenSSL::Cipher の "aes-128-ccm" を使うテストは OpenSSL の 1.1.1c 以降でないと使えないということで OpenSSL::OPENSSL_VERSION_NUMBER でのチェックの範囲を修正しています。

[e61e9bcfb2] Kazuki Yamaguchi 2021-03-16 13:15:46 UTC

拡張ライブラリ openssl のテストで古い OpenSSL (といっても 1.1.1) で OpenSSL::Config.parse の ".include" directive の仕様が変化してしまっているため通らないので実行除外するようにしています。