ruby-trunk-changes r55138 - r55147

今日は rb_scan_args() のマクロ版のさらなる最適化(というかコンパイル時チェック強化?)や、OpenSSL::Cipher#key=, #iv= に長すぎる文字列を渡した時の挙動の変更などがありました。

shyouhei: r55138 2016-05-24 12:43:59 +0900

common.mk の COMMONOBJS のファイル名を辞書順にソートして、依存関係を追加しています。 tool/update-deps で更新したみたいですね。

svn: r55139 2016-05-24 12:44:00 +0900

version.h の日付更新。

nobu: r55140 2016-05-24 16:20:55 +0900

configure で gcc 拡張の attribute をチェックする RUBY_FUNC_ATTRIBUTE() で __error__ と __warning__ の時にこれらに展開するマクロはメッセージも渡すのでそれを受け付けるようにしています。

nobu: r55141 2016-05-24 16:28:34 +0900

r55140 の続き。ERRORFUNC() や WARNINGFUNC() にメッセージの他に関数名というか宣言を引数に受け付けるように修正しています。

naruse: r55142 2016-05-24 16:49:25 +0900

コンパイラオプション -fexcess-precision=standard や -fp-model precise を optflags ではなく cflags に追加するようにしています。 C++ の拡張ライブラリでうまくビルドできないことがあったようです。 [ruby-core:75658] [Bug #12409]

nobu: r55143 2016-05-24 17:18:47 +0900

include/ruby/defines.h に RUBY_FUNC_ATTRIBUTE() で ERRORFUNC() や WARNINGFUNC() が定義されなかった場合の代替マクロ定義を追加しています。

nobu: r55144 2016-05-24 18:52:14 +0900

rb_scan_args() のマクロ版でコンパイル時のチェックを強化するために format 文字列の内容をチェックするマクロを導入しています。なんかすごいことになってる…。ここにくる時に fmt はリテラルなので、コンパイル時に内容が決まっているはずなので、めちゃくちゃ頑張って展開しておいたらコンパイラコンパイル時にチェックしておいてくれる、というのを狙ったのかなと思います。

rhe: r55145 2016-05-24 21:39:57 +0900

拡張ライブラリ openssl で OpenSSL の内部的に使うための M_ という prefix つきのマクロを使っていたところを M_ なしの外部から使うためのマクロ(関数?)を使うようにしています。これにより不要な OPENSSL_malloc()/OPENSSL_free() でのメモリ領域の確保/解放を削除しています。 参考URL: https://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=CHANGES;h=bf61913d7b01212b4d8b2f3c13d71d645914f67c;hb=b6079a7835f61daa9fb2cbf9addfa86049523933#l878

rhe: r55146 2016-05-24 22:09:03 +0900

拡張ライブラリ openssl で OpenSSL::Ciper#key= や #iv= で短すぎる文字列には例外を発生させていましたが、長過ぎる文字列が渡された場合に勝手に切り詰めて使っていたのを、この場合も例外を発生させるようにしています。

kazu: r55147 2016-05-24 23:00:53 +0900

r55138 の ChangeLog エントリの空白除去。