ruby-trunk-changes 2021-03-28

今日は Hash#transform_keys! のブロックを途中で中断した時の不具合修正や拡張ライブラリ pathname の不具合修正などがありました。

[44736a6b7a] Benoit Daloze 2021-03-27 12:02:38 UTC

spec/mspec に upstream から最新版をマージしています。

[95d9fe9538] Benoit Daloze 2021-03-27 12:02:41 UTC

spec/ruby に upstream から最新版をマージしています。

[0a544c0c35] Kenichi Kamiya 2021-03-27 23:47:42 UTC

NameError.message という内部的なクラスの to_str で Module#name が文字列でないオブジェクトを返した時に SEGV することがあった不具合を修正しています。 [ruby-core:103062] [Bug #17754]

[cc15ae3431] git 2021-03-27 23:48:06 UTC

version.h の日付更新

[e398a0e53a] S-H-GAMELINKS 2021-03-26 15:46:04 UTC

error.c の rb_ident_hash_new() の宣言が既に利用されてなかったので削除しています。

[31e0382723] Kenichi Kamiya 2021-03-28 00:14:57 UTC

Hash#transform_keys! でブロックで break したり大域脱出したりして途中で止めると、receiver の Hash でブロックが呼ばれなかった key が消えてたのを修正しています。最近の変更の影響かと思ったけど rubyspec には元の挙動を確認するテストがあって、昔からみたいですね。まあ、あきらかに不具合だと思いますが。 [ruby-core:102949] [Bug #17735]

[5e5fb72f99] Nobuyoshi Nakada 2021-03-28 00:42:26 UTC

31e0382723bfb35cffe3ca485dd0577668cafa07 の再修正。導入した一時利用の Hash オブジェクトを rb_hash_clear() を呼んで空にしておくようにしています。メモリ節約のためかな。 [ruby-core:102949] [Bug #17735]

[fb6ebe55d9] Nobuyoshi Nakada 2021-03-28 00:48:45 UTC

31e0382723bfb35cffe3ca485dd0577668cafa07 のさらに再修正。導入する一時オブジェクトの内容を展開する Array オブジェクトを rb_ary_tmp_new() で生成する内部的なオブジェクトを利用するようにしています。 [ruby-core:102949] [Bug #17735]

[38ea2306d2] Nobuyoshi Nakada 2021-03-28 04:57:48 UTC

tool/sync_default_gems.rb で default gems の upstream からのコミットの cherry-pick 時にコミットログの Co-Authored-By を保持するようにしているみたいです。

[447e095413] Hiroshi SHIBATA 2021-02-10 06:53:44 UTC

拡張ライブラリ pathname のテストで Pathname.glob が 3.1 から ".." を返さなくなったのにあわせたテストが 3.0 以前でエラーになってたので RUBY_VERSION で判定結果を変えるように対応しています。

[9af57eeed6] Kenichi Kamiya 2021-03-27 05:45:10 UTC

拡張ライブラリ pathname の Pathname.split で File.split が配列でない値を返した場合(再定義されてた場合?)に SEGV する可能性があったのを修正しています。 [ruby-core:103063] [Bug #17755]

[522d4cd32f] Kenichi Kamiya 2021-03-28 05:09:52 UTC

31e0382723bfb35cffe3ca485dd0577668cafa07 および 5e5fb72f99701dc27c66ab148471893f14e6d6f0fb6ebe55d91187d9635e0183d47dbf38e95b1141 の追加修正。 Hash#transform_keys! の実装で中間オブジェクトを使い終わった時に rb_gc_force_recycle() を呼び出して強制的にオブジェクトの slot を解放するところまでさせています。 [ruby-core:102949] [Bug #17735]

[603d799520] Nobuyoshi Nakada 2021-03-28 05:07:18 UTC

tool/sync_default_gems.rb で default gems の upstream からコミットを cherry-pick する時に指定の範囲のコミットがなかった時にメッセージを表示して処理を中断するようにしています。

[49c1c2dce3] Nobuyoshi Nakada 2021-03-28 09:52:19 UTC

tool/sync_default_gems.rb の git filter-branch に渡すコマンドとして ruby を起動するためのコマンドラインruby そのものや tool/sync_default_gems.rb のフルパスを渡す時に shellescape でエスケープしておくようにしています。