ruby-trunk-changes r32518 - r32528

今日は Signal.trap でハンドラを登録できるシグナルの制限が追加されています。

kanemoto:r32518 2011-07-11 23:29:45 +0900

AIX で time.c がコンパイルエラーになるため #include を追加しています。
ffs(3)? http://www.unix.com/man-page/POSIX/3posix/ffs/ ふーむ最も最下位で1になっているビットの位置を返す POSIX で定義されている関数と。

usa:r32521 2011-07-12 11:59:11 +0900

Windows 上での別のアーキテクチャ向けのクロスコンパイルのサポートするための Makefile の修正らしいです。x86_64 と ia64 の区別を追加しているみたいです。

svn:r32522 2011-07-12 11:59:17 +0900

version.h の日付更新。

kosaki:r32523 2011-07-12 13:55:50 +0900

Signal.trap で SIGSEGV, SIGILL, SIGBUS, SIGFPE のような同期的なシグナル(プログラムに問題があって発生する)や Ruby が内部的に利用している SIGVTALM、 SIGCHLD(SIGCLD) のハンドラを変更できないようにしています。 [ruby-core:27625] [Bug #2616]

kosaki:r32524 2011-07-12 14:08:28 +0900

install_sighandler() でシグナルハンドラの設定を変更する間シグナルマスクを設定して割り込まれるのを防ぎます。

kosaki:r32525 2011-07-12 14:12:29 +0900

init_sigchld() でのシグナルマスクの設定、解除を rb_disable_interrupt(), rb_enable_interrupt() に置き換えるリファクタリングです。

sorah:r32526 2011-07-12 17:09:15 +0900

Test::Unit::Options の @options インスタンス変数を削除して @opts に集約しています。また process_args の返り値が options になっていなかったのを修正しています。

matz:r32527 2011-07-12 17:15:47 +0900

Module#undef でメソッドの定義を undef した時にも Module#method_added が呼ばれる不具合を修正しています。undef は実装上はメソッドエントリを消すのではなくて、継承ツリー上をメソッドサーチする際に積極的に探索を打ち切るように undef 用のメソッドエントリを置くようになっているので、その時も method_added が呼ばれていました。 [Bug #5015]

kosaki:r32528 2011-07-12 20:04:58 +0900

r32523 のうち SIGCHLD(SIGCLD) のシグナルハンドラを禁止するのはやめて戻しています。
SIGCHLD のシグナルハンドラを変更すると環境によっては wait(2) が正しく子プロセスの終了を検出できなくなるらしいのですが、Linux で SIGCHLD のハンドラを使うプログラムを書いたことがあったので戻してもらいました。waitpid の機能を拡張するなどして SIGCHLD を必要としないようにしないといけませんね……。