ruby-trunk-changes r57280 - r57290

今日は拡張ライブラリ io/console の IO#winsize= の不具合修正や Module#const_set のパフォーマンス改善などがありました。

nobu: r57280 2017-01-08 07:52:03 +0900

拡張ライブラリ io/console の IO#winsize= で引数に配列サイズ 2 か 4 を受け付けているのに常に 4つめの要素まで取得しようとしてしまっていた不具合を修正しています。 [ruby-core:79004] [Bug #13112]

svn: r57281 2017-01-08 07:52:03 +0900

version.h の日付更新。

nobu: r57282 2017-01-08 08:02:29 +0900

r57280 の続き。 IO#winsize= の引数の配列のサイズが 2 か 4 だけ受け付けるので 3 の時も ArgumentError を発生させるようにしています。

nobu: r57283 2017-01-08 10:46:10 +0900

Module#const_set が遅くなったということで、まずベンチマークスクリプトを追加しています。 [ruby-core:79007] [Bug #13113]

nobu: r57284 2017-01-08 10:59:54 +0900

Module#const_set で無名モジュールに名前を付ける時に rb_class_path_cached() をチェックして外側の Module が名前を持ってる時だけ rb_class_name() を呼び出すようにしています。 [ruby-core:79007] [Bug #13113]

nobu: r57285 2017-01-08 12:45:34 +0900

benchmark/driver.rb でベンチマークの結果表示の整形を微調整しているようです。

nobu: r57286 2017-01-08 12:46:17 +0900

benchmark/driver.rb で loop_whileloop1 と loop_whileloop2 というベンチマークの結果を @loop_wl{1,2} という変数にセットしておくようにしています。 BenchmarkDriver#run でこれらのインスタンス変数はセットされてましたが、BenchmarkDriver.load で JSONYAML ファイルからロードした時にも設定するようにしています。wihle ループの時間を除外することで、ベンチマーク対象の処理の時間を比較できるようにしているんですね。

nobu: r57287 2017-01-08 12:50:32 +0900

benchmark/driver.rb で opt[:output] の設定はファイルからのロード時には設定しないようにしています。

nobu: r57288 2017-01-08 12:51:35 +0900

同じく benchmark/driver.rb で BenchmarkDriver.load で JSON/YAML ファイルからのロード時に @measure_target というインスタンス変数を復元するようにしています。

nobu: r57289 2017-01-08 13:04:29 +0900

拡張ライブラリ io/console の IO#winsize= のテストを一部コメントアウトしています。 CentOS 5 で pty 経由で端末のサイズの変更ができなかったとか。CentOS 5 かー。

kazu: r57290 2017-01-08 13:17:08 +0900

標準添付ライブラリ getoptlong の magic comment frozen_string_literal を true に変更しています。