ruby-trunk-changes r51409 - r51413

今日は拡張ライブラリ openssl のエラーメッセージ改善や Symbol の Hash のキーとして使う時の高速化、struct RClass の非公開化などがありました。

tenderlove: r51409 2015-07-28 03:29:17 +0900

拡張ライブラリ openssl の OpenSSL::SSL::SSLSocket#post_connection_check で接続先から証明書が得られなかった時のエラーが NoMethodError だったので、意味のあるメッセージを含む例外を発生させるようにしています。 [ruby-core:68330] [Bug #10910]

normal: r51410 2015-07-28 07:25:30 +0900

r45384 でのテーブルサイズに素数を使うのでなく2の累乗を使うようにした変更で dynamic hash の hash 関数が良い特性でないため遅くなってしまっていたのを改善しています。構造体 struct RSymbol は struct RVALUE に対してまだメンバに余裕があったので、hashval というメンバを追加して ID ベースではなく rb_str_hash() を使った hash 値計算をして、その結果を hashval にキャッシュしておくようにしています。 [ruby-core:70129] [Bug #11396]

nobu: r51411 2015-07-28 08:48:09 +0900

make test-all の並列テスト用の Test::Unit::Parallel::Worker#died で子プロセスがシグナルを受信して終了した場合は受信シグナルも表示するようにしています。

nobu: r51412 2015-07-28 08:48:40 +0900

configure.in での RUBY_FUNC_ATTRIBUTE マクロの引数に type, mode という第5,6引数を追加して、RUBY_DECL_ATTRIBUTE という名前にして、RUBY_FUNC_ATTRIBUTE はこれを利用するようにし、もうひとつ RUBY_TYPE_ATTRIBUTE という型に対する __attribute__ のチェックを行うマクロを追加しています。そして追加した RUBY_TYPE_ATTRIBUTE を利用して DEPRECATED_TYPE(mesg,x) というマクロ(こっちは preprocessor 用、だと思う)を定義させるようにしています。

nobu: r51413 2015-07-28 10:32:15 +0900

struct RClass の定義を include/ruby/ruby.h から internal.h に移動して非公開にしています。 そして r51412 で定義するようにした DEPRECATED_TYPE() をさっそく使って include/ruby/ruby.h では struct RClass を struct RClassDeprecated として定義して、利用すると警告が出るようにしています。