ruby-trunk-changes r32236 - r32247

今日はタイマースレッドの 100msec おきにスレッド切り替えを促す処理が不要な時には抑制する変更が入っています。Rubyの省エネ化です。

tadf:r32236 2011-06-26 22:23:00 +0900

date_core.c のリファクタリング。1箇所だけで使ってた関数を展開したり条件分岐の書きかたを変更したり。あとは新しいデバッグ用のメソッドを追加したりです。

tadf:r32237 2011-06-26 23:50:09 +0900

Date と DateTime のテストを追加しています。

naruse:r32238 2011-06-27 00:45:47 +0900

Hash#reject の rdoc にブロックなしの時の呼び出しかたを追記しています。 [ruby-core:36800] [Bug #4847]

naruse:r32239 2011-06-27 00:45:49 +0900

Ripper#end_seen? の rdoc を修正しています。 [Bug #4511]

svn:r32240 2011-06-27 00:45:50 +0900

version.h の日付更新。

naruse:r32241 2011-06-27 00:55:29 +0900

NEWS ファイルに r30188 での Net::HTTPRequest#set_form の application/x-www-form-urlencoded と multipart/form-data のサポートの追加について追記しています。

nobu:r32242 2011-06-27 01:34:20 +0900

拡張ライブラリ etc のテストで "+" からはじまるアカウント名のユーザを無視するようにしています。コミットログによると Debian で /etc/nsswitch.conf の設定によっては "+" がついた名称が取得されることがあるようです。 [ruby-core:31681] [Bug #3683]

tadf:r32243 2011-06-27 08:01:56 +0900

ext/date/date_parse.c で ALLOCA_N() を使うべきところが ALLOC_N() になっていたのを修正。つまりメモリリークしてたのを修正しています。

ko1:r32244 2011-06-27 09:30:41 +0900

タイマースレッドが定期的に起きてスレッドの切り替えを促す動作を、切り替えを待つスレッドが存在しない時には抑制するパッチがコミットされています。 [ruby-core:33456] [ruby-dev:43835]
コミットメッセージによりますと、タイマースレッドの不要な動作を止めるのは省エネルギーのためで、ある計測では 0.2W (おそらくW/hour?)の消費電力の節約になったそうです。 rb_thread_wakeup_timer_thread() という関数を追加して GVL を取得する(実行待ちになる)時やシグナルを受信したり Thread#kill した時にも pipe を利用してタイマースレッドへ通知してまた polling モードにするようにしています。

ko1:r32245 2011-06-27 09:59:07 +0900

r32244 の修正でタイマースレッドへの通知用 pipe に fcntl でフラグをセットする為の変数に F_GETFL で現在の値を取得しておくようにしています。

naruse:r32246 2011-06-27 11:43:03 +0900

r32244 の変更で write(2) の戻り値を受ける変数の型を int から ssize_t に変更しています。

naruse:r32247 2011-06-27 11:45:30 +0900

さらに不要な変数の削除や変数の返り値の型の変更などの小さな修正です。