ruby-trunk-changes r53528 - r53535

今日は openssl で DH鍵の 512 bit 鍵長のサポート削除と global_variables の返す変数の $1〜$9 などの特殊変数の扱いの変更などがありました。

nobu: r53528 2016-01-14 11:15:00 +0900

Hash#initialize_copy で flags の HASH_PROC_DEFAULT をコピーするために、オリジナルの Hash のフラグがで分岐していたのを、一旦 FL_UNSET() でクリアしてオリジナルのフラグをそのままセットするようにして分岐を削り、また FL_SET_RAW() を用いて special constant のチェックを省くようにして最適化しています。

svn: r53529 2016-01-14 11:15:01 +0900

version.h の日付更新。

nobu: r53530 2016-01-14 11:45:03 +0900

Kernel#global_variables というメソッドでグローバル変数をリストアップする時に $1〜$9 という特殊な変数名が含まれていましたが、これは正規表現マッチが行なわれて $~ が存在する時にだけ含めるようにしています。

hsbt: r53531 2016-01-14 15:09:19 +0900

拡張ライブラリ openssl から 512-bit の DH 鍵 OpenSSL::PKey::DH::DEFAULT_512 を削って OpenSSL::SSL::SSLSocket#tmp_dh_callback での鍵長 512 のサポートを削っています。 https://github.com/ruby/ruby/pull/1196 [ruby-core:72766] [Bug #11968]

nobu: r53532 2016-01-14 16:10:48 +0900

Kernel#sprintf のテストでフォーマット指示子の prec と length の指定をループで生成するところで、直接表記の文字列の配列を生成してループを回すようにしています。また length のほうは 0 を明示的に書くというパターンが抜けてたのでそれも追加されています。

nobu: r53533 2016-01-14 16:12:42 +0900

Kernel#sprintf の %f 指示子に Bignum で大きな数を渡した時に、Rational の時と同様に正確な数値を表示するようにしています。

nobu: r53534 2016-01-14 17:36:49 +0900

r53530 の global_variables の返すリストに含まれる $1〜$9 の変数について、単に正規表現マッチしたかどうかだけでなくて、実際に後方参照がいくつめまで存在しているかを rb_match_count() と rb_match_nth_defined() で調べて返すようにしています。つまり $10 以上の変数も存在する可能性はあるんですね(この特殊変数での参照は 1桁しかだめなんだと思ってました)。

naruse: r53535 2016-01-14 20:20:24 +0900

標準添付ライブラリ uriURI::Generic#to_s で frozen_string_literal: true 対策で String.new を使って文字列を生成するようにした影響で Encoding が ASCII-8BIT になっていたので、''.dup を利用するように修正しています。 https://github.com/ruby/ruby/pull/1188