ruby-trunk-changes r61338 - r61359

今日は coverage が遅くなっていた対策で tracebranch 命令が tracecoverage 命令に変更されて line coverage にも利用されるようになった変更や、先日の Hash の st_table 再利用の revert などがありました。

nobu: r61338 2017-12-19 21:20:21 +0900

st.c で r61309 で導入した st_table の再利用のための linked list のための構造体で struct の tag にアンダースコアで始まる名前を使っていましたが、これは標準ライブラリのために予約されているものだったので、アンダースコアを削っています。また一部変数の型を修正しています。

hsbt: r61339 2017-12-19 21:23:21 +0900

NEWS ファイルに RubyGems の更新履歴を更新しています。

hsbt: r61340 2017-12-19 21:28:18 +0900

NEWS ファイルに記述していた Psych のバージョンを更新しています。

watson1978: r61341 2017-12-19 23:26:30 +0900

r61309 の Hash 用の st_table の再利用のための list を持つようにしたのを revert しています。 mswin の CI でこけてるそうです。 [ruby-dev:50370] [Bug #14203]

eregon: r61342 2017-12-20 00:40:13 +0900

標準添付ライブラリ drb の DRb::DRbserver#main_loop の終了時に loop を抜けないケースがあったのを修正しています。

svn: r61343 2017-12-20 00:40:14 +0900

version.h の日付更新。

ngoto: r61344 2017-12-20 01:55:08 +0900

SolarisOracle Developer Studio 12.4〜12.6 で String#unpack が最適化の影響で異常終了することがあるそうなので、pack.c の AVOID_CC_BUG というマクロを volatile にして最適化を抑制する条件の __SUNPRO_C の範囲を調整しています。 [ruby-core:84351] [Bug #11684]

ngoto: r61345 2017-12-20 02:09:13 +0900

Process.spawn で非常に長いコマンドラインを渡した時のテストを Process::RLIMIT_NPROC が使えない環境や、Solaris ではプロセスを大量に作りすぎてシステムが不安定になるそうなので skip するようにしています。

nobu: r61346 2017-12-20 09:09:51 +0900

parse.y でスクリプトの改行の直後に前の行から式が続いているかチェックしているところで NUL 文字が無視されていたのを修正しています。 [ruby-core:84349] [Bug #14206]

ko1: r61347 2017-12-20 09:24:19 +0900

Kernel#exec でプロセスイメージを変更しようとして失敗した後で Thread が使えることを確認しているテストで、タイムアウトすることがあったので Timeout.timeout の秒数を伸ばして、Thread の停止の条件も Queue を使うようにしています。けど Queue#pop とかじゃなくて empty? でチェックするだけでもローカル変数をみるのと何か違うのかな?

mame: r61348 2017-12-20 10:51:50 +0900

vm_trace() で LINE_EVENT 以外のイベントの時の vm_dtrace() の呼び出しの引数を RUBY_EVENT_LINE にしてしまっていたのを修正しています。

nobu: r61349 2017-12-20 13:18:31 +0900

標準添付ライブラリ resolv の Resolv::Hosts.new に渡した文字列を Kernel#open に渡していたので File.open を使うように修正しています。 "|cmd" みたいなのを渡すとコマンド起動になるので、ファイルとして開くようにするため。 https://github.com/ruby/ruby/pull/1777 [ruby-core:84347] [Bug #14205]

mame: r61350 2017-12-20 13:24:14 +0900

拡張ライブラリ coverage で line coverage を取ると 2.4 に比べて遅くなってしまっていたので、その理由である vm_trace() 経由でのイベントフック起動をせずに直接フックを呼び出す tracecoverage という VM 命令を導入しています。このため r61047 で tracebranch に改名した命令を tracecoverage として、coverage 共用の命令に戻しています。 [ruby-core:83758] [Feature #14104] [ruby-core:84294] [Bug #14191]

nobu: r61351 2017-12-20 13:25:01 +0900

r61349 と類似の修正で標準添付ライブラリ resolv の Resolv::Config.parse_resolv_conf でも Kernel#open のかわりに File.open を使うように変更しています。 [ruby-core:84347] [Bug #14205]

mame: r61352 2017-12-20 13:45:05 +0900

r61350 の変更で line coverage の結果が変化したのでテストを修正しています。 どっちかというと最近の変更で変わってしまっていたのが 2.4 までと同じ結果に戻ってるそうです。

mame: r61353 2017-12-20 16:38:24 +0900

iseq.c で get_insn_info() のかわりに二分探索する get_insn_info_binary_search() という関数を追加して TracePoint を使う時の書き換えを高速化しています(多分)。VM_CHECK_MODE をセットしてビルドされた時は元の get_insn_info() の定義と結果が一致していることをチェックするようにしています。

hsbt: r61354 2017-12-20 17:50:26 +0900

NEWS ファイルの rdoc の更新のバージョンを 6.0.0 に変更しています。

stomar: r61355 2017-12-20 18:31:22 +0900

NEWS ファイルの文法修正。

stomar: r61356 2017-12-20 18:31:58 +0900

NEWS ファイルの Omigmo の absent operator は absence operator に変更しています。 "is now called..." ってことは前は公式が absent だったのかな。

stomar: r61357 2017-12-20 18:51:29 +0900

NEWS ファイルの Psych の更新の部分に r61336 で YAML.load などの fallback 引数がキーワード引数の変更された非互換について追記しています。

naruse: r61359 2017-12-20 21:06:59 +0900

r59693 で標準添付ライブラリ net/http の Net::HTTP#add_field などでヘッダ名に改行が含まれているのを弾くようにしたのと同様に、Net::HTTPHeader#initialize_http_header でもヘッダ名の改行をエラーにするようにしています。 [ruby-core:84359] [Bug #14208]