ruby-trunk-changes r55195 - r55206

今日は正規表現まわりの最適化などがありました。

nobu: r55195 2016-05-28 19:45:48 +0900

File#flock のテストで呼び出しがエラーにならないかだけチェックしていたのを、ちゃんとロック取得のためにブロックするケースで止まってるかを timeout を使ってチェックするようにしています。

duerst: r55196 2016-05-28 20:34:20 +0900

test/test_unicode_normalize.rb でも r55193 と同様に Unicode のデータファイルが存在するかのテストを追加しています。また文字列に破壊的変更を加える unicode_normalize! というメソッドを直に呼び出していたところで dup するようにしています。

nobu: r55197 2016-05-28 20:40:58 +0900

misc/ruby-additional.el で ruby-insert-heredoc-code-block という関数を追加して、ヒアドキュメントブロックを追加できるようにしています。 assert_separately 用とのこと。

nobu: r55198 2016-05-29 12:08:45 +0900

テスト用の拡張ライブラリ群 ext/-test-/* の extconf.rb がだいたい同じことやっているのでそのメソッドを ext/-test-/auto_ext.rb というファイルに切り出しています。

svn: r55199 2016-05-29 12:08:46 +0900

version.h の日付更新。

nobu: r55200 2016-05-29 13:10:28 +0900

win32/win32.c の RUBY_CRITICAL() というマクロを引数をなくして、実質なにもしないようにしています。これまでも、実質引数の C のブロックをそのまま展開してるだけでなにもしてなかったので、デバッガで扱いやすくするためみたいです。このマクロかなり古いものみたいだけど、もう不要みたいですね。

nobu: r55201 2016-05-29 19:18:20 +0900

rb_exc_set_backtrace() の宣言を vm_core.h に追加してソースファイルで個別に宣言していたのをやめています。

naruse: r55202 2016-05-29 22:56:38 +0900

regexec.c の match_at() で mem_start_stk というメモリ領域の初期化をしている処理が共通だったので #ifdef USE_SUBEXP_CALL の分岐の外に出して、さらにループ内で飛び飛びのアドレスを初期化していたのを連続した2つずつ初期化するようにしています。最適化がききやすくしているのだと思います。

naruse: r55203 2016-05-29 22:58:45 +0900

regexec.c で ONIGENC_IS_MBC_ASCII_WORD() というマクロを再定義していて、encoding が ASCII-compatible なら ISALNUM() と "_" との比較だけで済ませるようにして高速化を図っています。

usa: r55204 2016-05-30 00:10:44 +0900

r55198 で追加した ext/-text-/auto_ext.rb で create_makefile に渡す feature 名の切り出しかたがまちがっていた("-test-/" を含んでなかった)のを修正しています。

svn: r55205 2016-05-30 00:10:44 +0900

version.h の日付更新。

nagachika: r55206 2016-05-30 03:28:39 +0900

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