ruby-trunk-changes r50187 - r50199

今日は Addrinfo を Marshal.load でロードした時のメモリリークの修正や Process.spawn のオプションでファイルを開くときの処理の変更などがありました。

nobu: r50187 2015-04-09 08:24:10 +0900

Marshal.load で Addrinfo をロードした時にメモリリークしていたのを修正しています。 [ruby-dev:48923] [Bug #11051]

svn: r50188 2015-04-09 08:24:44 +0900

version.h の日付更新。

normal: r50189 2015-04-09 09:30:26 +0900

r45913 で ccan というサイトもってきた doubly linked-list の実装に upstream の更新を取り込んでいます。マクロが追加されているようですが、とりあえず利用はしていないみたいですね。

nobu: r50190 2015-04-09 15:01:27 +0900

rdoc と rubygems のテストで rake に依存しているものは require "rake" が LoadError を返したらスキップするようにしています。

nobu: r50191 2015-04-09 15:06:56 +0900

r50190 の続きで rubygems のテスト用のライブラリ lib/rubygems/test_case.rb でも require "rake" が LoadError を発生させた時に例外を補足するようにしています。

akr: r50192 2015-04-09 20:35:52 +0900

process.c の run_exec_dup2() から fcntl(2) の FD_CLOEXEC フラグを消す処理を fd_clear_cloexec() という関数名で切り出すリファクタリング

akr: r50193 2015-04-09 20:53:49 +0900

process.c の rb_execarg_fixup() という関数を rb_execarg_parent_start() に改名しています。

akr: r50194 2015-04-09 21:44:35 +0900

rb_execarg_parent_end() という関数を追加しています。 rb_execarg_parent_start() で Process.spawn のオプションなどで開くことを指定された fd は開いておいて、rb_execarg_parent() でそれを閉じるようにしています。 これまでこの処理をしてた rb_execarg_run_options() から呼ばれる run_exec_open() は削除されています。 ファイルを開くタイミングをもっと fork+exec の直前に移動しているという感じだと思います。

akr: r50195 2015-04-09 22:19:47 +0900

process.c から未使用になっていた関数 redirect_open() を削除しています。

usa: r50196 2015-04-09 22:47:01 +0900

r50194 で追加したテストは Windows では実行できない内容なので分岐してテストメソッドの定義自体をしないようにしています。

akr: r50197 2015-04-09 23:23:42 +0900

process.c のデバッグ用の関数の定義をファイルの先頭のほうへ移動しています。

akr: r50198 2015-04-10 01:33:02 +0900

r50194 で rb_execarg_parent_start() でファイルを開くようにした部分を rb_thread_call_without_gvl2() を使って GVL を解放した状態で実行するようにしています。 名前付きパイプを開くときにブロックする可能性があるのでその間別の Thread が動けるようにするのが目的だそうです。

svn: r50199 2015-04-10 01:33:18 +0900

version.h の日付更新。