ruby-trunk-changes r58888 - r58904

今日は Kernel#sprintf や String#% のフォーマット文字列の末尾の単独の "%" で例外発生にする変更や、先日追加した Dir.glob
のキーワード引数 base の意味を変える変更などがありました。

stomar: r58888 2017-05-26 00:14:38 +0900

Hash#transform_values の rdoc 用コメントの文法修正。

svn: r58889 2017-05-26 00:14:39 +0900

version.h の日付更新。

eregon: r58890 2017-05-26 00:33:28 +0900

Kernel#sprintf や String#% メソッドでフォーマット文字列の末尾に "%" が単独で存在していた時に無視して "%" という文字列にしていたのを、例外を発生させるようにしています。 https://github.com/ruby/ruby/pull/1560 [ruby-core:80153] [Bug #13315]

k0kubun: r58891 2017-05-26 00:38:25 +0900

標準添付ライブラリ erb に ERB#result_with_hash というメソッドを新設して、引数に Hash を受け取ってそれをローカル変数としてセットした状態でテンプレートを解釈することができるようにしています。 https://github.com/ruby/ruby/pull/1623 [ruby-core:55985] [Feature #8631]

k0kubun: r58892 2017-05-26 00:43:49 +0900

r58891 の ERB#result_with_hash の追加について NEWS ファイルに追記しています。

ko1: r58893 2017-05-26 08:43:33 +0900

ruby 自体のテスト用のユーティリティ EnvUtil に EnvUtil.apply_timeout_scale を追加して、環境変数 RUBY_TEST_SUBPROCESS_TIMEOUT_SCALE で指定したタイムアウト値を変更するパラメータを考慮したタイムアウトを計算することができるようにしています。これを使って Thread と Process.fork を使ったテストのタイムアウト値に適用しています。

rhe: r58894 2017-05-26 10:50:20 +0900

compile.c で LABEL::unremovable というメンバが未初期化になっていたので初期化を追加しています。 r58810 で入り込んでたみたいです。 [ruby-core:81272] [Bug #13578]

ko1: r58895 2017-05-26 14:26:57 +0900

オブジェクトの比較の最適化版関数 opt_eq_func() で Symbol オブジェクトも直接 VALUE を比較する最適化を行うようにしています。 https://github.com/ruby/ruby/pull/1540 [ruby-core:80231] [Bug #13330]

nobu: r58896 2017-05-26 15:28:38 +0900

r58895 と同様に opt_eql_func() でも Symbol の比較の最適化に対応しています。即値で判定できるかどうかのチェックをする comparable_by_identity() という関数を切り出して共有するようにリファクタリングもしています。

nobu: r58897 2017-05-26 15:39:06 +0900

string.c の else 節のスタイル修正。

nobu: r58898 2017-05-26 15:39:49 +0900

r58890 で Kernel#sprintf でフォーマット文字列の末尾の単体の "%" についての変更で同じ条件分岐をしていたので冗長な分岐を削っています。 [ruby-core:80153] [Bug #13315]

sonots: r58899 2017-05-26 15:42:11 +0900

標準添付ライブラリ uriURI.unescape の rdoc 用コメントに、このメソッドが obsolete であるとことと代替メソッドについて追記しています。 https://github.com/ruby/ruby/pull/1630

nobu: r58900 2017-05-26 16:02:51 +0900

tool/runruby.rb で RbConfig::CONFIG["PRELOADENV"] があった時に LD_PRELOAD などの環境変数の設定をする処理を arch 毎の ruby-runner がない時にセットするのをやめています。cross compile ビルド時向け?

nobu: r58901 2017-05-26 16:04:43 +0900

r58858 で追加した Dir.glob のキーワード引数 base の扱いをがらっと変えて、逆に base で指定した prefix 部分を削ったものを返すようにしています。 うむ、こっちのほうが使い勝手がありそうな気がします。しかしそんなコロコロ変わっていいのかw [ruby-core:78767] [Feature #13056]

normal: r58902 2017-05-26 16:28:23 +0900

rb_alloc_tmp_buffer2() に elsize(各要素のサイズ)が VALUE のサイズの整数倍(2倍以上)だった時に誤って ruby_malloc_size_overflow() を呼ぶことがあった不具合を修正しています。 [ruby-core:81388] [ruby-core:81391] [Bug #13595]

nobu: r58903 2017-05-26 18:49:20 +0900

拡張ライブラリ win32ole で OleInitialize() を二重に呼び出していたのを修正しています。 https://github.com/ruby/ruby/pull/1629

k0kubun: r58904 2017-05-26 21:12:13 +0900

標準添付ライブラリ erb のテンプレートを展開した文字列を force_encoding でスクリプトエンコーディングに変換していたのをやめるようにしています。 String.new のかわりに "".dup とすることでテンプレート展開のために作成される ruby スクリプト片の先頭にある magic comment のエンコーディング指定が反映されるので force_encoding は不要になったということみたいです。これは高速化を目的とした変更みたいです。 https://github.com/ruby/ruby/pull/1147