ruby-trunk-changes r44463 - r44473

今日は大晦日ですが少し変更多めで、ビルド関係の不具合修正、raise にキーワード引数 cause を追加して Exception#cause を明示的に渡すことができるようになる変更などがありました。
2013年も ruby-trunk-changes のご愛読ありがとうございました。それではみなさまよいお年を。

ayumin: r44463 2013-12-30 23:39:35 +0900

Module#class_variables の rdoc 用コメントのサンプルに引数を渡して呼ぶ例を追記しています。 [ruby-core:58847] [Bug #9210]

zzak: r44464 2013-12-31 04:47:59 +0900

r44463 の ChangeLog に [DOC] タグを追記しています。

svn: r44465 2013-12-31 04:48:05 +0900

version.h の日付更新。

nobu: r44468 2013-12-31 15:34:35 +0900

r44447 の追加修正だと思いますが tool/mkconfig.rb で config.status の値から MAJOR, MINOR, TEENY のバージョンの値を RbConfig へ渡すようにしているそうです。 RUBY_SO_NAME で必要だからとのこと。

nobu: r44469 2013-12-31 15:44:58 +0900

標準添付ライブラリ mkmf.rb で RbConfig::CONFIG の RUBY_SO_NAME の項目を展開するようにしています。 configure に --enable-shared を渡すとビルドに失敗するのを修正しています。 [ruby-core:59426] [Bug #9329]

nobu: r44470 2013-12-31 18:32:38 +0900

標準添付ライブラリ mkmf.rb の r44459 で CXXFLAGS の対応追加した部分で 1.8 で実行できるように nil ガードを追加しています。 BASERUBY が 1.8 の場合は mkmf.rb は 1.8 で実行される可能性があるため。mkmf.rb って古い Ruby でも動かないといけないんですね。

glass: r44471 2013-12-31 21:25:16 +0900

IO#write などの書き込む文字列を freeze した String オブジェクトを生成してから書き込むようにしていましたが(多分書き込み途中の String オブジェクトの操作によるバッファの変更の影響を避けるため)、その後で do_writeconv() で文字列の Encoding 変換が行なわれる可能性があるため、そこまで freeze するのを遅延して、変換が行なわれなかった時だけ freeze するようにしています。変換された時に freeze しないようにしているのはなぜかなぁ。多分変換時に別の String オブジェクトを作っているからだと思いますが ObjectSpace.each_object まで考慮するとこの時も freeze はしたほうが良いような気も。 あと変換が行われるケースで Frozenエラーが起きていたのではないかと思うのですがそのテストケースも欲しいですね。

arton: r44472 2013-12-31 22:12:23 +0900

win32/Makefile.sub から不要になったマクロ定義 HAVE_FSEEKO の config.h への出力を削除しています。

nobu: r44473 2013-12-31 23:49:16 +0900

2.1 からは例外発生時の $! をその例外の元の原因として格納しておいて、それをException#cause で取得できるようになっていますが、 Kernel#raise メソッドに省略可能なキーワード引数 cause を追加して、明示的に cause に格納する例外を渡すことができるようにしています。 例外処理の機構にも cause を伝播できるようにしているので割と大きめの変更になっています。 [ruby-core:58610] [Feature #8257]