ruby-trunk-changes r56804 - r56820

昨日うっかり更新を忘れていたので2日ぶんです。Complex の最適化や標準添付ライブラリ logger をデーモンでないプロセスで使った時の log rotate タイミングの不具合修正などがありました。

kazu: r56804 2016-11-16 00:04:56 +0900

r56792 で変更していた Queue のテストでチェックに使っている正規表現が "|" を含んでいたのですが、優先順位の問題で \A と \Z も含んで選択になっていたので、 run または sleep のみにマッチするようにかっこを追加しています。元々あった正規表現も間違っていたようです。また assert のメッセージの typo もついでに修正しています。

svn: r56805 2016-11-16 00:04:57 +0900

version.h の日付更新。

hsbt: r56806 2016-11-16 11:51:26 +0900

拡張ライブラリ psych のコメントの typo 修正。trunk に入っていたものを upstream に入れてそこから cherry pick してきたみたいです。 [ruby-dev:49879] [Bug #12942]

hsbt: r56807 2016-11-16 12:02:42 +0900

拡張ライブラリ psych のコメントの typo 修正もうひとつです。

mrkn: r56808 2016-11-16 13:25:33 +0900

Rational#abs のメソッド実装を追加して、Numeric#abs のメソッド呼び出しを含む実装を使わないように最適化しています。

mrkn: r56809 2016-11-16 13:25:35 +0900

complex.c の Numeric#polar と Numeric#arg の実装でメソッド呼び出しを極力さけて数値オブジェクトのタイプに応じて直接関数やマクロを利用するように最適化しています。

mrkn: r56810 2016-11-16 13:25:37 +0900

math.c に定数マクロ M_PI がない時という preproccessor 分岐があったのですが、システムになくても missing.h で定義されるため不要なので削除しています。

nobu: r56811 2016-11-16 14:25:53 +0900

r56316 の flip-flop 演算子の修正についてテストを追加しています。 [ruby-core:78162] [Bug #12947]

nobu: r56812 2016-11-16 15:07:55 +0900

r56445 で configure でリンカオプションに --compress-debug-sections=zlib を追加するようにしていましたが、configure のオプションに --with-compress-debug-sections を追加してこれで configure 時に指定できるようにしています。これを使うと rpm がうまく扱えないとかで、off にしたいみたいです。 [ruby-core:78121] [Bug #12934]

nobu: r56813 2016-11-16 15:59:40 +0900

misc/ruby-additional.el の ruby-insert-heredoc-code-block という関数で生成するヒアドキュメントの2つめのマーカー end; をダブルクオートからシングルクオートに変更しています。こうすると、begin; から end; までの間は式展開なしの文字列リテラル相当になるんじゃないのかな…。通常 begin と end の間にコードを入れるのでこれだとちょっと不便になったりしないのかな……そう、思っていた時がありましたが次のコミットを読んでなるほどなと納得しました。まあ、ruby のテストを書く人用という感じではありますね。

nobu: r56814 2016-11-16 15:59:41 +0900

test/logger/test_logdevice.rb のヒアドキュメントの書きかたを begin と end をマーカーにしてそのあいだに書く方式に変更しています。やっぱり式展開がされてない……と思ったのですが、ここではヒアドキュメントに Ruby スクリプトが書かれていて、それが assert_in_out_err などに渡されて子プロセスで評価されるので、式展開もそこでされるほうが自然というわけですね!

nobu: r56815 2016-11-16 15:59:42 +0900

標準添付ライブラリ logger の log rotate で Logger の生成時を rotate する時刻を決めるのに使っていたため、デーモンではなく断続的に起動停止するようなプロセスで Logger を使うと、log rotate が期待したように行われないことがあるので、ファイルの mtime をみてそこを基準に rotate の判定をするようにしています。 [ruby-dev:49881] [Bug #12948]

shugo: r56817 2016-11-17 16:19:49 +0900

tool/mkconfig.rb で生成する rbconfig.rb に encoding: ascii-8bit のマジックコメントを挿入するようにしています。非 ASCII 文字を含んでいるときにエラーになるのを避けるようにしているそうです。 [ruby-core:78181] [Bug #12949]

svn: r56818 2016-11-17 16:19:50 +0900

version.h の日付更新。

usa: r56819 2016-11-17 17:50:36 +0900

numeric.c の rb_fix2str() の preprocessor directive に条件のない #elif があったのを #else に修正しています。 mingw64 でビルドエラーになっていたそうです。

nobu: r56820 2016-11-17 20:52:11 +0900

拡張ライブラリ readline の Readline.delete_text で引数が2つ渡された時だけ部分文字列のオブジェクトを生成するようにして不要なオブジェクト生成を避ける最適化を行なっています。