今日は拡張ライブラリ 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 で JSON や YAML ファイルからロードした時にも設定するようにしています。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 に変更しています。