ruby-trunk-changes 2021-05-17

今日は主に拡張ライブラリ psych の更新で Psych.load が safe_load 相当の挙動になり unsafe_load が追加される変更や、拡張ライブラリ json の更新などがありました。

[229cb0fcdb] Gabriel Nagy 2021-05-16 23:33:08 UTC

mswin および mingw で manifest ファイルというのを追加して Windows のロングパスというのをサポートできるようにしています。この manifest ファイルは XML でアプリケーションの設定などを記述したものみたいです。 [ruby-core:76256] [Bug #12551]

[35981cb5e9] git 2021-05-16 23:33:31 UTC

version.h の日付更新

[167cff6a5d] Yusuke Endoh 2021-05-16 23:49:53 UTC

cf1e1879f12ad547f95fe94ab62b4d960e804eb8 で拡張ライブラリ objspace に objspace/trace というライブラリを追加したのを NEWS に追記しています。 [ruby-core:103102] [Feature #17762]

[830778db95] Jeremy Ebler 2021-02-08 02:39:07 UTC

拡張ライブラリ psych で Psych.dump で YAML を出力する時にカスタムした要素? も整形されるようにしているようです。具体的にどのテストが今回の変更に対応しているのかよくわからず。

[a3ceed50b8] Jean Boussier 2021-02-25 17:36:15 UTC

拡張ライブラリ psych で文字列でないキーによる Hash を load した時に symbolize_names: true が指定されててもエラーにならないようにしています。

[df86a13cc1] Hiroshi SHIBATA 2021-05-10 09:10:13 UTC

test/lib/core_assertions.rb や test/lib/envutil.rb にテスト用のライブラリを移植していますが、コミットログをみるとこれは拡張ライブラリ psych の upstream に ruby 本体から移植したものが逆輸入されたものみたいです。

[bcaa6aecea] Hiroshi SHIBATA 2021-05-10 09:38:01 UTC

df86a13cc150f573b1078779667a1573747d3dbd の一部 test/lib/helper.rb の Test::Unit::TestCase#windows? の定義を revert しています。

[c7c2ad5749] Aaron Patterson 2021-05-10 16:50:06 UTC

拡張ライブラリ psych に Psych.unsafe_load と Psych.unsafe_load_file というメソッドを新規追加して、Psych.load と Psych.load_file はその alias にしています。将来的には Psych.load が Psych.safe_load と同じ挙動をする予定とのこと。

[fbb4e3f96c] Aaron Patterson 2021-05-10 16:50:06 UTC

と、思ったら拡張ライブラリ psych で Psych.load が Psych.safe_load の wrapper になるように再定義されています。あれ、alias も残ってるけどどっちが正解なんだろう……。

[b0e21197ce] Aaron Patterson 2021-05-11 20:35:16 UTC

拡張ライブラリ psych のバージョンを 4.0.0 に更新しています。

[42b20bdbfe] Aaron Patterson 2021-05-11 20:49:20 UTC

拡張ライブラリ psych の Psych.load などのメソッドの互換性のために残していた省略可能引数を受けてたところなどを削除しています。

[da5b283963] Yusuke Endoh 2021-05-17 02:36:16 UTC

fbb4e3f96c10de2240f2d87eac19cf6f62f65fea の Psych.unsafe_load の導入に伴なって標準添付ライブラリ ostruct のテストで YAML.load を使ってたところも YAML.unsafe_load に変更しています。

[8e91b969df] Hiroshi SHIBATA 2021-05-17 02:59:59 UTC

fbb4e3f96c10de2240f2d87eac19cf6f62f65fea で Psych.load が safe_load 相当になったのに対応するため rubygems のテストで YAML.load{_file} を使ってたところで YAML.unsafe_load{_file} を使うように変更しています。

[d8fd92f620] Hiroshi SHIBATA 2021-05-17 03:04:40 UTC

fbb4e3f96c10de2240f2d87eac19cf6f62f65fea で Psych.load が safe_load 相当になったのに対応するため標準添付ライブラリ rdoc で YAML.load を使ってたところを YAML.unsafe_load を使うように変更しています。

[ffdf0232ef] Yusuke Endoh 2021-05-17 03:50:21 UTC

d8fd92f62024d85271a3f1125bc6928409f912e1 の続き。標準添付ライブラリ rdoc で YAML.unsafe_load に変更したうちオプションファイルの内容をロードする時は YAML.load に戻しています。

[dfecc650c3] Hiroshi SHIBATA 2021-05-17 03:57:32 UTC

標準添付ライブラリ yaml/store でも fbb4e3f96c10de2240f2d87eac19cf6f62f65fea の Psych.load が safe_load 相当になったのに対応するため明示的に YAML.unsafe_load を利用するようにしています。

[a0e97b0e2e] Hiroshi SHIBATA 2021-05-17 04:36:55 UTC

mspec および rubyspec でも fbb4e3f96c10de2240f2d87eac19cf6f62f65feaYAML.load が safe_load 相当になったのに対応するため一部明示的に YAML.unsafe_load を利用するように変更しています。

[f367b4ffe7] Yusuke Endoh 2021-05-17 05:21:47 UTC

拡張ライブラリ psych のテストで assert の引数の順序が逆で期待している値のほうが後になってたのを修正しています。

[31a757a442] Yusuke Endoh 2021-05-17 05:22:42 UTC

拡張ライブラリ psych のテストで環境の libyaml のバージョンによって少し dump 結果が変化するのを吸収するように assertion の書きかたを変更しています。

[e36da7ba18] Hiroshi SHIBATA 2021-05-17 06:28:47 UTC

df86a13cc150f573b1078779667a1573747d3dbd で psych から逆輸入されてたテスト用のユーティリティはやはり間違いだったみたいで revert しています。

[008a63c477] Yusuke Endoh 2021-05-17 06:32:41 UTC

a0e97b0e2e4314a0815d09beb825e38f234778da で mspec と rspec でも YAML.unsafe_load を使うようにしたのを revert しています。古い ruby 対策かな。

[93fb186dd0] Yusuke Endoh 2021-05-17 06:42:22 UTC

a0e97b0e2e4314a0815d09beb825e38f234778da および 008a63c477c35ff72344370005029fc73c5ae6eb の続きで mspec で YAML.unsafe_load の存在チェックを追加しています。また rubyspec ではバージョンが 3.1 の時(つまり master の時)は YAML.unsafe_load のテストをするように追加して、YAML.load のテストは 3.0 以前でのみ実行するようにしています。

[1f91627c8e] Hiroshi SHIBATA 2021-05-17 10:22:52 UTC

GitHub Actions の古い ruby で rubyspec のチェックをする .github/workflows/spec_guards.yml から 2.5 と 2.6 での実施を削除しています。

[8a974dc83c] Masafumi Koba 2020-12-23 02:20:13 UTC

ext/json/lib/json.rb の不要なインデント削除。

[1d2b4ccaf2] Jean Boussier 2020-11-18 10:33:42 UTC

拡張ライブラリ jsonjson_string_unescape() という関数で引数に結果格納用の String オブジェクトの VALUE を受け取ってたのをやめて関数内で確保するようにしています。コミットログ Refactor って書いてるけどリファクタリングというにはちょっと大きな変更ですね。

[2de594ca98] Jean Boussier 2020-11-18 10:59:27 UTC

拡張ライブラリ jsonjson_string_unescape() の引数に intern と symbolize を追加してキーの Symbol 化を parse 時点で対応するようにして不要なオブジェクト確保を回避するようにしているようです。なるほど、1d2b4ccaf28596efee65c59dc69ea489a4237079 はこのための前フリだったのかな。

[ee611341c9] Hiroshi SHIBATA 2021-02-23 01:05:13 UTC

拡張ライブラリ json の gemspec ファイルの依存 ruby バージョンを 2.3 以降に更新しています。