ruby-trunk-changes r31689 - r31703

今日は夜更新できないかもしれないので朝更新です。 OpenSSL::ASN1 の修正/仕様追加がありました。また Bignum の乗算の高速化がありました。

nobu:r31689 2011-05-22 18:26:02 +0900

ext/** の下のファイルの末尾の空白を除去。

nobu:r31690 2011-05-22 18:26:46 +0900

vm_xcalloc() を新設して ruby_calloc が calloc を利用するようにしています。

nahi:r31691 2011-05-22 19:17:46 +0900

r31680 で openssl がコンパイルできなくなっていたので、RCLASS_SUPER() を利用していたところを rb_class_superclass() を呼ぶようにしています。 RCLASS_SUPER() は struct RClass の rb_classext_t 構造体の内容を利用するのですが、r31627 でその宣言が internal.h に隠されたので利用できなくなっていました。

nahi:r31692 2011-05-22 21:52:18 +0900

r30508 のファイルシステムが大文字小文字を区別しない時に require の重複を防ぐための $LOADED_FEATURES のチェックも大文字小文字を区別しないようにする修正を revert しています。1.9 では expand_path したパス名を $LOADED_FEATURES に格納するため、元々重複して require する不具合はなかったんだそうです。 [Bug #4255]

emboss:r31693 2011-05-22 21:58:23 +0900

OpenSSL::ANS1::XXX の初期化のために利用する内部的な Hash の初期化のところで数値の直書きしていたのを定数マクロを利用するように修正しています。

emboss:r31694 2011-05-22 23:27:02 +0900

さらに OpenSSL::ASN1 で rb_intern() で毎回 Symbol を取得していたのを最初に変数に格納しておいて利用するようにしてパフォーマンスを改善しています。

mrkn:r31695 2011-05-23 00:37:00 +0900

多倍長整数(Bignum)の乗算に Toom3 乗法というアルゴリズムを利用しているそうです。 これで Bignum の乗算、累算や Rational の処理が高速になるそうです。 [ruby-list:47675]

svn:r31696 2011-05-23 00:37:03 +0900

version.h の日付更新。

emboss:r31697 2011-05-23 03:48:31 +0900

ext/openssl/ossl_asn1.c で不要だった変数を除去。

emboss:r31698 2011-05-23 04:08:45 +0900

OpenSSL::ASN1 の to_der で EOC が抜けている時に自動で挿入するようにしています。

emboss:r31699 2011-05-23 04:38:05 +0900

OpenSSL::ASN1 の初期化時に taggingnil を渡した時の不具合を修正。

emboss:r31700 2011-05-23 06:01:13 +0900

OpenSSL::ASN1 で infinite length を持つ値のデコードの不具合修正&リファクタリング [ruby-core:35123] [Bug #4374]

emboss:r31701 2011-05-23 06:34:28 +0900

OpenSSL::ASN1 の初期化時のクラスチェックを追加して不正な値を渡された時に SEGV などするのを防ぐ。

emboss:r31702 2011-05-23 07:00:24 +0900

同じく Array を期待しているところで Array 以外のものが来た時に例外を発生させるようにガードを入れています。
こういうところは to_ary を呼ぶなどするほうがいいんじゃないでしょうかね。 rb_convert_to_ary() だったかな?

emboss:r31703 2011-05-23 07:22:16 +0900

NEWS ファイルに OpenSSL::ASN1 の機能追加について追記。