ruby-trunk-changes r44499 - r44507

今日は Struct の setter メソッドの戻り値の変更、Comparable#== の例外発生時の仕様変更、tk のビルドエラーの再修正などがありました。

kazu: r44499 2014-01-04 21:46:59 +0900

r44496 の ChangeLog エントリの空白が抜けていたところを修正しています。

kazu: r44500 2014-01-04 21:47:01 +0900

GC.latest_gc_info のテストで GC.stat を参照しているところで今は GC.stat が項目を引数に受け取るとその項目のみ返す機能があるので、その機能を利用するようにしています。

charliesome: r44501 2014-01-04 22:44:34 +0900

Struct の setter メソッドで Struct (のインスタンスであるクラス)のオブジェクトが返されていたので、代入した値を返すように変更しています。 代入演算子っぽいメソッドは一般的に右辺値を返すことが期待されているのでそれに倣うようにしたということですね。 [ruby-core:59509] [Bug #9353]

eregon: r44502 2014-01-05 20:14:59 +0900

r44453 の Object#== でのエラー時に false を返すように fallback するのをやめたのと同様に Comparable#== もその内部での <=> メソッドの呼び出しで例外が発生した時にそれを捕捉して false にしていたのをそのまま例外を外にみせるように変更しています。これに対応してテストも書き換えが必要になっています。そのままずばり <=> で例外が発生した時のテストもありますが、その他にもいくつかあって、おそらくこれまで例外が握りつぶされる挙動で気がつかなかったテストのバグじゃないかと思います。 [ruby-core:51389] [Feature #7688]

svn: r44503 2014-01-05 20:15:07 +0900

version.h の日付更新。

nobu: r44504 2014-01-05 21:33:40 +0900

configure で gcc の時のコンパイルオプションに -Werror=deprecated-declarations を追加しています。 deprecated にマークされた宣言の利用の警告をエラー扱いにするってことでしょうか。 Mac OS X だと割と頻繁におきそうですね。

nobu: r44505 2014-01-05 21:33:42 +0900

r44504 で deprecated な宣言をエラーにするようにしましたが、finite(3) という math ライブラリのマクロが deprecated になっていたので、isfinite() という C99 標準のマクロを利用するようにしています。

nobu: r44506 2014-01-05 21:35:44 +0900

昨日の r44498 の追加対応で configure での linker へのオプション -rpath と -R はどちらか使えることを調べてから RPATHFLAG に格納して使うようにしています。 ちなみに r44498 の変更は、-R が Mac OS X の最近の ld で使えなくなってたのでそれに対するパッチが MacPortsruby パッケージにあてられてたそうです。

nobu: r44507 2014-01-05 21:48:23 +0900

r44506 で configure で -R もしくは -rpath のオプションを変数に格納するようにしたのでそれを利用する mkmf.rb の libpathflag メソッド(これは元々あったようです)を拡張ライブラリ tk の extconf.rb で利用するように r44498 を再修正しています。