ruby-trunk-changes r47917 - r47943

今日は Etc.nprocessors に Linux での cpu affinity の設定を考慮するようにする変更などがありました。

zzak: r47917 2014-10-15 04:54:36 +0900

error.c の rdoc 用コメントの大文字小文字の変更。 https://github.com/ruby/ruby/pull/740

svn: r47918 2014-10-15 04:54:48 +0900

version.h の日付更新。

zzak: r47919 2014-10-15 04:57:24 +0900

Object#object_id の rdoc 用コメントのちょっとした修正。

normal: r47920 2014-10-15 06:52:45 +0900

r47911 で追加した Hash の = の引数が文字列の時の最適化命令のテストで、 = メソッドの戻り値が右辺値であることのチェックも追加しています。

normal: r47921 2014-10-15 06:52:56 +0900

String#== や String#<< の再定義時の最適化命令を使った最適化の脱最適化のテストを追加しています。

normal: r47922 2014-10-15 07:01:54 +0900

String#size メソッドを再定義した時の脱最適化のテストも追加しています。

akr: r47923 2014-10-15 07:24:34 +0900

Enumerable#min(n) や #min_by(n) で一時配列の指定されたサイズまで要素が詰まったら、最大値がわかるのでその要素とまず比較してより大きければスキップするようにして最適化しています。

akr: r47924 2014-10-15 09:04:50 +0900

test/ruby/test_rubyoptions.rb の test_segv_test で rb_bug() の出力するメッセージをマッチさせる正規表現を分割してより細かい単位で相違点が表示されるようにしています。

akr: r47925 2014-10-15 12:27:37 +0900

r47924 の test_segv_test で複数の正規表現を順にチェックしていたのを test/ruby/envutil.rb の EnvUtil#assert_regexp_list という assertion メソッドとして切り出しています。

nobu: r47926 2014-10-15 14:25:36 +0900

Enumerable の inject の Enumerator 対応に使う NODE の値の未初期化(Ruby レベルで)の値として Qundef を初期値に使うように修正しています。

nobu: r47927 2014-10-15 14:59:11 +0900

r47924 の続きでさらに正規表現を分割しています。

nobu: r47928 2014-10-15 15:27:30 +0900

r47926 の修正で Enumerable#inject で空配列などで一度も yield されなかった時に Qundef を返してしまっていたので nil を返すようにしています。

akr: r47938 2014-10-15 17:59:46 +0900

r47925 で EnvUtil#assert_regexp_list と分離した複数の正規表現に順にマッチさせる assertion メソッドを assert_pattern_list と改名しています。また失敗した時の表示をさらに改行を反映させてインデントして整形して表示するようにしています

akr: r47939 2014-10-15 18:41:25 +0900

拡張ライブラリ etc の Etc.nprocessors で Linux では sched_getaffinity(2) を利用して CPU コアのアフィニティ設定による利用可能なコアも考慮して数を返すようにしています。 [ruby-core:65142] [Feature #10267]

akr: r47940 2014-10-15 18:57:17 +0900

test/ruby/envutil.rb の未使用ローカル変数の削除。

akr: r47941 2014-10-15 19:57:17 +0900

r47924 からの test_segv_test の正規表現リストをさらに分割しています。

akr: r47942 2014-10-15 20:28:52 +0900

EnvUtil#assert_pattern_list でエラー時のメッセージで文字列が複数行かどうかの判定を少し修正しています。

akr: r47943 2014-10-15 22:09:23 +0900

r47939 の Etc.nprocessors に sched_getaffinity(2) を使うようにした変更で、CentOS5 には CPU_ALLOC() マクロが存在しないそうで、利用する条件に CPU_ALLOC が定義されているかどうかのチェックも追加しています。