ruby-trunk-changes r57195 - r57224

今日は IO の close と読み込みがマルチスレッドで競合した時の不具合修正やキーワード引数に do...end 型ブロックを含む式があった時の文法エラーの修正などがありました。

kazu: r57195 2016-12-26 21:00:01 +0900

2.4.0 ブランチが切られたので NEWS ファイルを doc/NEWS-2.4.0 に移動しています。

kazu: r57196 2016-12-26 21:00:02 +0900

新しい NEWS ファイルを追加しています。

svn: r57197 2016-12-26 21:00:03 +0900

r57196 で追加された NEWS ファイルの svn property 設定。

nobu: r57198 2016-12-26 22:31:03 +0900

key: value のようなキーワード引数や Hash の key value ペアの記法に do...end 型のブロックを含む式が複数存在すると文法エラーになることがある不具合の修正。 [ruby-core:78837] [Bug #13073]

nobu: r57199 2016-12-26 23:14:18 +0900

複数の Thread から同じ IO オブジェクトに対して read と close が同時に呼ばれた時に SEGV する可能性があったので、読み込み時のチェックを追加しています。 [ruby-core:78845] [Bug #13076]

hsbt: r57200 2016-12-27 10:40:39 +0900

.gitignore に gems/*-* という展開された gem のディレクトリを無視させる指定を追加しています。

svn: r57201 2016-12-27 10:40:40 +0900

version.h の日付更新。

nobu: r57202 2016-12-27 16:10:11 +0900

r57199 の IO オブジェクトの読み込みと close のマルチスレッドでの不具合修正の続きがあったようです。 fd を close する時にその fd でブロックしている Thread があったら割り込みをかけてからブロックしている Thread がなくなるまでリトライするようにしています。 [ruby-core:78845] [Bug #13076]

nobu: r57203 2016-12-27 16:18:27 +0900

ARGF で fd の close 漏れしていたのを修正しています。また ARGF のテストでテストメソッドを分割して ARGF.class.new で作ったオブジェクトが close 漏れしていたのを修正しています。

nobu: r57204 2016-12-27 16:39:29 +0900

ARGF.close の実装で rb_funcall3 で close メソッドの呼び出しをしていたのを io_close() を直接呼ぶように変更しています。

normal: r57205 2016-12-27 17:52:32 +0900

Fiber の rdoc 用コメントに Fiber 用のマシンスタックが 4KB だと明記されていましたが、今は環境変数で変更可能になっているので ruby.1 の man page を参照するように書きかえています。

usa: r57206 2016-12-27 18:07:02 +0900

r57199 の IO#close のマルチスレッド対応の変更部分は revert しています。 拡張ライブラリ io/console の IO#getch が壊れていたそうです。 [ruby-core:78857] [Bug #13076]

nobu: r57224 2016-12-27 20:43:34 +0900

r57206 で revert された r57199 のリベンジ。 io_fillbuf() に READ_CHECK() を追加していたのを rb_io_check_closed() を直接呼ぶように変更しています。 READ_CHECK() に含まれる WAIT_FD_IN_WIN32() を避けたということかな。 [ruby-core:78845] [Bug #13076]