ruby-trunk-changes r35301 - r35312

今日は Hash や Array の大きなリテラルでスタックオーバフローを起こさないように VM の命令へのコンパイルを変更するコミットや WEBrick での例外の扱いの変更などがありました。

naruse:r35301 2012-04-12 03:55:32 +0900

Test::Unit でテストケースを実行する前に GC.start を読んで一度全GCするようにしています。GCの影響によるテストの失敗したりしなかったりするのを防ぐため?

svn:r35302 2012-04-12 03:55:36 +0900

version.h の日付更新。

drbrain:r35303 2012-04-12 05:28:11 +0900

WEBrick の処理スレッド内での例外が発生した時に全ての例外を無視して次のリクエストを実行していたのですが、StandardError のみ実行を継続するようにしてそれ以外の Exception (SignalException や LoadError など)の時は処理を止めてしまうようにしています。そのため後始末の処理は ensure 節にしています。 [ruby-core:43996] [Feature #6236]

drbrain:r35304 2012-04-12 06:20:51 +0900

Net の各プロトコルのモジュールでソケットの接続と読み込みのタイムアウトのうち、接続のタイムアウトを表現する例外クラスは独自に定義していましたが、読み込みは timeout ライブラリの Timeout::Error をそのまま利用していたので、読み込みタイムアウトを表現する Net::ReadTimeout も定義してこれを利用するようにしています。 [ruby-core:42938] [Feature #6088]

drbrain:r35305 2012-04-12 07:11:07 +0900

URI モジュールが URI をパースする際にプロトコルスキームは大文字小文字を無視して、URI#scheme は小文字に downcase したものを返すようにしています。 [ruby-core:35606] [Feature #4551]

ko1:r35306 2012-04-12 10:33:34 +0900

Array や Hash のリテラルで要素数が極端に大きいものは一度の VM の命令で生成しようとするとスタックオーバフローを起こす問題があったので、256個ごとに分割して配列を生成して後でまとめるという VM の命令にコンパイルするように変更しています。 [ruby-dev:37701] [Bug #982]

ko1:r35307 2012-04-12 10:47:31 +0900

r35306 の ChangeLog エントリに ML 番号とチケット番号を追記。

naruse:r35308 2012-04-12 11:51:02 +0900

r35304 のタイムアウト例外の変更にあわせてテストを修正しています。

nobu:r35309 2012-04-12 15:10:31 +0900

RHASH(hash)->iter_lev と struct RHash の iter_lev メンバにアクセスしているところを RHASH_ITER_LEV() マクロを利用するように書き換えています。

nobu:r35310 2012-04-12 15:10:33 +0900

gc.c の GET_HEAP_HEADER() と NUM_IN_SLOT() という関数マクロの引数にかっこをつけています。

nobu:r35311 2012-04-12 16:16:14 +0900

autoload のテストで $LOADED_FEATURES の配列に追加されてたファイルパスを後始末で削除するようにしています。

tadf:r35312 2012-04-12 19:52:58 +0900

Date の strptime などの rdoc に指示子の幅などはサポートしていない旨追記しています。