ruby-trunk-changes r56873 - r56886

今日は net/ftp で FTPS 対応の追加修正や Net::FTP#stat の引数追加、標準添付ライブラリで &. 演算子を使うようにするリファクタリングなどがありました。

kazu: r56873 2016-11-22 22:11:43 +0900

lib/resolv.rb で if で分岐していたところを &. 演算子を使って呼び出すようにして分岐を消しています。
そういえば a.m if a と a&.m で VM の命令列としては同じになるのかな、と --dump=insns してみたら &. を使うほうがちょっとだけシンプルになっていました。たぶんちょっと速い。

kazu: r56874 2016-11-22 22:59:16 +0900

lib/webrick/server.rb で close の時の IOError を rescue して無視させていたところを each(&:close) を使ってシンプルにしています。2.2 以降 close 済みの IO の close が IOError を発生させなくなったので。

nobu: r56875 2016-11-23 08:11:41 +0900

lib/webrick/server.rb で ||= を使った初期化や &. 演算子を使った nil チェックの省略などのイディオムを使うようにリファクタリングしています。

svn: r56876 2016-11-23 08:11:41 +0900

version.h の日付更新。

nobu: r56877 2016-11-23 08:32:44 +0900

たとえば p ?ab のように ? のあとに複数の文字を含む identifier っぽいものが続くと、1文字リテラルではなく条件演算子 (? :)として parse されるので、その場合に警告を出力して ? のあとに空白を入れることを促すようにしています。

kazu: r56878 2016-11-23 08:44:51 +0900

lib/uri/generic.rb で 分岐や条件演算子のかわりに &. 演算子を使って nil チェックを省くようにしています。

shugo: r56879 2016-11-23 09:03:27 +0900

標準添付ライブラリ net/ftp の Net::FTP#status に省略可能な pathname 引数を追加して STAT コマンドの引数を指定できるようにしています。 https://github.com/ruby/ruby/pull/1478 [ruby-core:78240] [Feature #12965]

shugo: r56880 2016-11-23 09:34:13 +0900

r56860 で分離した Net::FTP::BufferedSSLSocket に @is_shutdown というインスタンス変数を追加して、shutdown 後に読み込もとしたら EOFError 例外を発生させるようにしています。

shugo: r56881 2016-11-23 13:40:40 +0900

テスト TestDir_M17N#test_glob_encoding が AIX で失敗していたのを修正しています。 Dir.[] のエントリが ASCII-8BIT の時に force_encoding で UTF-8 に変換していましたが ISO-8859-1 の時も String#encode で変換できないことがあるみたいなので force_encoding で変換するようにしています。 [ruby-core:78271] [Bug #12972]

shugo: r56882 2016-11-23 14:26:18 +0900

標準添付ライブラリ net/ftp のテストで Errno::EPIPE で例外を捕捉していたところに Errno::EPROTOTYPE も追加しています。 Mac OS X 10.10 でたまに発生するとのこと。 [ruby-core:78066] [Bug #12914]

normal: r56883 2016-11-23 17:10:44 +0900

標準添付ライブラリ net/ftp のコメントの typo 修正。

nobu: r56884 2016-11-23 20:30:02 +0900

標準添付ライブラリ fileutils のテストの setup メソッドでインスタンス変数 @process に Process.groups だけでなく Prosess.gid も追加しておくようにしています。 systemd-nspawn を使ってる場合に Process.groups が空になることがあるそうです。 [ruby-core:78053] [Bug #12910]

shugo: r56885 2016-11-24 00:10:19 +0900

標準添付ライブラリ net/ftp の Net::FTP#status メソッドで pathname 引数に "\r" "\n" など改行コードが含まれていたら ArgumentError を発生させるようにチェックを追加しています。

svn: r56886 2016-11-24 00:10:20 +0900

version.h の日付更新。