ruby-trunk-changes r48389 - r48402

今日は Windows 版での File#stat の高速化と、標準添付ライブラリ rexml の脆弱性の修正がありました。
これを受けて 2.1.5, 2.0.0-p598, 1.9.3-p551 がリリースされています。

https://www.ruby-lang.org/ja/news/2014/11/13/ruby-2-1-5-is-released/

https://www.ruby-lang.org/ja/news/2014/11/13/ruby-2-0-0-p598-is-released/

https://www.ruby-lang.org/ja/news/2014/11/13/ruby-1-9-3-p551-is-released/

hsbt: r48389 2014-11-12 22:30:58 +0900

添付されている RubyGems のバージョンを 2.4.2 から 2.4.3 に更新しています。 CA Root 証明書を追加しているだけみたいです。

hsbt: r48390 2014-11-12 22:50:17 +0900

gems/bundled_gems に記述されている、パッケージに同梱する gem パッケージのバージョンを test-unit を 3.0.6、minitest 5.4.3 に更新しています。

normal: r48391 2014-11-13 03:57:06 +0900

gc.c の構造体 struct heap_page でメンバの順番を入れ変えてアライメントをそろえて構造体サイズを小さくしています。

svn: r48392 2014-11-13 03:57:17 +0900

version.h の日付更新。

nobu: r48393 2014-11-13 11:56:14 +0900

st.c でコンパイル時のチェックのための STATIC_ASSERT を独自に定義していたのを internal.h を include してそこで定義されているものを利用するようにしています。そして STATIC_ASSERT の定義で gcc 4.6 以降では _Static_assert() というマクロ? が用意されているようでこれを利用するようにしています。

usa: r48394 2014-11-13 12:18:00 +0900

Windows 版での File#stat の実装 rb_w32_fstat()/rb_w32_fstati64() でタイムスタンプを取得しているのを環境変数 TZ がセットされていない時は省くようにしています。タイムゾーンの影響で取り直しが必要だからやっているらしくて、TZ がない時にこれを省くと File#stat が約 60% 高速になったとのこと。

nobu: r48395 2014-11-13 12:44:54 +0900

r48393 での internal.h の STATIC_ASSERT() の定義変更で #define が抜けてたので、修正しています。

headius: r48396 2014-11-13 14:31:00 +0900

拡張ライブラリ bigdecimalBigDecimal#* で nil とのかけ算をした時のテストケース(TypeError が発生する)を追加しています。

nobu: r48397 2014-11-13 18:10:40 +0900

rb_vm_make_proc() から lambda 型の Proc オブジェクトかどうかのフラグを渡す関数 rb_vm_make_proc_lambda() を切り出して proc_new() でも再利用するようにしています。

nobu: r48398 2014-11-13 18:50:16 +0900

rb_ensure() の古い TODO コメントを削除しています。 [ruby-core:66238] [misc #10502]

akr: r48399 2014-11-13 21:28:12 +0900

長らく未使用のままだった openssl のテスト用のファイル test/openssl/ssl_server.rb を削除しています。

akr: r48400 2014-11-13 21:46:58 +0900

openssl のテスト用ダミーサーバの起動メソッド start_server でポート番号を明示的に指定して起動するのはやめてシステムに空きポートを割り当てさせるようにしています。

akr: r48401 2014-11-13 22:04:43 +0900

標準添付ライブラリ monitor のテストで Thread の終了を待っているところを assert_join_threads を利用するように書きかえています。

nagachika: r48402 2014-11-13 22:29:50 +0900

標準添付ライブラリ rexml で REXML::Document#document メソッドを追加しています。 よく仕組みは理解していないのですが、r48161 で修正したパラメータエンティティの展開による DoS 可能な脆弱性と同様に、空の文字列を再帰的に展開させることで DoS 攻撃が可能な脆弱性がまだ残っており、document メソッドの追加によりこれを修正しています。