ruby-trunk-changes r51435 - r51450

今日は定数に depreceted の指定をして参照に警告を出させる Module#depracate_const というメソッドの追加などがありました。

normal: r51435 2015-07-30 04:54:12 +0900

dynamic symbol や Fixnum を Hash のキーとして使った時の Hash#[ ] の benchmark を追加しています。 [ruby-core:70129] [Bug #11396]

svn: r51436 2015-07-30 04:54:24 +0900

version.h の日付更新。

svn: r51437 2015-07-30 04:55:11 +0900

r51435 で新規追加されたファイルの svn property 設定。

normal: r51438 2015-07-30 08:55:23 +0900

st.c の static 関数の引数の st_table * の型に修飾子 const を追加しています。コードサイズの削減になるとのこと。そうなのか。

nobu: r51439 2015-07-30 10:42:35 +0900

Timeout.timeout が catch-throw を利用するようになったので、ファイルを load 中にそのスレッドに例外が raise で投げられ、そこで throw が発生するということが起こりうるようになっていて、その時ロードするファイル内での例外を捕捉するための仕組みが throw を想定していなくて SEGV する不具合を修正しています。 [ruby-core:70169] [Bug #11404]
なんか心なしかコミットメッセージの load 中に throw が発生するメカニズムの説明がドキュメンタリーちっくな気がします。

nobu: r51440 2015-07-30 11:52:57 +0900

r51439 の続きなのですが rb_load_internal0() で問題の分岐自体冗長だったので削除しています。 ファイルのロード中に発生した例外は捕捉して投げなおしていたのですが、 state での分岐後に th->errinfo をチェックしていたので、その前でのチェックが余計だったみたいです。 [ruby-core:70169] [Bug #11404]

nobu: r51441 2015-07-30 11:53:57 +0900

Thread.handle_interrupt で引数の例外クラスと抑制方法を現わす Symbol の Hash をチェックする時に内部的に利用する Hash オブジェクトを作ってコピーするようにしています。この Hash は VALUE 値をそのまま使うように rb_ident_hash_new() で作っています。

nobu: r51442 2015-07-30 12:17:56 +0900

r51419 で version.i は生成しないようになったので common.mk の make clean-local ターゲットの削除対象からも version.i を削っています。

nobu: r51443 2015-07-30 12:32:46 +0900

NEWS ファイルの Core classes updates の節の内容をアルファベット順にソートしなおしています。

nobu: r51444 2015-07-30 13:20:00 +0900

Module#deprecate_constant というメソッドを追加して、定数を参照すると警告を出すように指定する機能を追加しています。 rb_const_entry_t::flag にセットできるビットフラグ CONST_DEPRECATED を追加しています。またさっそくこの機能を利用して標準添付ライブラリ timeout で TimeoutError を deprecate に指定しています。 ライブラリ作者にとっても使える機能ですね。 [ruby-core:70142] [Feature #11398]

nobu: r51445 2015-07-30 13:33:00 +0900

テスト用のユーティリティ EnvUtil の assert_separately で起動する子プロセスの ruby に -w を付けるようにしています。また test/ruby/test_require.rb で未使用変数の警告抑制の修正をしています。

nobu: r51446 2015-07-30 13:43:23 +0900

r51434 での openssl のテストでの Thread leak 対策の Thread#join 呼び出しの追加で th 変数が nil だった時のことを考慮するようにしています。

nobu: r51447 2015-07-30 15:30:38 +0900

common.mk で $(BUILTIN_ENCOBJS) $(BUILTIN_TRANSOBJS) のターゲットに PHONY がついていたのですが、ここは実際のファイルに対する依存関係なので削っています。

nobu: r51448 2015-07-30 16:23:24 +0900

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

nobu: r51449 2015-07-30 16:56:02 +0900

r51441 の再修正。 rb_uninterruptible() で作成する mask も ident hash table にしています。

nobu: r51450 2015-07-30 16:56:20 +0900

test/ruby/test_settracefunc.rb で assert_ruby_status で書かれてたテストを assert_in_out_err を使って出力されるメッセージもチェックするように書きなおしています。