ruby-trunk-changes r41259 - r41289

今日はまず $SAFE = 4 機能が削除されています。また Refinements の Module#using が再度追加されています。その他 xmlrpc の修正、Mac OS X での IPv6 のソケットオプションが使えてなかった不具合修正、bignum.c まわりのリファクタリングなど盛り沢山です。

shugo:r41259 2013-06-12 23:20:51 +0900

ついに $SAFE = 4 の機能が削除されました。 $SAFE == 4 での tainted と untrusted のチェックを無効化しています。またこれに伴ない untrust/untrusted? は deprecated となり、内部的には taint/tainted? と同じフラグを使う全く同じものになっています。 [ruby-core:55222] [Feature #8468]

NEWS にも記述が必要ですね。 また doc/security.rdoc に untrust の解説があるので、そこにも影響があると思います。

shugo:r41261 2013-06-12 23:33:59 +0900

Module#using が追加されました。 Refinements の復活のはじまりですね! Module#using はその Class/Module の定義内でのみ有効な refine された Module を利用します。 [ruby-core:55273] [Feature #8481]

akr:r41264 2013-06-13 00:18:00 +0900

rb_integer_unpack_2comp() という関数を追加して(おそらく)2の補数表現のワード列から Bignum/Fixnum で数値を取り出せるようにしています。詳しい内容は省略。 で pack.c で String#unpack の実装にこの関数を利用するようにしています。

svn:r41265 2013-06-13 00:18:05 +0900

version.h の日付更新。

drbrain:r41266 2013-06-13 05:32:42 +0900

Mac OS X では IPv6 に関するソケットオプションが __APPLE_USE_RFC_3542 というマクロを定義した上でヘッダを #include しないと利用できなかったそうで、darwin 上では拡張ライブラリ socket の extconf.rb でのマクロを定義するコンパイラオプションを追加するようにしています。 [ruby-core:55453] [Bug #8517]

akr:r41267 2013-06-13 06:13:56 +0900

bignum.c の rb_integer_unpack() 関連の関数で clang で警告がでていたところを明示的なキャストを追加したり演算順序を変更して抑制するようにしています。 [ruby-core:55467] [Bug #8522]

kazu:r41268 2013-06-13 09:30:00 +0900

r41267 の ChangeLog エントリの typo 修正。

shugo:r41269 2013-06-13 11:01:42 +0900

r41259 の $SAFE=4 機能削除の影響で通らなくなっていたテストを削ったりしています。

akr:r41270 2013-06-13 12:20:28 +0900

bignum.c の rb_integer_pack()/rb_integer_unpack() 関連のソース内の #if 0 でくくっていたデバッグ用のコードを、デバッグ用途と明確にするため #ifdef DEBUG_INTEGER_PACK でくくるようにしています。

shugo:r41271 2013-06-13 14:41:44 +0900

r41259 で $SAFE=4 を削った時に untrust も deprecated になったため警告がでてエラーになることがあったテストを削ったり taint 系を使うように修正したりして対処しています。

nobu:r41272 2013-06-13 14:44:31 +0900

eval.c の make_exception() で argv[0] を利用しているところは最初にローカル変数 exc に代入しておいてそちらを使うようにしています。 r41041 あたりで修正した時のようにメソッド呼び出し時に argv[0] が書き変わる可能性があるとかでしょうか?

nobu:r41273 2013-06-13 14:51:14 +0900

include/ruby/ruby.h で rb_secure() に 4 が渡されていたらコンパイル時にチェックしてエラーにするようにしているみたいです。 gcc の 4.4 以降で使える __attribute__( ( error ) ) と __builtin_constant_p を使って定数だったらその範囲をチェックするようにしているみたいです。これは拡張ライブラリで rb_secure(4) を使っているところをチェックして変更を促すようにするためだと思います。

nobu:r41274 2013-06-13 16:33:12 +0900

bignum.c の警告除去のため明示的なキャストを追加しています。

akr:r41275 2013-06-13 18:35:05 +0900

bignum.c の bigdivrem() で最初に 1 になる最下位ビットの位置を計算するのに nlz() という既存の関数を利用するようにしています。

akr:r41276 2013-06-13 18:54:02 +0900

test/ruby/test_thread.rb の ThreadTest#test_thread_local_security で不要な Thread の生成をやめています。

usa:r41277 2013-06-13 18:56:52 +0900

bignum.c の integer_unpack_num_bdigits_generic() で VC++ での警告を抑制するために数値の計算の順序を入れ替えています。うーむこれなぜ警告の有無が変化するんでしょうね。

akr:r41278 2013-06-13 21:26:33 +0900

bignum.c の bigdivrem() で中間の Bignum オブジェクトの作成を削って直接バッファを ALLOCV_N() で確保するようにするリファクタリングです。

nobu:r41279 2013-06-13 21:30:19 +0900

r41278 の ChangeLog エントリの typo 修正。

nobu:r41280 2013-06-13 21:30:24 +0900

tool/ifchange の r40755 での変更により古い /bin/sh をもつ Solaris では動かなくなっていたのを修正しています。 [ruby-dev:47420] [Bug #8524]

akr:r41281 2013-06-13 22:02:34 +0900

bignum.c の bigdivrem() で BIGNUM_LEN(y) を呼んでいたところを事前にその結果を格納していた ny というローカル変数を参照するようにリファクタリングしています。

nobu:r41282 2013-06-13 22:03:30 +0900

FileUtils.rmdir のテストで :parents オプションのテストを追加しています。

nobu:r41283 2013-06-13 22:12:35 +0900

FileUtils.rmdir の :parents オプションでディレクトリツリーを遡って親ディレクトリも消す処理でループがうまく回っていなかったのを修正しています。

kou:r41284 2013-06-13 22:36:52 +0900

標準添付ライブラリ xmlrpc で r41257 で切り出して新しく作ったメソッド XMLRPC::Client#parse_set_cookies のリファクタリング

kou:r41285 2013-06-13 22:46:54 +0900

標準添付ライブラリ xmlrpc で複数の Cookie が Set-Cookie ヘッダで渡された時に上書きでなく重複して記述してしまっていた不具合を修正しています。
これ pairs.delete(cookie.name) は必要なんでしょうか。 pairs に既に cookie.name があっても次の Hash#[]= で上書きされるだけなのでわざわざ消さなくてもいいような気が。 [ruby-core:41711] [Bug #5774]

kou:r41286 2013-06-13 23:07:28 +0900

標準添付ライブラリ xmlrpc に XMLRPC::Client#http という Net::HTTP オブジェクトを取得できる reader を追加しています。 Net::HTTP を露出させて verify_mode を設定できるようにしたいためだそうです。 [ruby-core:55197] [Feature #8461]

zzak:r41287 2013-06-13 23:44:25 +0900

拡張ライブラリ bigdecimalBigDecimal#- と BigDecimal#sub の rdoc 用コメントを追記しています。またいくつか :nodoc: タグを追加しています。

akr:r41288 2013-06-14 00:15:07 +0900

bignum.c の bigdivrem() で引数 y の Bignum が 0 かどうか最初にチェックするところで BIGZEROP(y) でチェックしていましたが、このあとどのみちバッファ内の非0のワードの位置を探す処理があるので、それを前に移動して全て 0 だったら 0 除算例外発生にするようにリファクタリングしています。

svn:r41289 2013-06-14 00:15:11 +0900

version.h の日付更新。