ruby-trunk-changes r55471 - r55485

今日は casemap 系メソッドの処理のメモリリークの修正、WEBrick の x-forwarded-proto ヘッダの扱いの修正などがありました。

nobu: r55471 2016-06-21 00:22:04 +0900

setjmpex.h を include するのは setjmpex() を実際に RUBY_SETJMP で利用する時だけにしています。 mingw32 で #include すると setjmp() も setjmpex() で上書きされてしまうそうです。

svn: r55472 2016-06-21 00:22:05 +0900

version.h の日付更新。

nobu: r55473 2016-06-21 00:56:49 +0900

win32/win32.c の get_special_folder() で get_path_func の型宣言を修正しています。 http://twitter.com/arton/status/744884064277016576

naruse: r55474 2016-06-21 03:27:45 +0900

test/ruby/enc/test_case_comprehensive.rb で casemap 関係のテストでテスト用のデータをキャッシュすると全テストの実行中にメモリを消費し続けるのキャッシュするのをやめています。

naruse: r55475 2016-06-21 04:01:37 +0900

test/ruby/enc/test_case_comprehensive.rb でデータファイルの全行を読んでから処理してたのを1行ずつ読んで処理するようにして最適化しています。また String#=~ のかわりに Regexp#match? を使うなどの中間オブジェクト生成を抑制する最適化などでテストを高速化しています。

duerst: r55476 2016-06-21 15:35:24 +0900

LEGAL ファイルに enc/trans/JIS にあるいくつかのファイルについての記述を追加しています。

duerst: r55477 2016-06-21 15:42:27 +0900

r5546 と同様に test/ruby/test_io.rb の test_read_buffer_error も cygwin では実施しない(定義しない)ようにしています。

naruse: r55478 2016-06-21 16:14:03 +0900

r55474 や r55475 の続きで test/ruby/enc/test_case_comprehensive.rb の最適化をしています。 Unicode 系のエンコーディングの時に動的にテストメソッドを定義する時に不要なコードポイントの変換を省くようにしています。しかしまだメモリ使用量が多いということで、これを調べてて次のメモリリークが発覚したようです。

naruse: r55479 2016-06-21 16:14:04 +0900

rb_str_casemap() で文字列バッファのサイズを表す変数の型を int から size_t に修正しています。

naruse: r55480 2016-06-21 16:14:05 +0900

rb_str_casemap() で linked list 状に繋げた mapping_buffer の構造体の数が 1つだけだった時にメモリ解放処理が抜けていてメモリリークしていた不具合を修正しています。

nobu: r55481 2016-06-21 16:38:16 +0900

rb_str_casemap() で RSTRING_PTR() の引数部分に rb_str_new_with_class() の呼び出しを入れていたので、複数回の呼び出し(オブジェクト確保)に展開されてしまうので変数に受けてから渡すように修正しています。

duerst: r55482 2016-06-21 17:17:50 +0900

r55468 や r55477 と同様に test/ruby/test_io.rb のテストで cygwin でハングアップするものをテストしないようにしています。

nobu: r55483 2016-06-21 17:19:59 +0900

rb_str_casemap() と rb_str_ascii_casemap() でデバッグ用の出力が残っていたのを CASEMAP_DEBUG というマクロが定義されている時だけ出力するように条件分岐の中に移動しています。

nobu: r55484 2016-06-21 19:32:26 +0900

標準添付ライブラリ webrickWEBrick::HTTPRequest#setup_forwarded_info で x-forwarded-proto ヘッダの値が "," で区切られていたら先頭の値だけ使うようにしています。 https://github.com/ruby/ruby/pull/1386

duerst: r55485 2016-06-21 19:44:57 +0900

test/ruby/enc/test_regex_casefold.rb のテストケースに KOI8-R と KOI8-U のエンコーディングのぶんを追加しています。