ruby-trunk-changes r64470 - r64479

今日も主に thread まわりの追加修正がありました。

eregon: r64470 2018-08-19 22:23:49 +0900

r64355 で謎の IO.select を追加してた rubyspec の socket のテストですが FreeBSDmacOS のみ追加してたのを、常に IO.select 実行するようにしています。

naruse: r64471 2018-08-19 22:25:11 +0900

r64409 で追加された rubyspec のテストが Windows で動かないということで platform_is_not を追加しています。

normal: r64472 2018-08-20 05:16:09 +0900

test/ruby/test_io.rb で rescue 節で例外をローカル変数に入れる記法を消しています。使ってないので未使用変数の警告になってたようです。

svn: r64473 2018-08-20 05:16:10 +0900

version.h の日付更新。

normal: r64474 2018-08-20 05:16:15 +0900

thread_sync.c の rb_condvar_wait() で rb_scan_args() で解析した引数を一時的にローカル変数に入れてから構造体 struct sleep_call にセットしてたのを、直接メンバーに取り込むようにしています。gcc で最適化されて消えるだろうと思ったけど消えなかった、とのこと。 "golf out" っていうイディオムがあるのか。辞書を引いてもみあたらないけど。

normal: r64475 2018-08-20 05:40:42 +0900

rb_thread_fd_select() で最大の fd を更新するための条件が1つずれててちょうど1つ大きい場合に更新しそこねる可能性があったのを修正しています。

normal: r64476 2018-08-20 07:20:22 +0900

do_mutex_lock() に interruptible_p という引数を追加して割り込みチェックするかどうかを指定できるようにして、rb_mutex_sleep() から rb_ensure() 経由で呼ばれた時には spurious wakeup で割り込みチェックしないようにして戻ってきてから割り込みチェックするようにしています。 [ruby-core:88556] [Bug #14999]

normal: r64477 2018-08-20 08:36:23 +0900

thread_sync.c に重複したセミコロンがあったので1つ削っています。

normal: r64478 2018-08-20 10:43:10 +0900

rubyspec の socket のテストで、最新の Linux でリソースが足りてない環境で pipe のバッファが少なく生成されることがあるそうで、そのような場合に IO.select でうまく書き込み可能になっているのを検出できないことがあるそうでそのようなケースで止まってしまわないように起こすための pipe をさらに増やしています。

kazu: r64479 2018-08-20 17:24:55 +0900

標準添付ライブラリ uri/mailto のメールアドレスの正規表現の出典(?)のURLがリンク切れしていたようなので新しいものに修正しています。 https://github.com/ruby/ruby/pull/1929