ruby-trunk-changes r49568 - r49577

今日は Set#include? の高速化や Comparable#== の仕様変更などがありました。

normal: r49568 2015-02-12 04:04:16 +0900

標準添付ライブラリ set の Set#include? の高速化。 内部で使っている Hash のデフォルト値を false に指定しておくことで Hash#include? ではなくて Hash#[ ] を利用するようにしています。 これで高速化されるの? と思いましたが、Hash#[ ] は VM 命令での最適化があるので速いんですね。 [ruby-core:67664] [misc #10754]

svn: r49569 2015-02-12 04:04:36 +0900

version.h の日付更新。

eregon: r49570 2015-02-12 04:33:46 +0900

お久しぶりな eregon の Comparable#== がエラーを握り潰す問題の対応シリーズです。 過去のコミット群は [Feature #7688] を参照。 r44502 や r44644 あたりで <=> メソッドの例外をそのまま上げるようにしたのを一旦 r44646 や r46375 で警告に留めるようにしたのを、また例外を発生させるようにしているようです。 2.2 では互換性のため警告にしていたので 2.3 からはいよいよ例外をスルーさせるのでしょうか。

drbrain: r49571 2015-02-12 10:46:33 +0900

Proc#call の rdoc 用コメントの整形とサンプルコードに prc.() という記法の利用を追記。 https://github.com/ruby/ruby/pull/761

nobu: r49572 2015-02-12 11:02:57 +0900

configure.in で CFLAGS と LDFLAGS の組み立てで末尾の空白がはいらないようにしています。

nobu: r49573 2015-02-12 11:04:17 +0900

r49567 でデフォルトのヘッダ探索パスの include/ に対応する lib/ を追加するようにした件の続きで、 configure での LDFLAGS への -L/usr/lib の追加を抑制しています。

nobu: r49574 2015-02-12 11:47:29 +0900

test/drb/drbtest.rb のリファクタリング。テストメソッドの分割と例外の発生を assert_raise でチェックするようにしています。

nobu: r49575 2015-02-12 17:33:20 +0900

r49548 で Yosemite で openssl のテストが wrap mode をサポートしていないため失敗するのをスキップするようにしていたのですが、fedora21 でもこのテストがこけてたので確認のため assertion に例外メッセージを含めるようにしています。

nobu: r49576 2015-02-12 18:34:02 +0900

拡張ライブラリ openssl の extconf.rb で OpenSSL ライブラリの RAND_edg() という関数の存在確認をするようにして、未定義の時は対応するメソッドの定義をスキップしています。 libressl (多分 OpenSSL を fork した LibreSSL のことでしょう)対応のためとのこと。 https://github.com/ruby/ruby/pull/829

nobu: r49577 2015-02-12 18:36:55 +0900

拡張ライブラリ openssl の OpenSSL::Random のテストがなかったので random_bytes と pseudo_bytes の簡単なテストを追加しています。