ruby-trunk-changes r33474 - r33484

今日はなんと言っても trunk のバージョンが 2.0.0 に変更されました!ついに Ruby 2.0 の誕生です。

nobu:r33474 2011-10-18 23:05:51 +0900

Ripper で自動生成される C のソースコード内の ripper_init_eventids1() という関数から PARSER_EVENT_TABLE という定数の Hash にシンボルと引数の数(?)の対応を格納する部分を ripper_init_eventids1_table() という関数に切り分けて、Init_ripper() と InitVM_ripper() という拡張ライブラリのエントリポイントの関数で使い分けるようにしています。定数へのセットを含む ripper_init_eventids1_table() は ObjectSpace が異なる VM 毎に実行しないといけないので InitVM_ripper() の中で実行。
ところで InitVM() は include/ruby/ruby.h で定義されているマクロで、InitVM(ext) のようにすると InitVM_ext(); のプロトタイプ宣言+呼び出しするものです。他に InitVM_foo() を利用している拡張ライブラリは標準添付では io/console だけですね。あと Init_foo() の中では InitVM_foo() を呼ばないといけないみたいです。おそらく MVM が導入されたら最初にロードした以外の VM は InitVM_foo() だけ呼ばれるようになるのでしょう。

nobu:r33475 2011-10-18 23:07:32 +0900

vm_core.h で ruby_current_thread の宣言の RUBY_EXTERN をただの extern に変更しています。コミットログによると propeprofiler のためにこうなっていたみたいで、既に probeprofiler は削除されているので直した、というふうに読めます。 RUBY_EXTERN は include/ruby/defines.h で RUBY_EXPORT が定義されている時は extern に定義されていて、RUBY_EXPORT は configure で(たぶん常に)コンパイルオプションに -DRUBY_EXPORT が定義されるようです。と、言うことは今 RUBY_EXTERN を使っているところ(かなりあります)はどれも extern にしてしまっていいんでしょうか?
[追記] Windows 版の場合 win32/Makefile.sub で生成されるヘッダファイルで RUBY_EXTERN が定義されていました。「/追記]

nobu:r33476 2011-10-18 23:28:58 +0900

hash.c と st.c にあった st_hash_type の identhash と type_numhash は内容が同じだったので st_hashtype_num として共有するようにしています。

emboss:r33477 2011-10-19 10:15:35 +0900

openssl の未使用変数の削除。また rb_thread_blocking_region に渡す関数の返り値が void になっていたので VALUE 型を返す関数として定義しなおし。返り値は利用しないので nil(Qnil)。

svn:r33478 2011-10-19 10:15:41 +0900

version.h の日付更新。

drbrain:r33479 2011-10-19 10:52:56 +0900

ext/-test-/symbol/ の svn:ignore property に無視するファイル追加。

drbrain:r33480 2011-10-19 11:07:50 +0900

enum.c の rdoc のサンプルコードの {|args| ... } のようなブロックを { |args| ... } のようにブロック引数の前に空白を入れる表記に変更しています。うーむ、慣れない……。 [ruby-core:39886] [Bug #5393]

drbrain:r33481 2011-10-19 11:32:39 +0900

error.c の rdoc に標準の例外クラスの継承ツリーを追記しています。 [ruby-core:40121] [Bug #5438]

drbrain:r33482 2011-10-19 11:52:38 +0900

error.c の rdoc に例外クラスの継承関係と rescue の関係や特殊変数 $!, $@ の説明、ライブラリでの例外クラス定義の推奨などが追記されています。
$! と $@ の説明の "When an exception has been raised but not yet handled..." ってあるんですけど、rescue 節の中は "not yet handled" なんですかね? そこで例外を止めることもできるから "handling" のような気もする。

matz:r33483 2011-10-19 17:07:34 +0900

ついに Matz 直々に RUBY_VERSION が 1.9.4 から 2.0.0 に変更されました! 1.9.4 はなして次のリリースは 2.0 ということになります(多分 2.0.0)。 2.0 かー。やっぱり感慨深いですね。