今日は Hash#transform_keys と Hash#transform_keys! メソッドの新規追加、拡張ライブラリ psych の更新、zlib の不具合修正などいろいろ変更がありました。
normal: r59322 2017-07-14 05:47:36 +0900
system や Process.spawn のオプションの rlimit_xxx 系のものはキーの Symbol の判定に id2name() で文字列化したものをチェックするようになっていて、dynamic なもの(to_sym で作られたもの)だときちんと受け取れてなかったので、rb_sym2str() で文字列化してチェックする rlimit_type_by_sym() という関数に切り出して修正しています。 [ruby-core:82033] [Bug #13744]
svn: r59323 2017-07-14 05:47:37 +0900
version.h の日付更新。
kazu: r59324 2017-07-14 08:55:41 +0900
test/ruby/test_rubyoptions.rb でファイルパスのデリミタの書き替えに String#gsub! を使ってたところを tr! に変更しています。
nobu: r59325 2017-07-14 13:43:16 +0900
r59322 の Process.spawn などの rlimit_xxx のオプションの処理の修正の追加修正。 Symbol の元になる文字列に NUL 文字が含まれていた時のことを考慮するようにしています。 [ruby-core:82033] [Bug #13744]
hsbt: r59326 2017-07-14 14:33:15 +0900
tool/sync_default_gems.rb に psych のエントリを追加しています。
hsbt: r59327 2017-07-14 15:15:58 +0900
拡張ライブラリ psych を upstream から 3.0.0.beta3 をマージしています。
mrkn: r59328 2017-07-14 15:44:00 +0900
Hash#transform_keys と Hash#transform_keys! メソッドを新規追加しています。キーをブロックパラメーターとしてブロックを呼び出して、その結果でキーを置き換えた Hash を返す、または破壊的に変更するというメソッドです。ほほー、キーの Symbol <-> String を変換したいっていうのはありがちですね。 [ruby-core:81290] [Feature #13583]
hsbt: r59329 2017-07-14 16:13:17 +0900
r59329 で psych の .gemspec ファイルのバージョン更新が漏れていたので更新しています。
hsbt: r59330 2017-07-14 16:47:21 +0900
拡張ライブラリ date の .gemspec ファイルを更新しています。
knu: r59331 2017-07-14 17:46:10 +0900
標準添付ライブラリ set の Set#inspect のテストで String#include? であいまいにチェックしていたところを完全一致でチェックするようにしています。
knu: r59332 2017-07-14 17:46:13 +0900
標準添付ライブラリ set の Set#to_s を #inspect への alias にしています。 [ruby-core:81753] [Feature #13676]
naruse: r59333 2017-07-14 18:17:55 +0900
拡張ライブラリ zlib の Zlib::GzipReader#pos がファイルの先頭で ungetbyte や ungetc を呼ぶとアンダーフローして非常に大きな正の整数がかえるという不具合を修正しています。 [ruby-core:81488] [Bug #13616]
rhe: r59334 2017-07-14 18:41:05 +0900
r59328 で新規追加された Hash#transform_keys! で古いキーの削除のために keys の配列を参照する時にブロックの呼び出し後はサイズが変更されている可能性があるので、先に取り出しておくようにしています。
keys は klass=0 にして hidden にしておいたほうがいいかもしれないですね。まあそれを言いだすと一時的なオブジェクトを使っているところなんていっぱいあると思いますけど。
nobu: r59335 2017-07-14 19:31:05 +0900
拡張ライブラリ ripper のビルド時に環境変数 VPATH を common.mk から伝播させるようにしています。 nmake でソースディレクトリ外でのビルド時の対応ですかね。
nobu: r59336 2017-07-14 19:53:35 +0900
File#read などのオプションで :newline が指定されたら text mode が指定されたものとして自動的に扱うように変更しています。 [ruby-core:80270] [Bug #13350]