ruby-trunk-changes r36453 - r36472

今日は Thread.control_interrupt, Thread.check_interrupt という非同期割り込みの処理方法を指定できる機能が追加されています。

naruse:r36453 2012-07-19 01:48:54 +0900

Net::HTTP の local_host, local_port 指定のテストでテスト用に立てるサーバのアドレスを "localhost" として起動することで IPv6 しか使えない環境でもテスト通るようにしています。 [ruby-dev:45974] [Bug #6746]

kosaki:r36454 2012-07-19 01:59:01 +0900

rb_num_zerodiv() に NORETURN で関数から制御が戻らないことをマークするようにしています。コンパイラの最適化により命令の reorder が起きてしまいチェックしているにもかかわらず 0 除算をしてしまう可能性があるとのこと。チケットも参照。 [ruby-core:46486] [Bug #6736]

kosaki:r36455 2012-07-19 03:48:14 +0900

bignum.c で利用している ffs() という関数の定義のために #include を追加しています。 [ruby-core:46534] [Bug #6748]

seki:r36456 2012-07-19 07:39:28 +0900

dRuby のテストでサーバの終了処理が通信相手を待たなくなっていたため UNIX ソケットが残ってしまっていたので、通信相手が停止(正確には dRuby 経由でのメソッド呼び出しが不可能になるまで)するまで待つ処理を入れています。 参考URL: http://d.hatena.ne.jp/m_seki/20120719#1342651570

akr:r36457 2012-07-19 08:20:45 +0900

test/ruby/test_file.rb でも一時ファイルを積極的に削除するようにしています。

tenderlove:r36458 2012-07-19 09:36:42 +0900

拡張ライブラリ psych の YAMLエンコードする Psych::Emitter の生成時の引数にオプションを渡す引数を追加して生成後にセットできるのと同じ内容を生成時に指定できるようにしています。

usa:r36459 2012-07-19 13:27:59 +0900

拡張ライブラリ socket で mswin 版ではこれまでデフォルトで IPv6 が有効になっていなかったらしいのですが、デフォルトで有効にしています。

usa:r36460 2012-07-19 13:29:14 +0900

Net::HTTP の local_host, local_port の指定するテストが Windows 版でも実行可能になったので skip を削除しています。

nobu:r36461 2012-07-19 14:15:51 +0900

deprecated としてマークされていた rb_gc_mark_threads() という関数を削除しています。 呼ぶと rb_bug() を呼ぶようにされていたのでどのみち動かないという関数でした。

usa:r36462 2012-07-19 14:20:08 +0900

拡張ライブラリ socket でソケット生成時に Windows 版で fd の最大値の更新を呼び忘れていたのを修正しています。

nobu:r36463 2012-07-19 14:30:46 +0900

rb_mark_end_proc(), rb_gc_mark_parser() など内部で使う GC のマーク用関数の宣言を intern.h から internal.h に移動して外部から参照されないようにしています。

nobu:r36464 2012-07-19 15:05:58 +0900

test/ruby/test_eval.rb のユーティリティメソッドのリファクタリング

nobu:r36465 2012-07-19 15:06:03 +0900

test/ruby/test_eval.rb のインデントの修正のみです。

shugo:r36466 2012-07-19 15:41:47 +0900

Module#class_variables が継承している親クラスのクラス変数を返さないようになっていたので、constants などと同様に省略可能な引数を受け取って、true なら継承関係にあるクラスも参照する(デフォルトは true)、false ならそのクラスのクラス変数のみ返すようにしています。 [ruby-dev:44034] [Bug #4971]

akr:r36467 2012-07-19 21:14:30 +0900

test/ripper/test_files.rb の test_parse_files で警告メッセージを抑制するために標準出力を capture してしまうようにしています。

nobu:r36468 2012-07-19 21:21:49 +0900

r36437 で -framework のために mkmf.rb でオプションとオプションの引数のあいだを "\0" で埋めておくようにしたのを ext/extmk.rb でも空白に戻す処理を入れています。

akr:r36469 2012-07-19 22:47:08 +0900

test/ruby/test_io.rb でも make_tempfile (ユーティリティメソッド)のブロック付き呼び出しを使うなどして一時ファイルを積極的に削除するようにしています。

ko1:r36470 2012-07-19 23:19:40 +0900

Thread への非同期割り込みを制御する Thread.control_interrupt および 割り込み有無をチェックする Thread.check_interrupt を追加しています。内部的にも rb_threadptr_interrupt_mask(), rb_threadptr_async_errinfo_{deque,enque,clear}() など割り込み用の API が新設されています。ざっくりと解説するとこれまで Thread#raise などは対象の Thread の処理にすぐに割り込むようになっていたのを Thread.control_interrupt を使うと割り込みを自主的にチェックするまで待たせるモードに切り替えることができるようになっています。詳しくはささださんのだいありー(以下略)。

naruse:r36471 2012-07-20 03:43:24 +0900

thread_pthread.c で #ifdef のかわりに #if を使っていた部分を修正しました。

svn:r36472 2012-07-20 03:43:29 +0900

version.h の日付更新。