ruby-trunk-changes r31894 - r31905

File.write/File.binwrite メソッドの追加、minitest 2.2.2 (昨日のマージの不具合修正)などがありました。

nagai:r31894 2011-06-02 00:46:31 +0900

ext/tk/extconf.rb でグローバル変数を未初期化で使った時の guard を追加しています。 [ruby-core:36657] [Bug #4811]

svn:r31895 2011-06-02 00:46:35 +0900

version.h の日付更新。

akr:r31896 2011-06-02 01:32:15 +0900

r31825 でも修正した test_signal.rb で子プロセスを spawn する時に stderr を閉じていたのをやめたところで、File::NULL(/dev/null や NUL など、そのプラットフォームで出力を捨てたい時にリダイレクトすべき名前を保持している定数)にリダイレクトするようにしています。

ryan:r31897 2011-06-02 06:16:05 +0900

r31879 で変更された Enumerator#feed の rdoc ですが説明の文章をもうちょっと具体的にしています。

ryan:r31898 2011-06-02 07:29:09 +0900

String#tr の rdoc のサンプルコードの配置を少し変更しています。

ryan:r31899 2011-06-02 07:34:09 +0900

minitest 2.2.2 をマージしています。 Windows で diff を使うのがうまく動かなかった問題や trunk の TestUnit でうまく動かなかったインターフェース変更の追随(?)を修正しています。 [ruby-core:36670] [Bug #4813]

nagai:r31900 2011-06-02 07:57:35 +0900

tcl の Tcl_DoOneEvent() という関数に渡す event_flag から TCL_DONT_WAIT というビットフラグを削除しています。また Tcl_CreateEventSource() で登録するコールバックハンドラで rb_thread_schedule() を呼ぶようにしています。 コミットログによるとイベントループでの CPU 負荷を下げるためとあります。 tcl の実装は詳しく知らないので完全に推測ですが、tcl のイベントループでイベントがない時には短時間 sleep して(そのデフォルト値を 1msec -> 5msec にする変更も多分入ってる)その間別の Thread に処理をあけわたすことができるようにしているのではないかと。

usa:r31901 2011-06-02 12:35:40 +0900

Windows の時に IO#flush の実体である rb_io_flush() で fsync() を呼んでいたのを、そこからさらに呼んでる io_fflush() でへ移動しています。別の関数から io_fflush() を直接利用している時にも fsync() が呼ばれるように。 [ruby-core:36670] [Bug #4813]

sorah:r31902 2011-06-02 16:30:11 +0900

File.write, File.binwrite を追加しています。 IO.read, IO.binread の write 版というべきクラスメソッドです。 [Feature #1081] [ruby-core:21701]
しかしちょっと凄いものを見ました。return 文がないんですけど、これでもたまたま戻り値が最後の文の値になることもあるんですねぇ。

usa:r31905 2011-06-02 20:06:40 +0900

というわけで明示的に return するように修正しています。