ruby-trunk-changes r54890 - r54898

今日は elsif に TracePoint のイベントが発火しない不具合の修正や Complex 用の公開 C API の不具合修正などがありました。

normal: r54890 2016-05-03 06:04:17 +0900

fork で子プロセスを作った時に子プロセス側で signal handler を再初期化する disable_child_handler_fork_child() で SIGPIPE については POSIX_SIGNAL が偽の時に未初期化のまま handler 変数を使っていたので SIG_DFL で初期化するようにしています。

svn: r54891 2016-05-03 06:04:18 +0900

version.h の日付更新。

nobu: r54892 2016-05-03 10:22:18 +0900

eval.c の extract_raise_opts() の第2引数 argv に const 修飾子を追加しています。

nobu: r54893 2016-05-03 14:19:20 +0900

TracePoint で elsif の行でイベントが発行されない不具合を修正しています。 parse.y で IF ノードを作るときに NODE_FL_NEWLINE フラグを立てておくようにしています。 [ruby-core:67720] [Bug #10763]

naruse: r54894 2016-05-03 22:14:30 +0900

rb_popcount32() および rb_popcount64() で可能なら組み込み関数 __builtin_popcount() や __builtin_popcountll() を利用するようにして、この組み込み関数が使える場合は count_utf8_lead_bytes_with_word() で利用するように最適化しています。

naruse: r54895 2016-05-03 22:20:50 +0900

C の規格に沿っているか(おそらく古いコンパイラでビルドエラーになる文法をうっかり入れてしまわないようにするため)のチェックのためのコンパイラオプション -std=iso9899:1999 のかわりに -std=gnu99 を付けるように変更しています。こちらのほうが標準関数の inline 化が有効になって高速化できるということだそうです。 [ruby-dev:49605] [Feature #12336]

yui-knk: r54896 2016-05-03 22:54:19 +0900

complex.c の C API rb_complex_set_imag() でまちがって実数部にセットしていた不具合を修正。まじか。しかしこの関数は struct RComplex を隠すようにした時に拡張ライブラリ用に追加したものなので、本体では使われていませんでした。 [ruby-core:75333] [Bug #12343]

yui-knk: r54897 2016-05-03 23:12:02 +0900

internal.h で RCOMPLEX_SET_REAL() と RCOMPLEX_SET_IMAG() の関数マクロを定義するときに再定義の警告除去のため一旦 #undef するところで RCOMPLEX_SET_REAL を2度 #undef していたのでひとつを RCOMPLEX_SET_IMAG に修正しています。 [ruby-core:75333] [Bug #12343]

kazu: r54898 2016-05-03 23:31:40 +0900

Integer#pow の rdoc 用コメントで負の引数を与えた時の結果が Float ではなくて Rational を返すようになっているので(1.9 からだそうです。そうだったっけ)、サンプルコードの結果の表示を修正しています。 [ruby-dev:49606] [Bug #12339]