ruby-trunk-changes r33900 - r33911

今日は mkmf.rb のメソッド等が MakeMakefile モジュールの中で定義されるように変更されています。

tenderlove:r33900 2011-11-30 09:10:31 +0900

Psych.parse に省略可能な第2引数を追加して、エラーメッセージを作るために使うファイルパスを指定できるようにしています。通常は第一引数の path メソッドがあればその結果を、なければ "" を使っていました。

svn:r33901 2011-11-30 09:10:36 +0900

version.h の日付更新。

usa:r33902 2011-11-30 09:13:02 +0900

Windows 版で rdoc が binread でファイル読み込みするため改行コードが "\r\n" になっているので、これを "\n" に変換する処理を入れています。これに伴ないテストで同じような workaround していたのをやめています。

drbrain:r33904 2011-11-30 09:57:24 +0900

昨日の mkmf.rb を MakeMakefile モジュールの中に入れる修正を再度入れています。そして test/ruby/test_module.rb のテストで Object が MakeMakefile を include しているせいで失敗するテストの対処も入れています。

naruse:r33905 2011-11-30 12:20:04 +0900

mkmf.rb のモジュール化の影響で RUBYOPT=-w をつけた状態だとさらに rubygems のテストが失敗していたので、グローバル変数の初期化を追加しています。

nobu:r33906 2011-11-30 12:32:05 +0900

test/ruby/test_module.rb で Module#ancestors のテストのために、Object に include されている可能性のあるモジュールを除外する処理を個別に書いていたのですが、おもいきって Object.ancestors から期待している Class/Module 以外を一括で除外してしまってチェックするようにしています。
このテストを子プロセスできれいな状態で実行できればいいんでしょうけど。

duerst:r33908 2011-11-30 20:03:22 +0900

io.c の rb_econv_binmode() という Windows 版での改行コード変換モードの設定処理している関数のリファクタリングをしています。 cygwin での警告を回避ということです。
元のコードは get_transcoder_entry() が返す transcoder_entry_t の transcoder フィールドが NULL であった場合を考慮しているようなのですが、新しいコードではチェックせずに使っていてこれは OK なのか……と思いましたが、多分 enc/trans/newline.trans というファイルで rb_universal_newline/rb_crlf_newline/rb_cr_newline についてrb_register_transcoder() を呼んでいそうなので大丈夫そうです。このファイルはビルド時に生成される newline.c というソースコードに展開されるようです。まだまだ ruby には知らないことがたくさんありますねぇ。

naruse:r33909 2011-11-30 23:44:06 +0900

C の API の rb_path2class() (A::B といった表記から Class/Module を取得する)で、未定義だったんだけど path の最後の名前(basename に相当するもの)がトップレベルに存在する名前だと、ArgumentEror が発生すべきところが NameError が発生するのを修正しています。 [ruby-core:41410] [Bug #5691]

naruse:r33910 2011-12-01 00:19:02 +0900

r33906 で Module#ancestors のテストで Object に include されているモジュールを除外するようにしましたが、json が String に JSON::Ext::Generator::GeneratorMethods::String を include することもあるので、それも除外するようにしています。ううむ。

svn:r33911 2011-12-01 00:19:11 +0900

version.h の日付更新。