ruby-trunk-changes r56559 - r56590

今日は島根の美保関で Ruby 開発合宿が開催されていたのでたくさんコミットがありました。
round に丸め方向を指定するキーワード引数 half が追加されたり、rdoc が 5.0.0 に更新されたり、shellwords のバックスラッシュの扱いについての仕様が新しくなったり、Net::SMTPTLS handshake にタイムアウトが設定可能になったり、その他多くの機能追加や不具合修正がありました。

nobu: r56559 2016-11-05 10:07:19 +0900

FreeBSD 11.0 で File.stat の atime のテストが失敗していたそうで、 mswin か mingw でスキップするようにしていた File::Stat#atime のテストを実際に atime を取得して mtime よりも新しく更新されているかをチェックしてからテストするように修正しています。 [ruby-core:77943] [Bug #12903]

svn: r56560 2016-11-05 10:07:20 +0900

version.h の日付更新。

shugo: r56561 2016-11-05 11:23:09 +0900

cont.c の cont_capture() という関数に clang が 3.8.0 の時だけ optnone という attribute を指定して最適化をさせないようにしています。 clang 3.8.0 の最適化の不具合を回避するためのようですね。 [ruby-core:77894] [Bug #12893]

nobu: r56563 2016-11-05 11:39:09 +0900

logger.rb のテストで strftime に空のフォーマット文字列を渡した時の警告が出るところで警告を抑制するため $VERBOSE を一時的に false にセットして実施するようにしています。

akr: r56566 2016-11-05 11:50:15 +0900

Array#sum の rdoc 用コメントで Array#join や Array#flatten のほうが高速だというコメントにそれが有用なケースについてもう少しくわしく書き足しています。

shugo: r56568 2016-11-05 11:57:40 +0900

親クラスで定義されたメソッドに alias を作ったものを Refinements で上書きした場合のテストを追加しています。 [Bug #11182] の修正のテスト追加ですかね? [ruby-core:69374] [Bug #11186]

naruse: r56570 2016-11-05 12:13:16 +0900

r56200 で追加された Process.clock_gettime 用の定数 CLOCK_MONOTONIC_RAW_APPROX、CLOCK_UPTIME_RAW、CLOCK_UPTIME_RAW_APPROX の追加について NEWS ファイルに追記しています。

akr: r56571 2016-11-05 12:29:08 +0900

拡張ライブラリ pathname に Pathname#empty? というメソッドを追加しています。パス名の文字列が空の時に真になるのかなと思いましたが、そうじゃなくて File.empty? や Dir.empty? と同等のものみたいです。ふーむ。 [ruby-core:76404] [Feature #12596]

shugo: r56572 2016-11-05 12:31:45 +0900

r56213 の Module を Refinements で refine できるようになった変更について NEWS ファイルに追記しています。

knu: r56573 2016-11-05 13:58:48 +0900

拡張ライブラリ shellwords のダブルクオート内のバックスラッシュの扱いを IEEE Std 1003.1-2008, 2016 Edition, the Shell & Utilities volume (参考URL: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html) に準拠するように変更しています。 [ruby-core:63807] [Bug #10055]

nobu: r56574 2016-11-05 14:17:22 +0900

parse.y のブロックで cmdarg_stack にブロックの内容の NODE をセットする時に $2 で参照していたのですが、NODE は VALUE なので VALUE が int よりもサイズが大きくてかつ big endian な環境で誤って上位の int 幅のデータを参照してしまっていた不具合を修正しています。具体的には PPC64 環境だそうで。 [ruby-core:77920] [Bug #12900]

knu: r56575 2016-11-05 14:40:51 +0900

r56573 の shellwords の参照する標準仕様の変更について NEWS ファイルに追記しています。

shugo: r56576 2016-11-05 15:47:36 +0900

標準添付ライブラリ net/smtpTLS の handshake にタイムアウトを設定できるようにしています。 net/http で実装していた SSL socket の接続処理を net/protocol.rb に ssl_socket_connect メソッドとして切り出して共有するようにしています。そして Net::SMTP は Net::Protocol を継承していなかったので、継承するようにしています。 [ruby-core:76893] [Bug #12678]

sho-h: r56577 2016-11-05 15:59:31 +0900

tool/mkconfig.rb の生成する rbconfig.rb に rdoc 用のコメントを埋め込むようにしています。

nobu: r56578 2016-11-05 16:10:05 +0900

openssl のテストで定義していた TestEOF というモジュールの名前空間を OpenSSL::TestEOF に移動しています。

nobu: r56579 2016-11-05 16:14:19 +0900

tool/mkconfig.rb が生成する rbconfig.rb の行末に空白が入るようになっていたので修正しています。自動生成するファイルの行末の空白まで検出するのか、と思ったけど手動みたいでした。

sho-h: r56580 2016-11-05 16:18:48 +0900

doc/standard_library.rdoc で Mutex と Queue と ConditionVariable について thread.rb で提供されていると書かれていましたが、今は組み込みクラスになっているので記述を削っています。

nobu: r56581 2016-11-05 16:28:09 +0900

IO#gets, IO#readlines, IO#each_lines などの行単位で読み込むメソッドでは最後に改行文字がついた状態で文字列が得られますが、この最後の改行を削って使うというのはよくあることなので、これらのメソッドに キーワード引数 chomp を追加して真値が指定されたら改行文字を削った文字列を返すようにしています。これは非常に便利ですね。 [ruby-dev:49711] [Feature #12553]

naruse: r56582 2016-11-05 17:23:57 +0900

テスト用にファイルシステムの情報を取得する拡張ライブラリに Bug::File::Fs.atime? メソッドを追加して atime がサポートされているかどうかチェックする機能を追加しています。

akr: r56583 2016-11-05 17:33:03 +0900

標準添付ライブラリ resolv の Resolv::DNS#getresources で each_resource を使うべきところ each_answer を利用していた不具合を修正しています。 https://github.com/ruby/ruby/pull/797 [ruby-core:75461] [Bug #12372]

naruse: r56584 2016-11-05 17:59:42 +0900

r56582 でテスト用の拡張ライブラリに導入した Bug::File::Fs.atime? は真偽値が逆だったので noatime? に改名しています。

naruse: r56585 2016-11-05 17:59:43 +0900

r56559 で atime のテストを実施するかどうかを実際に File::Stat#atime をチェックして判定していたのを r56582 および r56584 で導入した Bug::File::Fs.noatime? を利用するように修正しています。 [ruby-core:77943] [Bug #12903]

hsbt: r56586 2016-11-05 18:18:10 +0900

rdoc の upstream から 5.0.0 をマージしています。 変更点は以下を参照してください。 https://github.com/rdoc/rdoc/blob/b825775647f62c5b525e9780a28ff2fbb1d5bf6f/History.rdoc#500--2016-11-05

svn: r56587 2016-11-05 18:18:11 +0900

r56586 の行末の空白除去。

svn: r56588 2016-11-05 18:18:11 +0900

r56586 で新規追加されたファイルの svn property 設定。

knu: r56589 2016-11-05 18:23:14 +0900

標準添付ライブラリ set に利用している Hash を compare_by_identity を使うようにする Set#compare_by_identity とその設定をチェックする Set#compaire_by_identity? というメソッドを新設しています。ふーむ、しかしどういう時にこれを使うかなぁ。 [ruby-core:74498] [Feature #12210]

nobu: r56590 2016-11-05 18:49:39 +0900

Float#round や Integer#round, Rational#round に half というキーワード引数を追加して :even か :up を指定すると、ちょうど中間の時にその1桁上が偶数になるように丸めるか、切り上げるかを指定できるようにしています。 [ruby-core:76273] [Bug #12548]