ruby-trunk-changes 2021-05-12

今日は主に Reinfments を使った時のメソッドキャッシュの不具合修正や case 文の when に Rational や Complex のリテラルを使った時の不具合修正、 rubygems のテストに test-unit を利用するようにするための変更などがありました。

[39a2ba5cc5] Alan Wu 2021-05-11 16:05:06 UTC

Refinements を使ったメソッドのメソッドキャッシュのクリアの条件が不足していて Refinements で上書きされる可能性のあるメソッドが refine してない時にも影響して本来のメソッドが呼ばれなくなるという不具合を修正しています。いやーしかしテストみてもかなり複雑な状況ですね。 [ruby-core:103469] [Bug #17806]

[c9e02d8919] git 2021-05-11 16:05:27 UTC

version.h の日付更新

[e8ae922b62] eileencodes 2021-01-07 18:28:04 UTC

クラス変数の参照にインラインキャッシュの実装を追加しています。

[08de37f9fa] eileencodes 2021-04-23 17:59:16 UTC

e8ae922b62adb00a80d3d4c49f7d7b0e6026eaba の続き。クラス変数の代入時に同時にインラインキャッシュへのセットも行うようにしています。あーインラインキャッシュといっても実体はグローバルなテーブルなのか。だとすると Ractor 間の排他はしてなさそうだけど大丈夫かな。

[07f055bb13] Aaron Patterson 2021-05-11 20:30:40 UTC

e8ae922b62adb00a80d3d4c49f7d7b0e6026eaba08de37f9fa3469365e6b5c964689ae2bae0eb9f3 のクラス変数のインラインキャッシュを revert しています。

[cc1ea6e023] Takashi Kokubun 2021-05-11 22:18:44 UTC

GitHub Actions の Windows 環境で実行できない rubygems や resolv のテストなどの skip を追加しています。また workflow で make check とまとめていたのを make test, make test-all, make test-spec に分割して並列に実行するようにしています。 https://github.com/ruby/ruby/pull/4487

[ee1725cecb] Jeremy Evans 2021-05-11 22:45:52 UTC

doc/syntax/methods.rdoc のキーワード引数の 2.7 での移行中の仕様についての記述を削除しています。

[773c690f25] Shugo Maeda 2021-05-11 00:45:48 UTC

標準添付ライブラリ net/ftp のバージョンを 0.1.2 に更新します。

[2bc293e899] 卜部昌平 2021-05-07 01:04:08 UTC

case 文の when 節に 1r のような Rational のリテラルを渡すと T_RATIONAL がくることが考慮されていなくて SEGV する恐れがあった不具合を修正しています。 [ruby-core:103759] [Bug #17854]

[d0e6c6e682] 卜部昌平 2021-05-07 02:07:11 UTC

2bc293e899c9d32dcd794a73de8925c49ecf8f15 の続きで 1/3r のような値の時に分子分母両方を比較するように再修正しています。 [ruby-core:103759] [Bug #17854]

[cc0dc67bbb] 卜部昌平 2021-05-07 03:49:32 UTC

2bc293e899c9d32dcd794a73de8925c49ecf8f15 の続きでさらに case 文の when 節に 1i のように Complex の値が渡されたケースも対応するようにしています。 [ruby-core:103759] [Bug #17854]

[e1eff837cf] 卜部昌平 2021-05-07 04:31:15 UTC

d0e6c6e682b9ba2b0309a5177933a0628e8ef316 および cc0dc67bbbe1951ff90004bc987f78545625d772 の Rational と Complex の比較を cdhash_cmp() という関数を用いて比較するようにしています。各要素が Bignum になる可能性があるので VALUE 値を直接比較してはいけなかったため。 [ruby-core:103759] [Bug #17854]

[0ab0b86c84] 卜部昌平 2021-05-10 00:59:10 UTC

e1eff837cf12a8e813de9d4ff2db50c9b68b86b5 のさらに追加修正。分子分母や実部虚部の比較を && で連結してたの cdhash_cmp() に変更したため || にする必要があったので修正しています(一致する場合 0 がかえってくるので)。 [ruby-core:103759] [Bug #17854]

[6911b4bc82] 卜部昌平 2021-05-10 01:02:12 UTC

2bc293e899c9d32dcd794a73de8925c49ecf8f15 および cc0dc67bbbe1951ff90004bc987f78545625d772 で追加した case 文のテストが Rational のテスト用のファイルに入ってたので test_syntax.rb に移動しています。

[3df7c967bb] Koichi Sasada 2021-05-12 03:53:14 UTC

magic comment #shareable_constant_value: literal のテストのために class_eval をブロックつきで読んでたところが定数が外のスコープで定義されてしまっていたので? 文字列で渡すように修正しています。

[5a6af44e20] Koichi Sasada 2021-05-12 03:57:53 UTC

拡張ライブラリ objspace の ObjectSpace.memsize_of に RubyVM::InstructionSequence を渡した時のテストが繰り返し実行すると失敗するとのことで一旦 skip するようにしています。

[cddeee21e9] Hiroshi SHIBATA 2019-06-29 11:16:36 UTC

rubygems のテスト用の Gem::TestCase の実装に minitest のかわりに test-unit を使うようにしています。

[26cbda8dc9] Hiroshi SHIBATA 2019-06-29 11:16:49 UTC

rubygems のテストの test-unit 対応のため capture_io のかわりに capture_output を利用するように変更しています。

[3c9633acfc] Hiroshi SHIBATA 2020-02-19 06:00:24 UTC

26cbda8dc903d5d663f6c759be073df3346c6874 の修正漏れの capture_output への変更を追加。

[183174475c] Hiroshi SHIBATA 2020-02-19 06:10:29 UTC

rubygems のテストの test-unit 対応のため refute_match に文字列を渡していたところを正規表現を渡すように変更しています。

[81d793a921] Hiroshi SHIBATA 2020-03-18 08:56:41 UTC

rubygems のテストの test-unit 対応のため assert_output を使っていたところを capture_output を利用するように書きかえています。

[3948be3503] Hiroshi SHIBATA 2020-05-25 12:05:45 UTC

rubygems のテストの test-unit 対応のため assert_path_exists を使っていたところを assert_path_exist に変更しています。

[958f9d425a] Hiroshi SHIBATA 2020-05-25 12:58:27 UTC

rubygems のテストの capture_io を capture_output に変更しています。

[a1c416460b] Hiroshi SHIBATA 2020-05-25 13:11:47 UTC

rubygems のテストで assert_silent を使っていたところを capture_output を使って書きかえています。

[2c0072dec5] Hiroshi SHIBATA 2020-05-27 03:00:04 UTC

rubygems のテストで assertion のないテストメソッドを通すために assertions をインクリメントだけしてたのを assert true を実行しておくように書きかえています。 minitest の内部実装に依存しないようにするためかな。

[c30594bb0c] Hiroshi SHIBATA 2021-05-11 03:25:46 UTC

rubygems のテストの test-unit 対応のため assert_raises を assert_raise に変更しています。

[5ed9d3f16f] Hiroshi SHIBATA 2021-05-11 03:34:03 UTC

rubygems のテストで capture_io を capture_output に変更しています。

[cd375e455e] Hiroshi SHIBATA 2021-05-11 04:04:12 UTC

rubygems のテストで assert_output を capture_output を使って書きかえています。

[d5237c5d10] Hiroshi SHIBATA 2021-05-11 04:04:32 UTC

rubygems のテスト用のユーティリティとして capture_subprocess_io というメソッドを追加しています。minitest の実装で代替がないものを移植したのだと思います。

[9b5e4ce611] Hiroshi SHIBATA 2021-05-11 04:11:36 UTC

a1c416460b2cda7df6810ef8e9619d1903242de4rubygems のテストで assert_silent を capture_output で書きかえた時に capture した出力をチェックする assertion の呼び出しが変数のスコープ外になってしまっていたのを修正しています。

[7b3b48549b] Hiroshi SHIBATA 2021-05-11 04:12:33 UTC

cd375e455e21e19d966c6cee86714a41cac67878rubygems のテストで assert_output を capture_output で書きかえた時に出力を assert_nil でチェックしてたのを assert_empty に変更しています。

[ff3f990499] Hiroshi SHIBATA 2021-05-11 04:59:28 UTC

rubygems のテストの minitest/mock への依存を削除しています。

[3456335a9c] Hiroshi SHIBATA 2021-05-11 07:31:06 UTC

rubygems のテスト用のユーティリティに Object#stub メソッドを移植してきています。 minitest/mock のかわりに使うため。

[00f5b4b546] Hiroshi SHIBATA 2021-05-11 07:31:18 UTC

他にも rubygems のテストで Minitest::Mock クラスを直接を利用していたところがあったので利用しないように書きかえています。

[129bc04ab7] Hiroshi SHIBATA 2021-05-11 07:45:31 UTC

rubygems のテストのスタイルの修正。

[d33888bf96] Hiroshi SHIBATA 2021-05-11 09:21:00 UTC

rubygems のテストで skip を pend を使うように変更しています。

[655727ee1b] Hiroshi SHIBATA 2021-05-11 09:31:47 UTC

3456335a9c624cd5f475fc71cc65e72d97acb86erubygems に移植してきた Object#stub メソッドの定義に移植元の URL をコメントで追加しています。

[9620a30b1b] Hiroshi SHIBATA 2021-05-11 11:23:33 UTC

lib/rubygems/test_case.rb の不要な空行削除。

[32d25660b9] Hiroshi SHIBATA 2021-05-11 11:24:43 UTC

rubygems のテスト用のコードに環境変数 RG_BISECT_SERVER_PLUGIN があるとそれを require する機能を削除しています。minitest にそういう機能があったみたいですね。

[b314885af0] Hiroshi SHIBATA 2021-05-11 11:27:16 UTC

rubygems のテスト用ユーティリティに minitest から移植してきたメソッドの参照 URL を master でなくコミットハッシュ指定で永続的な URL を使うようにしています。

[bef49e6e8d] Hiroshi SHIBATA 2021-05-11 12:00:54 UTC

ruybgems のテストメソッドで begin によるブロックを追加しています。ちょっとよくわかりませんが JRuby の環境のための修正だそうです。

[cdcfe1082c] Hiroshi SHIBATA 2021-05-11 04:48:16 UTC

rubygems のテストから assert_performance_linear という assertion を利用しているテストを削除しています。 minitest の機能で代替がなく不安定なものなので。

[81720b947a] Hiroshi SHIBATA 2021-05-12 07:01:49 UTC

rubygems のテストの assert_raises を assert_raise に変更。

[523a6998dd] Koichi Sasada 2021-05-12 08:35:57 UTC

5a6af44e204ed03616c0b0f43a7aeeeb79f4d0ce で一時的に skip していた拡張ライブラリ objspece の ObjectSpace.memsize_of のテストで、基準とするサイズを Object.new で作ったものから Class.new.new したものに変更しています。これなんでかなと思ったんですがちょっと前にインスタンス変数用のインデックステーブル用の領域をオブジェクト確保時に確保してしまうという変更があったので、その影響でどこかで Object のインスタンスインスタンス変数を追加するコードがあった場合にその影響で増えたみたいです。なるほどなー。