ruby-trunk-changes r38751 - r38767

今日は利用されてない配列リテラルが要素に副作用のある式を含んでいても消されてしまっていた不具合の修正や Psych の修正、IA64 アーキテクチャでのビルドエラー修正などがありました。

ko1:r38751 2013-01-10 03:38:41 +0900

配列リテラルが代入やメソッドの引数に使われていなくてリテラルのみの単文のみの場合命令列にコンパイルする時にそれを省く最適化をしているのですが、配列の要素にメソッド呼び出しなど副作用のある処理が書かれていたら省略してはいけないので、配列作成は省略しても内容はそれぞれ再帰的にコンパイルするようにしています(リテラルの要素がさらにただのリテラルだったらそれも省略されるので結果的に全て消える、ということだと思います)。

svn:r38752 2013-01-10 03:38:45 +0900

version.h の日付更新。

tenderlove:r38753 2013-01-10 04:26:36 +0900

拡張ライブラリ psych の parse の修正です。 コミットメッセージによると encoding の扱いの修正みたいですがその他 String を継承したクラスのオブジェクトを dump する時に必ずタグつきの出力にするようにする修正もあるようです。

tenderlove:r38754 2013-01-10 04:26:45 +0900

拡張ライブラリ psych で浮動小数点の "1." のように小数点のみで終わっている表記の時にそれを取り除いて Float() に渡すようにして例外が発生するのを回避しています。 YAML の小数点数は小数部のみを省略可能なんですね。

tenderlove:r38755 2013-01-10 11:16:00 +0900

DTrace の probe のインタフェースに LOAD_RETURN, REQUIRE_RETURN にファイル名と行番号を追加しています。また probe.d に各 probe の説明のコメントを追記しています。

mrkn:r38756 2013-01-10 15:30:23 +0900

numeric.c の do_coerce で coerce メソッドの呼び出しを rb_rescue() を使って行なっていたところを rb_check_funcall() を使って余分な例外の発生を抑制するパフォーマンスの最適化を行っています。 [ruby-core:51213] [Bug #7645]
v は (rb_raise が NORETURN なので効かないかもしれないけど) RB_GC_GUARD() していたほうがいいかもしれませんね。

shugo:r38757 2013-01-10 15:39:55 +0900

r38755 の probe.d に追記したコメントによりコンパイルに失敗していたので tool/gen_dummy_probes.rb でコメント部分を除去して処理するようにしています。

kazu:r38758 2013-01-10 15:49:25 +0900

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

shugo:r38759 2013-01-10 15:57:17 +0900

numeric.c の do_coerce() から不要になったローカル変数を削除しています。

nobu:r38760 2013-01-10 16:47:20 +0900

拡張ライブラリ tk の extconf.rb で tcl のバージョンチェックのために try_cpp を使っている部分を have_header を使うように変更しています。 VC で try_cpp が遅いためだそうです。

shugo:r38761 2013-01-10 16:51:35 +0900

メソッドの中で instance_eval を呼び出してその中で super を呼び出すと、親クラス/モジュールのメソッドが呼ばれるのに self は instance_eval で切り替えた self のままという状態になってしまうため、NotImplementedError を発生させていたのですが、実装をあきらめて禁止することにしたので TypeError を発生させるようにしています。 [ruby-dev:39772] [Bug #2402]

eregon:r38762 2013-01-10 17:12:58 +0900

numeric.c の do_coerce() のインデントの修正とコメントの削除をしています。ここの "dummy" というコメントはこの return は実際には到達しない(rb_raise() の後なので)けどコンパイラの警告避けのために書いているということだと思うので "not reached" とか書いておいてもいいと思いますけど。

nobu:r38763 2013-01-10 17:44:19 +0900

win32/rm.bat で -r オプションが指定されていたときに shift でコマンドライン引数をひとつ進めるのを忘れていたため無限ループに陥っていた不具合を修正しています。

nobu:r38764 2013-01-10 17:45:42 +0900

configure が再実行された時など(?) Makefile を再生成した時に前の Makefile を取っておいて変更がなければ処理を続行するようにしています。

takano32:r38765 2013-01-10 19:45:05 +0900

r38144 以降 IA64版の RB_GC_SAVE_MACHINE_REGISTER_STACK() に文法エラーがあってコンパイルできていなかったのを修正しています。

takano32:r38766 2013-01-10 21:05:40 +0900

IA64 で swapcontext(3) を使った Fiber がうまく動いてなかったそうで #defined(__ia64) の時は FIBER_USE_NATIVE を 0 に定義するようにしています。

nagachika:r38767 2013-01-10 21:29:48 +0900

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