ruby-trunk-changes r45830 - r45847

今日は拡張ライブラリ socket の IP_TRANSPARENT 定数追加、open-uri の close 処理の修正、ブロックパラメータ等でローカル変数の shadowing がおきている時の local_variables の不具合の修正などがありました。

akr: r45830 2014-05-06 00:15:20 +0900

拡張ライブラリ socket の定数を定義するソースコードを生成する ext/socket/mkconstants.rb に IP_TRANSPARENT を追加しています。 IP_TRANSPARENT は glibc-2.12 から追加されている定数だそうです。 [ruby-core:50372] [Bug #7476]

svn: r45831 2014-05-06 00:15:30 +0900

version.h の日付更新。

ko1: r45832 2014-05-06 01:11:00 +0900

benchmark/driver.rb で File::NULL が未定義の時に /dev/null があればそれを格納しておくようにしています。 benchmark は比較のために古い ruby で実行することもあるので 1.9.2 で実行する時に File::NULL が存在しないと失敗してしまうのを避けるためだと思います。

nagai: r45834 2014-05-06 01:29:55 +0900

拡張ライブラリ tk の Tk::TkDND::DND#dnd_bindsource で第2引数以降が与えられなかった時の定数参照の間違いを修正しています。

akr: r45835 2014-05-06 01:38:53 +0900

標準添付ライブラリ open-uri で open のブロック内でブロックパラメータに渡された IO を close していた場合に後始末の close で例外が発生していたので IO#closed? が true の時は再度 close を呼ばないようにする修正です。 [ruby-core:42538] [Bug #6010]
このチケット、対象が 1.8 のところに作られているので操作できないですけど、Backport 対象ですね。

tadf: r45836 2014-05-06 04:38:11 +0900

Kernel#test に与えられる cmd 引数の "a" がなぜか "e" と同じに扱われていたのを削除しています。 undocumented でしたがなんであったんでしょうね。 [ruby-dev:48172]

akr: r45837 2014-05-06 17:18:13 +0900

標準添付ライブラリ time.rb の Time.parse の rdoc 用コメントの例示されているシステムのタイムゾーンJST から EST5EDT に変更しています。 別にサンプルのタイムゾーンJST でもいいだろと思いましたが time.c にはサンプルはシステムタイムゾーンが EST とするというような文言があるようなのでそれに合わせているようです。 [ruby-core:60778] [Bug #9521] [ruby-core:61718] [Bug #9682]

akr: r45838 2014-05-06 17:27:47 +0900

r45837 の再修正。例のシステムタイムゾーンを EST にして、結果の例が一部 GMT-4 になっていたのも修正しています。

kazu: r45839 2014-05-06 17:38:33 +0900

r45832 の ChangeLog エントリの typo 修正。

nobu: r45840 2014-05-06 17:54:36 +0900

例外発生時に生成するバックトレースに SystemStackError 例外の発生の時に、現在実行中のメソッド名を追記するようにしています。 SystemStackError の場合は get_backtrace() が呼び出されないので最低限最後のメソッド名だけは出すようにしているみたいです。

akr: r45841 2014-05-06 18:04:09 +0900

標準添付ライブラリ time.rb の Time.parse や Time.strptime で Date._strptime の結果必要な情報がないのをチェックしていたのを Time.make_time に移動しています。 r45823 で追加したチェックが重複していたので一箇所にまとめるリファクタリングという感じです。

tadf: r45842 2014-05-06 18:37:24 +0900

io_read_nonblock(), io_write_nonblock() でキーワード引数をチェックするのに rb_hash_aref() ではなく rb_get_kwargs() を利用するように修正しています。

akr: r45843 2014-05-06 18:50:08 +0900

標準添付ライブラリ time.rb の Time.make_time でも zone および offset の設定を反映させるようにしています。 year が異なる(時差により年をまたぐ)時に offset を取りなおしているのはうるう秒の考慮でしょうか。

nobu: r45844 2014-05-06 23:28:38 +0900

parse.y の arg_var_gen() と local_var_gen() の戻り値が利用されていなかったので、そもそも戻り値を返さないように void 型に変更しています。

nobu: r45845 2014-05-06 23:28:48 +0900

local_variables でローカル変数と同名のブロックパラメータがあって shadowing が発生している時に、その変数名が2つ出るのはいいのですが 3 つ現れるという不具合を修正しています。へー、 shadowing がおきていると Symbol も重複して返されるのか...。 [ruby-core:60501] [Bug #9486]

nobu: r45846 2014-05-06 23:29:07 +0900

r45845 の続きみたいです。parse.y の shadowing_lvar_gen() を shadowing_lvar_0() と改名し、変数名ではなく重複の有無を返すようにしてブロックのダイナミック変数による shadowing の時も local_variables で余分な Symbol が含まれないようにしています。 [ruby-core:60501] [Bug #9486]

nobu: r45847 2014-05-06 23:35:03 +0900

r45845 および r45846 の ChangeLog エントリに ML とチケットの参照を追記しています。