ruby-trunk-changes r39211 - r39225

今日は Gem.gzip の返り値のエンコーディングの修正、clang でリリースされたパッケージをコンパイルできないことがある問題への対処、Module#prepend と method/instance_method による Method/UnboundMethod の取得の組合せでおきる不具合の修正などがありました。

akr:r39211 2013-02-13 05:51:19 +0900

拡張ライブラリ socket の extconf.rb で have_func() での関数の存在チェックを構造体のチェックの後にまとめるように移動しています。

svn:r39212 2013-02-13 05:51:24 +0900

version.h の日付更新。

drbrain:r39213 2013-02-13 06:06:36 +0900

RubyGems の Gem.gzip メソッドが返す String のエンコーディングUTF-8 など、おそらく external_encoding? になっていたので ASCII-8BIT で返すようにしています。 https://github.com/rubygems/rubygems/issues/450

nobu:r39214 2013-02-13 10:34:35 +0900

configure で コンパイラの警告に関するオプション -Werror-implicit-function-declaration による未定義関数の呼び出しをエラーにする指定を -Werror=implicit-function-declaration の形式他のオプションと同じにそろえて不要な置換処理を削除するリファクタリング

nobu:r39219 2013-02-13 17:51:25 +0900

io.c でいくつかの for(;;) によるループを do{}while() で書き換えています。

nobu:r39220 2013-02-13 17:51:27 +0900

io.c の ARGF のファイルを順に処理するループを FOREACH_ARGF() という関数マクロに切り出すリファクタリング

nobu:r39221 2013-02-13 17:56:42 +0900

configure で -Werror フラグで警告をエラー扱いにするように指示するオプションは開発版の時だけ有効になるようにしています。 開発版かどうかは version.h で RUBY_PATCHLEVEL が -1 に定義されているかどうかで判断しています。 clang でビルドできないという問題に対する対処のようです。 [ruby-core:52131] [Bug #7830]

nobu:r39222 2013-02-13 18:10:12 +0900

Method および UnboundMethod の inspect メソッドで表示されるメソッド名が alias したメソッドの時にオリジナルのメソッド名を表示してしまっていたのを修正しています。 [ruby-core:52048] [Bug #7806]

nobu:r39223 2013-02-13 18:12:04 +0900

r39222 の修正にも関連して、Method, UnboundMethod の name メソッドでは alias した後のメソッド名を取得するのに対して alias 元のオリジナルのメソッド名を取得する original_name というメソッドを追加しています。 alias されていないメソッドの場合は name と同じ結果を返すようです。 コミットメッセージに [EXPERIMENTAL] と記されているのでとりあえず入れてみたというもののようです。 [ruby-core:52048] [Bug #7806]

nobu:r39224 2013-02-13 18:38:49 +0900

同名のメソッドが定義された Module を prepend した Class の instance_method で UnboundMethod を得る時に prepend された Module に定義されたメソッドが取れてしまい、クラスのインスタンスメソッドを取得することができなくなる不具合を修正しています。 Object#method および Module#instance_method で Method や UnboundMethod を取得する時には prepend による IClass はスキップするようにしています。 [ruby-core:52160] [Bug #7836]

akr:r39225 2013-02-13 21:01:24 +0900

拡張ライブラリ socket の extconf.rb で socklen_t という型が定義されていなかったら -Dsocklen=int でコンパイラオプションでマクロとして定義を追加していたのを、HAVE_SOCKET_LEN_T をみて rubysocket.h で typedef するようにしています。