ruby-trunk-changes r61083 - r61093

今日は webrick の race condition の不具合修正、Dir.chdir をブロック付きで呼び出した時に GVL 解放するのをやめる修正や NODE の範囲情報の修正などがありました。

normal: r61083 2017-12-09 03:51:56 +0900

標準添付ライブラリ webrickWEBrick::GenericServer#start でインスタンス変数 @status に :Running を代入するのを開始時の :StartCallback コールバックの呼び出し前にするように修正しています。 WEBrick のサーバー停止時にうまく止まらなく可能性があったみたいです。1.9.2 でまだ再現するそうなのですが、それは他の multi thread 時の(おそらく修正済みの)不具合が絡んでるんじゃないかなぁとのこと。 [ruby-core:36787] [Bug #4841]

svn: r61084 2017-12-09 03:51:57 +0900

version.h の日付更新。

stomar: r61085 2017-12-09 07:42:19 +0900

拡張ライブラリ strscan の rdoc 用コメントの typo 修正。

stomar: r61086 2017-12-09 07:43:05 +0900

NEWS ファイルの syck 削除についての記述の文法修正。

stomar: r61087 2017-12-09 07:43:47 +0900

Integer#pow の rdoc 用コメントの英文の添削。

stomar: r61088 2017-12-09 07:51:42 +0900

doc/syntax/refinements.rdoc の typo 修正。

yui-knk: r61089 2017-12-09 12:03:34 +0900

class Xxx ... end のような class 文の NODE_SCOPE の範囲情報に、予約語 class の部分を含めないように修正しています。

yui-knk: r61090 2017-12-09 12:18:55 +0900

最適化命令つきの二項演算子の NODE_OPCALL の子ノードの NODE_ARRAY の範囲情報を、右辺値の範囲のみ含めるように修正しています。

normal: r61091 2017-12-09 12:46:39 +0900

r60583 で Dir.chdir の chdir(2) 呼び出し中に GVL 解放するようにした変更の再修正で、ブロック渡しで呼ばれた時には GVL 解放はしないように修正されています。ブロックつき呼び出し時には multi thread での呼び出し時に復旧するディレクトリが混乱しないように chdir_blocking や chdir_thread といった変数で chdir 要求中の thread 数などを管理していて、これの保護は GVL に依っているので、GVL 解放するとまずかったみたいです。

yui-knk: r61092 2017-12-09 12:52:59 +0900

class << ... end による特異クラス定義の文での NODE_SCOPE の範囲情報を本体部分と end だけ含むように修正しています。

yui-knk: r61093 2017-12-09 18:44:03 +0900

rescue 節の NODE_BLOCK の範囲情報を rescue と例外クラスの列挙部分は含めないように修正しています。