ruby-trunk-changes r31565 - r31579

今日は $0 への代入のリファクタリング(環境によっては無効だったのが有効になっているはず)やドキュメント追加、Fiber の不具合修正などがありました。

kosaki:r31565 2011-05-14 19:49:47 +0900

$0 への代入(プロセス名の変更)の処理を set_arg0 で環境毎に条件コンパイルしていたのを setproctitle() がない環境向けに missing/setproctitile.c を追加してシンプルにしています。また setproctitle() も pstat() も使えない環境で argv の領域を直接書き換える手法を実装しています。

kosaki:r31566 2011-05-14 19:51:16 +0900

setproctitle() で strdup() のかわりに ruby_strdup() を利用するようにしています。

kosaki:r31567 2011-05-14 19:53:29 +0900

$0 への代入で ps の表示が変化するテストを追加しています。

kosaki:r31568 2011-05-14 22:45:58 +0900

missing/setproctitle.c に #include "ruby/util.h" を追加しています。

kosaki:r31569 2011-05-15 01:01:28 +0900

setproctitle 関連の修正で mswin32 のビルドがエラーになっていたらしいのを修正。 unistd.h の include を #ifdef HAVE_UNISTD_H でくくったり win32/Makefile.sub の MISSING に setproctitle.obj を追加したり。

svn:r31570 2011-05-15 01:01:32 +0900

version.h の日付更新。

drbrain:r31571 2011-05-15 03:24:11 +0900

ERB::Compiler のドキュメント追加です。 [ruby-core:36185] [Bug #4694]

drbrain:r31572 2011-05-15 03:39:53 +0900

Zlib のドキュメント追加です。 [ruby-core:36186] [Bug #4695]

nobu:r31573 2011-05-15 20:55:52 +0900

行末の空白の削除などの整形と svn property の設定など。

nobu:r31574 2011-05-15 21:04:32 +0900

r31353 の Encoding::Converter#initialize のドキュメント変更を revert しています。 [ruby-dev:43512]

nagachika:r31577 2011-05-15 21:41:40 +0900

Thread 内で Fiber.current で root Fiber を生成してから Thread が GC されると Fiber の mark で SEGV する不具合を修正。rb_cont_t::machine_stack_start/end を 0 clear していないと cont_mark から rb_thread_mark() を呼ばれた時に解放済みの machine_stack を mark しようとしてしまうためでした。 [ruby-core:35891] [Bug #4612]
子 Fiber の場合は fiber_init() で clear されるのですが root Fiber の時は fiber_init() を通らないため最初に clear しています。 Continuation の時も cont_capture() から cont_save_machine_stack() が呼ばれてそこで clear されるので常に初期化しておいて問題ないと思います。

nagachika:r31579 2011-05-15 22:37:47 +0900

Process.kill は -2 のような負の整数か "-SIGXXX" のように先頭に "-" のつくスタイルでシグナルを指定するとプロセスグループへのシグナル送信を行なうのですが、Symbol と to_str で暗黙の String への変換が行なわれた場合にはこれが有効でないのを修正しています。 [ruby-dev:43169] [Bug #4362]