ruby-trunk-changes r45813 - r45829

今日は Date.strptime が "%s %z" のような指定を受け付けるようにする変更、Pathname#/ の追加と Windows での Pathname#cleanpath の挙動の修正、Process.spawn のリダイレクト指定でのファイル作成の挙動変更など主に仕様変更がありました。

akr: r45813 2014-05-05 00:51:05 +0900

r45808 の標準添付ライブラリ time.rb の force_zone! の変更部分にコメントを追記しています。よくみると Time#localtime に引数つきで呼び出す条件は offset が 0 じゃない時ではなくて、Time#utc_offset が offset と異なる場合なので、タイムゾーンの設定と offset が異なっている時に強制的に offset ぶんの時差を設定するようにするという、よりイレギュラーなケースを想定した分岐だったようです。

svn: r45814 2014-05-05 00:51:08 +0900

version.h の日付更新。

akr: r45816 2014-05-05 00:57:16 +0900

r45813 の続きでコメントを修正しています。

tadf: r45822 2014-05-05 05:56:28 +0900

拡張ライブラリ date の Date.strptime で "%s %z" のように UNIX time と offset の指定をした時に %z が効くように変更しています。 ふなばさんは "%s %z" のような指定は日付の指定としてはおかしいという主張をされていましたが、git がこの形式で時刻を出力するということから受け付けるようにしたようです。 [ruby-core:62286] [Feature #9794]

akr: r45823 2014-05-05 11:47:53 +0900

標準添付ライブラリ time.rb の Time.strptime で、空文字列や "%z" のみの指定時に Date._strptime で日時の情報が取得できないことがあるのに対応して明示的に例外を発生させるようにしています。 [ruby-core:62349]

akr: r45824 2014-05-05 16:33:14 +0900

r45823 のテストケースに元になったMLの参照をコメントで追記しています。

tadf: r45825 2014-05-05 17:28:56 +0900

rb_math_sqrt() が未使用になっていたので export するのをやめて internal.h の宣言もコメントアウトしています。

akr: r45826 2014-05-05 21:49:27 +0900

拡張ライブラリ pathname の Pathname#/ を Pathname#+ の alias として定義しています。おおーこれで dir/file みたいなのが(dir が Pathname の場合)連結になるわけですね。個人的には使わないと思うけど、互換性への影響もほとんどないでしょうし、あって悪くはない機能ですね。 NEWS ファイルにも追記されています。 [ruby-core:61432] [Feature #9625]

akr: r45827 2014-05-05 22:09:58 +0900

Windows 環境で拡張ライブラリ pathname の Pathname#cleanpath でパスのデリミタが "/" と "\" が混在することがあった不具合を修正しています。 常に File::SEPARATOR (つまり '/')を使うように統一しています。 [ruby-core:61402] [Bug #9618]

akr: r45828 2014-05-05 22:37:09 +0900

Process.spawn で [:out, :err] => "foo" のように標準出力、標準エラー出力のリダイレクト先を配列でまとめて同じファイルに変更する指定の時にファイルが存在しないと作成してくれなかった(:out => "foo" のように単独の指定だと作ってくれる)のを、この場合もファイルを自動的に作成するように変更しています。 [ruby-dev:41430] [Feature #3348]

akr: r45829 2014-05-05 23:12:03 +0900

Enumerable#max_by の rdoc 用コメントに用例としてインポータンスサンプリングを実装する例を追記しています。