ruby-trunk-changes r43949 - r43957

今日は Windows 環境でのビルドエラー修正や RubyGems の拡張ライブラリインストール時の不具合修正、net/smtp の不具合修正などがありました。

zzak:r43949 2013-12-01 22:17:27 +0900

doc/contributors.rdoc を追加してパッチを送ってくれた人などの contributors について書いています。これも Wiki からの移植だと思います。zzak さんによると最近の Wiki からの移植はリポジトリのほうを master にしてこちらをメンテナンスしていくようにするそうです。

usa:r43950 2013-12-02 00:55:56 +0900

Windows 版で環境変数を取得する時にエンコーディングの利用を必須にしていたため miniruby で必要なエンコーディングがない時にエラーになるためビルド失敗していた不具合を修正しています。 [ruby-core:58732] [Bug #9189]
usa さんに伺ったところによると「とりあえずminirubyの場合に限り、getenvとruby_setenvの想定するencodingのねじれを場当たり的に解消した」というものだそうです。(参考ツイート)

svn:r43951 2013-12-02 00:56:02 +0900

version.h の日付更新。

sorah:r43952 2013-12-02 02:06:56 +0900

r43913、r43914 の caes 文で内部的に呼ばれる === メソッドについてのテストで、BasicObject を継承したクラス(=== が実装されていない)を when 節に置くと NoMethodError になるテストケースを追加しています。

drbrain:r43953 2013-12-02 05:52:57 +0900

RubyGems の最新版をマージしています。 拡張ライブラリのインストール時に lib/ の下にコンパイルした共有ライブラリをコピーする時にサブディレクトリの下までコピーするようにする修正です。 [ruby-core:58306] [Bug #9106]

drbrain:r43954 2013-12-02 14:18:04 +0900

標準添付ライブラリ net/smtp で Net::SMTP#critical がエラー時に Net::SMTP::Response ではなくて文字列を返していた不具合を修正しています。 [ruby-core:58418] [Bug #9125]

a_matsuda:r43955 2013-12-02 14:36:00 +0900

標準添付ライブラリ csv の rdoc コメントの typo 修正。

charliesome:r43956 2013-12-02 17:26:29 +0900

Module#constants は引数に include した Module の定数も含めるかどうかを指定できるのですが Module#constants(false) として呼んだ場合はその Module/Class で定義されている定数のみ返すため、struct RClass が持つ定数のテーブルを直接参照して定数名リストを作ることで中間データの st_table を作るのを省くようにしています。 これにより Module#constants(false) が高速化され、チケットの報告によると rails の起動が 5% くらい高速に(6.3sec -> 6sec)なるそうです。 [ruby-core:58786] [Feature #9196]

glass:r43957 2013-12-02 21:59:31 +0900

r43942 で Hash の rehash 時に hash メソッドで例外など大域脱出が発生した時のメモリリークを rb_protect() を使って修正しましたが、そうではなくて rb_hash_new() で Hash オブジェクトを作ってそれに st_table を格納して GC に管理させることでメモリリークを防ぐ方法に変更しています。 rb_str_tmp_new() でバッファを作る時のような方針ですね。もちろん処理後は生成した Hash オブジェクトから元の Hash へ st_table は参照を移動しています。 [ruby-core:58728] [Bug #9187]