今日は標準添付ライブラリ uri の LDAP schema の URI でのエラー処理強化や uri のテストでの fd leak 対策などがありました。
[e04418bb16] Nobuyoshi Nakada 2020-05-05 14:23:39 UTC
標準添付ライブラリ uri の URI::LDAP (こんな schema 対応あったんだ)で path がない時に URI::InvalidURIError 例外を発生させるようにしています。 [ruby-core:98138] [Bug #16830]
[77f19d26b9] Marc-Andre Lafortune 2020-05-01 07:36:50 UTC
標準添付ライブラリ matrix の gemspec ファイルの spec.files から .travis.yml を削除しています。
[7bde98125e] Marc-Andre Lafortune 2020-05-05 21:02:59 UTC
Enumerator#next の rdoc 用コメントのエントリに #next_values, #peek, #peek_values と共通の注意事項をまとめたり Fiber を実装に使っているために速度は遅くなることはバックトレースが独自のものになる点などを追記しています。
[86391a5517] git 2020-05-05 21:04:39 UTC
version.h の日付更新
[00a9d697a8] Benoit Daloze 2020-05-05 22:09:56 UTC
rb_obj_cmp() から VALUE 値を直接比較するショートカットを削っています。 rb_equal() でも比較してるからということですが、これは関数呼び出しをショートカットするためだったんじゃないかな。
[48d509cefc] Benoit Daloze 2020-05-05 22:11:42 UTC
Kernel#=== メソッドの実装の関数を case_equal() という rb_equal() を呼び出すだけの関数に変更して、rb_equal() のコメントに VALUE 値を直接比較する最適化が行なわれるために、この C API を直接呼び出すと Float::NAN 同士の比較が真になってしまうなどのちょっと equal? メソッドとは異なる結果になる場合があるという注意を追記しています。
[e79e5e0b40] Benoit Daloze 2020-05-05 22:24:29 UTC
48d509cefc376df8af0ad0e08a09aecbd78f4f10 の rb_equal() に追加したコメントの注意事項の説明をもうちょっと詳しくしています。
[b0498caa7e] Nobuyoshi Nakada 2020-05-06 00:43:49 UTC
48d509cefc376df8af0ad0e08a09aecbd78f4f10 で case_equal() を rb_equal() を呼び出す関数として定義していたのをただのマクロとして置換させるようにしています。
[3a6dad9d8b] Nobuyoshi Nakada 2020-05-06 00:51:01 UTC
Object#== の rdoc 用コメントから不要になった部分を削っています。
[039a8ef786] Nobuyoshi Nakada 2020-05-06 01:09:29 UTC
テスト中の各種リソースのリークチェックする tool/lib/leakchecker.rb で自プロセスが開いている file descriptor を取得するために使う procfs のパスに /proc/self/fd の他に /dev/fd というのも試してみるようにしています。
[7397b9f786] Nobuyoshi Nakada 2020-05-06 03:45:01 UTC
拡張ライブラリ socket の UNIXSocket のテストで後始末が漏れていて fd leak していたのを修正しています。
[b247ac086e] Nobuyoshi Nakada 2020-05-06 04:13:10 UTC
tool/lib/leakchecker.rb の fd leak チェックで getaddrinfo() を使うと macOS ではシステム側で fd が利用されてしまうようなので device 番号で判定して無視するように対応しています。
[de3f725978] Nobuyoshi Nakada 2020-05-06 05:08:26 UTC
b247ac086e60a6cee99ea1989277c5c66b0541de で leak fd を一時的に IO.for_fd で IO オブジェクトで wrap したものを close する時に何らかの理由で IO.for_fd が失敗して io が nil だった時に対応するため safe guard 演算子を使うようにしています。
[46b93175ed] Nobuyoshi Nakada 2020-05-06 07:06:25 UTC
b247ac086e60a6cee99ea1989277c5c66b0541de で対処したように macOS では IPSocket.getaddress を呼ぶことでシステムライブラリ内で fd を使ってしまうので URI() の http_proxy オプションのテスト一部の assertion 用の with_proxy_env ブロック内で IPSocket.getaddress を mock にすりかえていたのを、テストメソッド全体で行うようにしています。