ruby-trunk-changes r64131 - r64141

今日は GVL 解放時の処理で GVL 待ちのスレッドがいなかったらブロック中のスレッドを起こすようにする変更などがありました。

nobu: r64131 2018-07-31 00:21:01 +0900

r64123 で thread_pthread.c で USE_NATIVE_SLEEP_COND の再定義を消していましたが、やはり間違いだったみたいで #if dedined でのガード付きにしつつ戻しています。

svn: r64132 2018-07-31 00:21:02 +0900

version.h の日付更新。

normal: r64133 2018-07-31 03:53:46 +0900

gvl_yield() で GVL 確保待ち中の thread がいなかった時に適当に native_thread_yield() を呼ぶ前に ubf_wakeup_all_threads() を呼んでブロック中のスレッドを起こしちゃうようにしています。これもシグナル喪失の対策なんだろうけど全 thread 起こすとなると場合によっては CPU 負荷が高くなりそうな気も。

normal: r64134 2018-07-31 06:48:32 +0900

thread_pthread.c の unregister_ubf_list() に th->unblock.func が 0 であることをチェックする VM_ASSERT() を追加しています。CI での失敗の調査用かな。

normal: r64135 2018-07-31 10:33:39 +0900

test/ruby/test_io.rb の multi thread 環境での IO 処理のテストで、タイムアウト時に子プロセスを殺すためのシグナルに SIGABRT を使うように指定しています。

hsbt: r64136 2018-07-31 10:35:16 +0900

lib/tracer.gemspec を lib/tracer/tracer.gemspec に移動しています。

hsbt: r64137 2018-07-31 12:49:38 +0900

test/thread/test_cv.rb と test/thread/test_queue.rb, test/thread/test_sync.rb などは対象の ConditionVariable、Queue などが ruby 組み込みクラスとして取り込まれたので、テストファイルを test/ruby 配下に移動しています。

k0kubun: r64138 2018-07-31 20:18:59 +0900

tool/transform_mjit_header.rb で関数の定義を抜き出すための正規表現 FUNC_HEADER_REGEXP で __attribute__ などの属性指定が戻り値型の後に入ってる場合にも対応するようにしています。 [ruby-core:88172] [Bug #14949]

hsbt: r64139 2018-07-31 20:48:09 +0900

r64137 の対応で default gem 化した sync も tool/sync_default_gems.rb で標準的な処理に落としこめるようになったので sync_lib メソッドを利用するようにリファクタリングしています。

hsbt: r64140 2018-07-31 21:05:24 +0900

tool/sync_default_gems.rb の標準処理の sync_lib メソッドで最初に掃除する時に test/xxx は消さないようにしています。

hsbt: r64141 2018-07-31 21:12:33 +0900

lib/thwait.gemspec も lib/thwait/thwait.gemspec に移動しています。