ruby-trunk-changes r56999 - r57013

今日は Array#sum の Float の時の誤差蓄積の軽減や hash 関数の戻り値の範囲の修正などがありました。

kazu: r56999 2016-12-06 21:49:46 +0900

compile.c の COMPILE_POPED() というマクロの名前を COMPILE_POPPED() と修正しています。 https://github.com/ruby/ruby/pull/1498

mrkn: r57000 2016-12-06 21:54:19 +0900

round メソッドのキーワード引数 half に渡された引数のチェックの例外メッセージで nil が渡された時のメッセージに nil を表示するように特別扱いするようにしています。そのほかも poped -> popped に修正。

mrkn: r57001 2016-12-06 22:40:31 +0900

Array#sum で Float の加算の時に Kahan's compensated summation というアルゴリズムを使って誤差を軽減するようにしていたのを Kahan-Babuska balancing compensated summation という改善版に修正しています。 [ruby-core:77771] [Feature #12871]

nobu: r57002 2016-12-06 22:57:23 +0900

r55038 で rb_vm_t の trace_running というメンバを bit field にしたのですが byebug がこのメンバがカウンターであることに依存していたそうで int 型に戻しています。 [ruby-core:78514] [Bug #13011]

kou: r57003 2016-12-06 22:57:56 +0900

標準添付ライブラリ rexml で REXML::Element#[] の引数に String か Symbol が渡された場合に対応する attribute name の要素を返すように拡張しています。

svn: r57004 2016-12-06 22:57:57 +0900

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

kazu: r57005 2016-12-07 00:33:47 +0900

doc/extension.ja.rdoc のインデント修正のみ。

kazu: r57006 2016-12-07 00:33:49 +0900

doc/extension.rdoc および doc/extension.ja.rdoc のタブを空白に展開しています。 https://github.com/ruby/ruby/pull/1497

usa: r57007 2016-12-07 11:03:40 +0900

win32/file.c の rb_default_home_dir() で変数 dir の const 修飾子を外しています。 この中で dir に対して xfree() を呼んでて、ruby_xfree() に渡す引数の型は const がついてないので型が一致していなかったみたいです。

svn: r57008 2016-12-07 11:03:41 +0900

version.h の日付更新。

nobu: r57009 2016-12-07 11:19:29 +0900

新しい Cygwin では NTFS の挙動をしなくなっているとのことで USE_NTFS を 0 に定義するようにしています。 [ruby-core:78497] [Bug #13008]

shugo: r57010 2016-12-07 11:41:00 +0900

Solaris unstable10s での RubyCI のテストのタイムアウトを解消するため test_deadlock_by_signal_at_forking と test_require_with_loaded_features_pop の子プロセスの終了待ちのタイムアウト制限を緩めています。

nobu: r57011 2016-12-07 12:19:33 +0900

win32/win32.c で変数への再代入を含んでるマクロ REALLOC_N() というマクロの戻り値をさらにポインタ変数に再代入していてコンパイラの警告が出てたそうなので、不要な再代入を削ってます。

nobu: r57012 2016-12-07 13:25:50 +0900

any_hash() の戻り値を st_index_t から long に変更しています。 rb_obj_hash() で ST2FIX() で Fixnum の範囲に収まる前提で変換しているので st_index_t だと Bignum の範囲になる可能性があって問題があったみたいです。(ちなみに ST2FIX() も LONG2FIX() ですかね)

nobu: r57013 2016-12-07 17:44:34 +0900

compile.c の DECL_ANCHOR(), INIT_ANCHOR() で引数の変数をポインタでなく配列として宣言するように展開するように変更しています。また関数の引数の LINK_ANCHOR の型に const 修飾子を追加しています。また iseq_compile_each() で不要な戻り値のチェックを削ったりしています。