ruby-trunk-changes r31825 - r31871

今日は大漁でした。リビジョン番号が大きく進んでいるのは ruby_1_9_2 ブランチへのマージがあったためでもありますが、trunk にもたくさん変更がありました。
まず BigDecimal の生成時に受け付けるオブジェクトの種類の拡張(Integer, Float, Rational)、Net::HTTP の expected: 100-continue ヘッダつきのリクエストのサポート追加、date の実装変更、clang の最新版対応、その他テストの修正などです。

akr:r31825 2011-05-30 22:30:18 +0900

TestSignal#test_signal_requiring で子プロセスを spawn する際に stderr を閉じているのをやめています。

emboss:r31826 2011-05-31 06:47:37 +0900

OpenSSL::PKey::RSA と OpenSSL::PKey::RSAError のドキュメント追記。

svn:r31827 2011-05-31 06:47:40 +0900

version.h の日付更新。

naruse:r31846 2011-05-31 11:08:58 +0900

r29419 で YARVレジスタ用変数の定義を clang の時に __asm__ を使わないようにしていたのを戻しています。clang 3.0 だと特別扱いしなくても大丈夫になったようです。

usa:r31855 2011-05-31 12:43:39 +0900

TestIO#test_open_mode で File を open したまま捨てていたのできちんと close するようにしています。

usa:r31857 2011-05-31 12:54:58 +0900

test_io_wait.rb で Socket の対向に書き込みしてすぐに IO#ready? や IO#wait(0) でチェックしても反映されないことがあるらしく、少し sleep で待ち時間を入れています。

yugui:r31858 2011-05-31 12:59:36 +0900

strftime.c の変数に const を付加したりバッファサイズチェックを共通のマクロに変更したりしています。また [ruby-dev:43284] [Bug #4456] のテストを追加。

usa:r31859 2011-05-31 14:21:36 +0900

DEFAULT_TEXTMODE が真の時(Windows 環境)に IO.pipe の mode の指定で FMODE_BINMODE が立ってたら FMODE_TEXTMODE を落とすようにしています。IO オブジェクトを生成した時に DEFAULT_TEXTMODE を付加するのでバイナリモードの指定があった時(option 引数で指定した時?)に両方が on になってしまうことがあるようです。 いやー IO の初期化はとても込み入ってますね。これで合ってるでしょうか……。

nahi:r31860 2011-05-31 17:10:42 +0900

Net::HTTP で Expect: 100-continue ヘッダをつけたリクエストを投げて、サーバから "100 continue" がかえってきてからリクエスト本体を投げるという動作をサポートしています。Net::HTTP#continue_timeout= でタイムアウト値(sec)を設定して Expect: 100-continue ヘッダをつけると、サーバが "100 continue" ステータスを返すかタイムアウトするまでリクエストを投げるのを待つようになります。タイムアウトしても結局リクエストは投げるんですね。

akr:r31861 2011-05-31 21:29:26 +0900

TestSignal#test_signal_requiring で子プロセスで SIGINT の trap をデフォルトのハンドラに明示的にセットしています。IO.popen で子プロセスを作るときはハンドラは引き継がれないと思うのですが、明示的な指定が必要なんでしょうか?

tadf:r31862 2011-05-31 22:28:48 +0900

拡張ライブラリ date の変更です。元々 DateTime には light mode とそうでない(コミットメッセージによると right mode というらしいです)があったのですがこれを simple と complex と改名して構造体の宣言方式も変更されています。その他にも比較演算子の呼び出しをメソッドコールに丸投げから型を見て FIXNUM だと最適化してたり、なにげに long -> int のような型の変更などあるようですが、差分が長大なので詳細はパス。

mrkn:r31863 2011-05-31 22:45:31 +0900

BigDecimal は数値を表す文字列を渡して生成するようになっていますが、ここに整数(Fixnum, Bignum)を渡して生成することができるようにしています。これは NEWS ですね。

mrkn:r31864 2011-05-31 23:43:39 +0900

さらに Rational から BigDecimal を生成できるようにしています。また Rational からの変換の時に bigdecimal/util.rb を require するのをやめて Rational の分子を BigDecimal に変換して除算するようにしています。あとはインデントの修正など。 [ruby-core:34318]
あ、util_loaded が未使用な変数になっていますね。

tadf:r31865 2011-05-31 23:53:52 +0900

date_core.c の offset のチェックで Float を渡した時の範囲チェックの間違いと Rational を渡した時に整数値(分母が 1)の時しかちゃんとチェックされていなかった(常に0を返してた)のを修正しています。

nobu:r31866 2011-06-01 00:05:09 +0900

io.c の rdoc のサンプルコードで閉じかっこの前のスペースを削除しています。

svn:r31867 2011-06-01 00:05:13 +0900

version.h の日付更新。

mrkn:r31868 2011-06-01 00:09:38 +0900

BigDecimal と Rational の coerce (演算する時に Rational を BigDecimal に自動的に変換する)で精度としてレシーバの BigDecimal の精度をそのまま使うようにしています。 [ruby-core:34318]

mrkn:r31870 2011-06-01 00:33:42 +0900

さらに Float から BigDecimal を生成することもできるように機能追加されています。to_r で一旦 Rational に変換してから BigDecimal を作るようになっています。精度が Float (というか double)の精度(DBL_DIG+1)を越える値が指定されたら例外にしています。

nagachika:r31871 2011-06-01 00:36:55 +0900

未使用になった変数の削除。