ruby-trunk-changes r38349 - r38363

今日は UnboundMethod#bind を Module のメソッドは継承関係のチェックなしで実行できるようにした変更、RDoc の修正、File.join のエンコーディングの処理の修正などがありました。

ko1:r38349 2012-12-13 11:27:58 +0900

r38340 の一部で rb_method_type_t の enum の最後に VM_METHOD_TYPE__MAX を置いたのを revert しています。やっぱりこれは最後の要素を固定することで要素を追加するたびにカンマを追加しなくていいようにするためだったんですね。 rb_method_type_t は数値ではないので ???_MAX という名前は誤解をまねくということで revert しています。

svn:r38350 2012-12-13 11:28:02 +0900

version.h の日付更新。

shugo:r38351 2012-12-13 12:09:22 +0900

gcc 4.6 の -Wunused-but-set-variable オプションをつけると bigdecimal.c の ENTER() マクロで宣言される変数が警告されるので __attribute__ ((unused)) を使う RB_UNUSED_VAR() というマクロを include/ruby/ruby.h で定義してこれを使うことで警告を抑制しています。

nobu:r38352 2012-12-13 12:38:00 +0900

コミットログは svn property の設定っぽいですが ChangeLog の行末の空白の除去です。ボットが自動で処理してるそうなのでちょっとコミットログが合わなかったみたいですね。

nobu:r38353 2012-12-13 12:50:19 +0900

enum の最後の要素として置いて使うための END_OF_ENUMERATION() というマクロを定義しています。 __GNUC__ が定義されていたら最後の要素にカンマがついていてもいいので空に定義されて、そうでなければ無意味な最後の要素を定義するようにしています。これを rb_method_type_t に使っています。そこまでして enum の要素追加時の前の行のカンマ追加を避けたいとは。

nobu:r38354 2012-12-13 13:06:40 +0900

UnboundMethod に bind メソッドを呼んでオブジェクトに結びつけて Method にするにはそのオブジェクトのクラスと UnboundMethod のもとのクラスが継承関係にないといけないのですが、Module に定義されたメソッドから作った UnboundMethod はこの制限によらず bind できるように制限を緩めています。 [ruby-core:34267] [Feature #4254]

usa:r38355 2012-12-13 14:02:55 +0900

File.join に異なるエンコーディングの文字列を渡した時の考慮が抜けていたので修正しています。

usa:r38356 2012-12-13 14:11:02 +0900

r38348 で Dir.mktmpdir でパスを作る時に File.join を使うようにしたためにファイルパスのエンコーディングが変化する可能性があったので、test/ruby/test_require.rb で $LOADED_FEATURE に格納される文字列のエンコーディングをチェックしているのは、エンコーディングの一致を確認するのではなく Encoding.compatible? で互換性があるエンコーディングになっていればいいようにテストを修正しています。

shugo:r38357 2012-12-13 14:12:55 +0900

Marshal.load に tainted な文字列からロードした時に関連する Class/Module も taint されてしまっていましたが、Class/Module は名前から対応をつけるだけで実体をロードするわけではないので taint しないようにしています。 [ruby-core:49198] [Bug #7325]

zzak:r38358 2012-12-13 14:22:30 +0900

doc/irb/irb.rd から irb のドキュメントを移動したり追記したりで lib/irb* の rdoc 用コメントを追記しています。 いつもお疲れさまです。

zzak:r38360 2012-12-13 14:25:15 +0900

r38358 で doc/irb/irb.rd を削除し忘れてたのを削除しています。

naruse:r38361 2012-12-13 15:16:14 +0900

test/xmlrpc/test_webrick_server.rb でテストに使うポート番号を test/xmlrpc/test_cookie.rb で使ってたのと被っていたので1つずらしています。

drbrain:r38362 2012-12-13 16:58:47 +0900

RDoc で C のソースから読み込んだ Class/Module の VALUE を格納した C の変数名の管理方法の修正して C から読み込んだ Class/Module のコメントの重複を修正しているとのことです。

shugo:r38363 2012-12-13 18:41:17 +0900

r38357 の ChangeLogtypo 修正。