今日は標準添付ライブラリ net/http, net/imap, net/smtp, ostruct などの更新と、標準添付ライブラリ monitor の Monitor が Fiber 単位で排他するようにする仕様変更などがありました。
misc/lldb_cruby.py の dump_page コマンドで表示する情報の slot の free list 上でのインデックスも表示させるようにしています。
misc/lldb_cruby.py の dump_page_rvalue コマンドで引数で渡したオブジェクトの slot が目立つように印をつけて表示するようにしています。
標準添付ライブラリ monitor を Fiber 単位で排他するようにしています。うーむ、なるほど。 blocking fiber じゃないとこれまで動いてたものが動かなくなる可能性はありそうですね(まあ Fiber と Monitor を同時に使うというのが意図通りだったということはあんまりなさそうですが)。 [ruby-core:103591] [Bug #17827]
標準添付ライブラリ net/ftp のテストで未使用の変数があったので警告抑制のため削除。
標準添付ライブラリ net/ftp のテストで MJIT が有効な時にタイムアウトを伸ばずために使っていたモジュールが古い名前 RubyVM::MJIT のままだったので RubyVM::JIT に変更しています。そういえば MJIT -> JIT になったんだっけ。
標準添付ライブラリ net/smtp の Net::SMTP.start, #start メソッドに ssl_context_params キーワード引数を追加して利用する OpenSSL::SSL::SSLContext を渡せるようにしています。
標準添付ライブラリ net/smtp で Socket.tcp の connect_timeout キーワード引数を利用して Timeout.timeout のかわりに接続時のタイムアウトを実現するようにしています。
標準添付ライブラリ net/smtp の gemspec ファイルの spec.files を git ls-files を使ってたのを直接配列リテラルを書くようにしています。
標準添付ライブラリ net/smtp のバージョンを "0.2.1-patch-ssl-context" というのにしています。うーん、このままリリースするのかな。
標準添付ライブラリ net/http でも接続タイムアウトに Timeout.timeout を使っていたところを Socket.tcp の connect_timeout キーワード引数を利用するようにしています。
標準添付ライブラリ net/http の URL のホスト部から ":" 以降を削る時の正規表現のオプションに s を使ってたのを m を使って改行が含まれてた時に改行を超えて全て削るようにしています。
標準添付ライブラリ net/http の Net::HTTP#connect で OpenSSL::SSL::SSLContext.new の呼び出しを接続前にしておくようにしています。使ってるわけではないのですが、拡張ライブラリ openssl が未使用でここで初回の利用だった場合に初期化のためちょっと時間がかかるので、ソケットをはってから時間をかけるよりその前にやっておく、という意図のようです。 [ruby-core:60202] [Feature #9459]
標準添付ライブラリ net/imap の rdoc 用コメントの typo 修正。
misc/rb_optparse.bash や misc/rb_optparse.zsh のインデント変更と test/optparse/test_acceptable.rb の空行削除。コミットログをみるとなんか意味がありそうだけど、たぶん upstream のリポジトリでは ruby 本体に同期されないファイルの部分で他に変更があったのを cherry-pick した結果だと思います。
標準添付ライブラリ ostruct で String#end_with? を使ってたところを正規表現を使って String#match? を使うようにしています。しかし match? が使えるようになったらかということですが、パフォーマンス的には end_with? でいいならそのほうが高速そうな気がしますが……。
標準添付ライブラリ ostruct で Hash#to_h にブロックを受け付けるように機能がない古い ruby のために OpenStruct#to_h メソッド定義を分岐するようにしています。to_h のブロック受け付けってそんなに新しいんだっけ。
標準添付ライブラリ ostruct の Ractor を使ったテストを defined?(Ractor) で Ractor クラスがある時だけテストメソッド定義するようにしています。
標準添付ライブラリ diget/rmd160 の extconf.rb で -DNDEBUG オプションの追加は ruby のバージョンが 3.0 以前の時だけにするようにしています。
拡張ライブラリ digest/xxx の extconf.rb で -DHAVE_CONFIG_H のコンパイラオプション追加を削除しています。