ruby-trunk-changes r36262 - r36269

今日は Date の Marshal.load が古いフォーマットもロードできるようにする修正や Module#prepend に関する不具合修正などがありました。

ayumin:r36262 2012-07-02 03:43:59 +0900

README.EXT.ja の create_makefile() と have_struct_member() のオプション引数の追記をしています。 [Bug #6597]

svn:r36263 2012-07-02 03:44:04 +0900

version.h の日付更新。

tadf:r36264 2012-07-02 05:37:38 +0900

Date の Marshal.load で古いフォーマットでダンプした結果もロードできるようにしているようです。
こういうのはテストが(というかテストが正しいか確認するのか)難しいですねぇ。

tadf:r36265 2012-07-02 05:56:50 +0900

DateTime#strftime に %s や %Q を渡した時に 32bit 環境で int に収まりきらないくらい過去の日時だとアンダーフローする不具合を修正しています。 [ruby-core:46058] [Bug #6683]

nobu:r36266 2012-07-02 17:06:37 +0900

先週 Module#prepend が追加されたのですが、Module#ancestors が返すクラス/モジュール順序や Class が挿入されたりする不具合を修正するため、prepend した時にクラスのメソッドテーブルを移す IClass の klass を元のクラスオブジェクトを指すようにして、また prepend と include を併用した時に include したモジュールが挿入される位置などを修正しています。 [ruby-dev:45868] [Bug #6662]
prepend したクラスの構造は元々のクラスの RCLASS_ORIGIN() がメソッドテーブルを移植した IClass を指して、その IClass の basic.klass が元々のクラスを指すという相互参照ができています。

nobu:r36267 2012-07-02 17:07:01 +0900

r36266 の struct RClass の構造の追加に .gdbinit を追随させて、gdb で情報を表示するようにしています。

akr:r36268 2012-07-02 21:26:50 +0900

Time の localtime や strftime などで値のチェックに使う timew_out_of_timet_range() という関数に sizeof(time_t) と sizeof(int64_t) が一致している場合の最適化処理を入れています。

akr:r36269 2012-07-02 22:15:29 +0900

Thread#[ ] や Thread#[ ]= でシンボルをキーとして値を格納できる Thread Local Storage と呼んでいるものは実際には Fiber Local で Fiber 毎に別の値を持つようになっているのですが、これがまぎらわしいということで rdoc 用コメントにその点を追記しています。 [ruby-core:41606] [Bug #5750]
チケットでは Fiber#[ ] や Fiber#[ ]= を追加して Thread のほうは本当に Thread Local にすればいいじゃんという提案だったのですが、互換性を重視して 2.0 では仕様は変更せずドキュメントへの追記という対応になっています。