ruby-trunk-changes 2020-05-08

今日は rubygems の主にテストの修正/リファクタリングなどの更新や GC.compact の対応オブジェクト型の追加、Struct で作ったクラスの new のキーワード引数の扱いの修正などがありました。

[22b1e824d7] Kazuhiro NISHIYAMA 2020-05-07 15:12:48 UTC

tool/lib/leakchecker.rb でテストで Encoding.default_internal や Encoding.default_external が変更されたままになってるのも検出しているところで STDIN/STDOUT/STDERR の encoding の設定についてもチェックするようにしています。

[00a3b8f730] git 2020-05-07 15:13:53 UTC

version.h の日付更新

[3b147c4213] Yusuke Endoh 2020-05-07 15:15:01 UTC

irbirb_info コマンドのテストで最後に IRB::CONF をクリアするようにしています。 irbrc ファイルパスが保存されてしまって 2度実行するとテストが失敗してしまいようです。

[1084b679bd] Yusuke Endoh 2020-05-07 15:19:54 UTC

irbirb_info コマンドのテストで STDIN/STDOUT/STDERR の encoding を元に戻すようにしています。

[00698f26a9] Aaron Patterson 2020-05-06 22:52:37 UTC

push_mark_stack() にオブジェクトの型が GC.compact による T_MOVED になったスロットが渡されたら rb_bug() で異常終了する分岐を追加しています。

[cbe4f75ef8] Jean Boussier 2020-05-06 16:49:25 UTC

vm_backtrace.c の rb_profile_frame_full_label() という C API で利用できるバックトレースでメソッド名を生成するところで特異メソッドのレシーバを表示するのに T_CLASS だけでなく T_MODULE のときもそのものの名前を表示するようにしています。

[7ded8fd29a] Kazuhiro NISHIYAMA 2020-05-07 16:22:38 UTC

test/ruby/test_optimization.rb のコメントの typo 修正。

[ff4f9cf95d] Aaron Patterson 2020-05-07 17:07:57 UTC

GC.compact でグローバル変数の指すオブジェクトの移動ができるようにしています。というかグローバル変数GC.compact 未対応だったんだ。

[2d27632c3c] Aaron Patterson 2020-05-07 17:15:35 UTC

内部的に保持されるバックトレースオブジェクトを GC.compact で移動可能にしています。

[56c6d520a0] Aaron Patterson 2020-05-07 21:19:08 UTC

misc/llodb_cruby.py の lldb_inspect コマンドで T_MOVED 型のオブジェクト(というか跡地)の表示に対応しています。

[b72c56681e] David Rodríguez 2020-03-27 09:22:21 UTC

ここから rubygems の更新が続きます。 rubygems のテストで定数 MiniTest の参照を Minitest に変更。

[f4022f943d] David Rodríguez 2020-03-27 09:05:28 UTC

rubygems のテストに使う minitest の依存関係を 5.13 以降に更新。

[b8ef5ed8bd] David Rodríguez 2020-03-27 09:20:31 UTC

rubygems のテストで古い mninitest 対策で Minitest::Test が存在するかとか _assertions が存在するかとかチェックしてたのが不要になったようで削除しています。

[2396f703cf] David Rodríguez 2020-03-27 09:26:27 UTC

rubygems の Gem.install の rdoc 用コメントでサンプルの出力に表示される minitest のバージョンを更新しています。

[3256480317] David Rodríguez 2020-03-27 10:24:38 UTC

rubygems のテストで Kerne#gem で minitest のバージョン指定した時の Gem::LoadError を無視していたのをやめています。

[e29c94e86b] Hiroshi SHIBATA 2020-03-30 04:46:22 UTC

b8ef5ed8bd829c515cf0ebf1a7ebcaa77a520c86 のうち Minitest::Test の存在チェックを削るほうは復活させています。

[7050f86ae1] Hiroshi SHIBATA 2020-03-30 12:38:24 UTC

3041e2626d6fd488c48106b57e378017ded678b7 の revert? のうち直近の追加じゃないほうも戻しています。

[1fe2b7f41c] Hiroshi SHIBATA 2020-05-07 11:19:42 UTC

テスト用の tool/lib/minitest で Minitest 5 との互換性のための alias 追加などを行なっています。

[2f7865bb6e] bronzdoc 2020-03-23 00:34:19 UTC

lib/rubygems/deprecate.rb に deprecate というメソッドを追加しています。

[a7a7e7bea0] bronzdoc 2020-03-23 00:37:38 UTC

lib/rubygems/deprecate.rb に deprecate_command というメソッドも追加しています。

[feb2974000] bronzdoc 2020-03-28 03:43:21 UTC

a7a7e7bea0183b0f7a21ffd60010563a97cf67e9 で追加した deprecate メソッドは既に存在してたようで、重複する古いほうの定義を削除しています。日付での指定をやめてバージョンで指定するように? したみたいですね。

[42c91de9ce] bronzdoc 2020-03-28 23:46:20 UTC

deprecate メソッドでデフォルトの期限を次の major version にするようにしています。

[ff37dd7e9e] bronzdoc 2020-03-29 00:11:40 UTC

2f7865bb6e9eaadb86f159c220478adc73883a90 以降の deprecate メソッドの仕様変更にあわせて利用している箇所の呼び出しかたも変更しています。

[80163db936] bronzdoc 2020-03-31 00:40:27 UTC

次の rubygems の major version を得るという処理をメソッドに切り出しています。

[361ed8d0a6] bronzdoc 2020-03-31 00:41:23 UTC

rubygtems のテストで assert に正規表現を渡すのに引数のかっこがないため警告が出てたのを修正。

[7db538a7c9] bronzdoc 2020-04-19 13:41:54 UTC

rubygems の deprecate, deprecate_command などのメソッドに rubygems_ という prefix を追加しています。

[0e85a39dc7] bronzdoc 2020-04-19 14:18:29 UTC

rubygems_ prefix をつけたので衝突しなくなったからか前の deprecate メソッドを復活させています。

[60cafe8ea9] Josef Šimánek 2020-04-21 10:46:04 UTC

古い deprecate メソッドを使った時に deprecate メソッド自体が deprecate であるという警告メッセージを出してたのを消しています。

[4dd46dbad0] Josef Šimánek 2020-04-10 16:58:04 UTC

rubyforge_project= メソッドを deprecate にしてたのをやめて別の方法で局所的に警告を出すようにしているようです。

[856cbbdd52] Josef Šimánek 2020-04-19 15:43:31 UTC

4dd46dbad046c0c5902f0217243c3207dbb274b5 の再修正ですが、なにをしているのかよくわからず。

[832a7b0458] Josef Šimánek 2020-04-19 16:16:41 UTC

rubygems のテストで spec.rubyforge_project を使ってる時の警告のテストを追加。

[bb3d80bbbe] Olle Jonsson 2020-03-16 06:36:41 UTC

rubygems に NameTuple の autoload 設定を追加しています。

[1464719f5f] Benoit Daloze 2020-04-05 17:58:29 UTC

rubygems のテストで $SAFE を使うものは JRuby など別実装では実施しないようにしています。

[fe2b83e225] Benoit Daloze 2020-04-07 16:09:13 UTC

rubygemsruby 実装の判定に RUBY_ENGINE 定数をみてたのを Gem::Platform::RUBY という定数のほうをみるように変更しています。

[31663e9e64] Benoit Daloze 2020-03-13 12:52:40 UTC

rubygems のテストで JRuby でのみ skip するようにしてたものを skip しないようにしています。

[2205ae8af5] David Rodríguez 2020-04-16 16:56:20 UTC

rubygems のヒアドキュメントの終端トークンを改名しただけ。

[0b40279d7d] David Rodríguez 2020-04-20 16:32:51 UTC

rubygems で全体的に? ヒアドキュメントのトークンを大文字にするようにしています。

[1ede0c15a1] David Rodríguez 2020-04-10 19:59:13 UTC

rubnygems で一部のクラスメソッドをインスタンスメソッドに変更。

[427eb2b93f] David Rodríguez 2020-04-10 20:09:41 UTC

rubygems のテストの不要な定数削除。これ本当に不要かなぁ。 File.expand_path を通らなくなってるけど。

[ce91c5615c] Peter Zhu 2020-05-07 21:05:46 UTC

test/ruby/test_defined.rb のテストメソッド名の typo 修正。

[7574b836a9] Aaron Patterson 2020-05-07 22:52:29 UTC

misc/lldb_cruby.py の lldb_inspect コマンドの T_IMEMO タイプへの対応。あれ、まだ未対応だったっけ。

[03fe7da186] Dmytro Shyrshov 2020-02-20 20:07:40 UTC

rubygems の tar ファイルのヘッダ解析で 8進数の文字列解析するのに前後の空白を許容するようにしています。使われかたを調べてみないとなんともいえないけどバイナリファイルの解析でこういうのはなんかちょっと不安な変更だなこれ……。

[3315ce6904] David Rodríguez 2020-03-25 20:22:00 UTC

rubygems の Gem::Installer.generate_plugins で Gem::Specification.latest_spec_for を呼び出す時になにやらロックを取得するようにしています。排他が必要らしい。

[a0c4d14acf] Josef Šimánek 2020-04-18 22:50:28 UTC

rubygems のテストで symbolic link を使った時の不具合を修正。

[2ece4d96f0] David Rodríguez 2020-03-23 16:51:20 UTC

rubygems のテストのブロップパラメーターの警告除去。

[43daf4d288] David Rodríguez 2020-03-23 16:51:45 UTC

rubygems のテストの未使用変数の警告除去。

[1039c32de6] David Rodríguez 2020-03-27 17:31:51 UTC

rubygems の Kernel#require の再定義で本来の Kernel#require に fallback する条件から LoadError のメッセージをみてたのをやめています。

[fd5e4ca41f] David Rodríguez 2020-04-08 18:56:29 UTC

rubygems のテストで $SAFE の対応のために taint フラグをおとすために untaint してた対応を消しています。

[c6979feb02] David Rodríguez 2020-04-08 18:59:24 UTC

rubygems のテストで -rrubygems オプションをつけてたのが不要なので削っています。

[9042787508] David Rodríguez 2020-04-08 19:10:33 UTC

rubygems のテスト用ライブラリで不要なクラス変数を削除しています。

[1635394347] Brandon Fish 2020-04-08 17:18:21 UTC

rubygems の require のテストで子プロセス起動時に -I オプションにライブラリパスを渡すようにしています。

[676d816ef1] David Rodríguez 2020-04-08 19:14:27 UTC

163539434701235b46ad14e10d573c0b85cb6b50 のように rubygems のテストで子プロセス起動するのに ruby のオプションに -I を追加するのをメソッドとして定義しれこれを使うようにしています。

[acb793b71c] David Rodríguez 2020-03-23 21:22:32 UTC

rubygems の cmake を使ったビルドのテスト? で JRuby での警告抑制のため Open3 を利用して標準出力を無視するようにしています。

[b1541606a2] David Rodríguez 2020-04-05 11:42:08 UTC

gem uninstall の出力するメッセージのディレクトリパスの修正。

[a49a131163] David Rodríguez 2020-05-02 10:00:18 UTC

rubygems のテストで同じファイルをなんども読み込まず変数に格納したものを参照するようにしています。

[c58d69e698] David Rodríguez 2020-05-02 10:02:53 UTC

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

[de57d3895e] David Rodríguez 2020-05-02 10:22:42 UTC

rubygems の check_that_user_bin_dir_is_in_path というメソッドで警告が不要な時にメソッドの先頭ですぐ return するように変更しています。

[0d7e0eb2fa] David Rodríguez 2020-05-02 10:37:57 UTC

同じく rubygems の check_that_user_bin_dir_is_in_path メソッドで String#gsub のかわりに String#tr でたりるのでそちらに変更。

[6438c5848d] David Rodríguez 2019-12-21 18:55:20 UTC

test/rubygems/test_gem_commands_setup_command.rb の assertion につけてたコメントを削除。

[53b548f438] David Rodríguez 2019-12-21 18:37:04 UTC

rubygems のテストで bundler の gemspec を生成してるところを実際の gem? をもってくるようにしているみたいです。

[d59b92221d] David Rodríguez 2020-04-27 16:49:13 UTC

rubygems の Gem::Commands::SetupCommand のメソッド template_files を bundler_template_files に改名。

[1090456370] David Rodríguez 2020-04-27 17:19:35 UTC

rubygems のテスト test/rubygems/test_gem_commands_setup_command.rb で定義してたユーティリティメソッドを private メソッドにしています。

[ed1e4504a4] David Rodríguez 2020-04-27 19:25:58 UTC

よくわかりませんが rubygems のテストでダミーの証明書の pem ファイルに出力する内容を変更しています。内容 PEM 形式じゃないけど元からそうなのでそういうものらしい。

[74867e2dc1] David Rodríguez 2020-04-27 19:29:40 UTC

rubygems のテストでブロックパラメータが改行のあとに書かれてたのを修正。こういう書きかたもできるんだ。

[5400811db9] David Rodríguez 2020-04-27 19:37:03 UTC

rubygems のテストで gemspec などファイルを生成する処理を一般化してメソッドにしています。

[41b288476e] David Rodríguez 2020-04-27 20:13:21 UTC

rubygems のテストのユーティリティメソッドの private 化。

[d2087f1cde] David Rodríguez 2020-04-27 20:16:16 UTC

rubygems で複数ファイルに対して install_file を呼ぶのをまた別のユーティリティメソッドとして切り出すリファクタリング

[64e89713da] David Rodríguez 2020-04-27 20:23:16 UTC

rubygems で特定のディレクトリ配下のファイル名のリストに対応するファイルを削除する処理をメソッドに切り出すリファクタリング

[ece1690105] David Rodríguez 2020-04-27 17:27:32 UTC

rubygems で bundler を default gem としてインストールした時に man ページもインストールするようにしています。

[241950b1c5] David Rodríguez 2020-04-27 12:31:26 UTC

ece1690105b9e2887eeab36f67ad414049137ae2 の man ページファイル群を探すパスに RbConfig::CONFIG を使うように修正しています。

[6e80cabb90] Nobuyoshi Nakada 2020-03-08 08:38:37 UTC

rubygems で String#split を無引数で読んでたところがあったのを明示的に空白を指定するようにしています。無引数だと $; の指定の影響を受けるので。ruby 本体というか標準添付ライブラリでもそういう変更ありましたね。

[8250000187] David Rodríguez 2020-03-29 19:22:34 UTC

rubygems で後で使いまわすためということで処理結果を変数に代入するリファクタリング

[4a417b08ae] David Rodríguez 2020-03-29 19:45:39 UTC

8250000187726b161e7491be6653dafeebad59b2 で変数に格納したのを使いまわして spec.require_paths の最後に "/" を追加しておくようにしています。これ一緒に変更してよかったんじゃないかな……。

[b454b4e310] bronzdoc 2020-04-26 17:54:32 UTC

rubygems の Gem::MissingSpecError 例外で extra_message という引数を追加して追加メッセージが埋め込めるようにしています。

[7fb694fdb0] bronzdoc 2020-04-26 17:55:37 UTC

b454b4e3107921348bc13f8c024239f82965ed4a の変更を利用して Gem::Specification#activate_dependencies で Gem::MissingSpecError が発生した時に対象の gemspec ファイルパスを追加メッセージに含めるようにしています。

[fca24dd121] David Rodríguez 2020-04-02 17:14:04 UTC

rubygems のテストの古い ruby での Windows 向けの対応が不要になってたのを削除しています。

[2efe741902] David Rodríguez 2020-04-02 17:43:21 UTC

rubygems のテストで一時ディレクトリを環境変数 TMPDIR にセットするようにしています。

[a433b82f13] David Rodríguez 2020-04-02 17:45:43 UTC

rubygems でテスト時に Dir.tmpdir 直下に Gemfile があったらエラーにするようにしてたのを消しています。なんか昔そういう事件があったんでしょうね。

[b5a0db8be0] David Rodríguez 2020-03-27 11:18:35 UTC

rubygems のテストで不要になったディレクトリ作成を削除。

[314d7f897c] David Rodríguez 2020-04-25 12:09:24 UTC

rubygems が存在したら builder という gem を利用してたのを消しています。 XML 関連の gem みたいですけど文字列の Encoding がらみのなにかの機能だけ使ってたみたいですね。

[ce88e2a8aa] David Rodríguez 2020-04-01 11:35:09 UTC

rubygems のテストで JRuby 実装だった場合に環境変数に JARS_SKIP というのを設定するようにしています。 JRuby での警告抑制のためと思われます。

[c982c5efac] David Rodríguez 2020-04-10 19:38:30 UTC

rubygems のテストのひとつを JRuby 環境で skip するようにしています。

[0e195c82c1] David Rodríguez 2020-05-04 11:08:29 UTC

rubygems の setup コマンドで gauntlet_rubygems.rb というファイルがあったら消すようにしています。古い rubygems でなんらかの意味のあったファイルみたいです。

[5df6082786] David Rodríguez 2020-04-05 13:31:10 UTC

よくわかりませんが rubygems で gunzip メソッドで Zlib::GzipReader.new が例外を発生した時のそのメッセージを例外オブジェクト自体の inspect の結果にすりかえるようにしています。デバッグ用かな。

[c832e3faa4] David Rodríguez 2020-03-29 20:05:40 UTC

acb793b71c2465c2cc527393eab57fe29f53f665JRuby での警告抑制のため Kernel#system のかわりに Open3 を使うようにしたところで require "open3" が漏れてたので追加。

[acc86570dd] Vít Ondruch 2019-04-02 08:52:44 UTC

rubygems の Gem::Specification.stubs_for の変更。ちょっとよくわらかない。

[46462200af] Vít Ondruch 2019-08-27 11:16:27 UTC

rubygems のテストで acc86570dd8cc1920d1c55da7836d6c60d98a6d5 でいじってた Gem::Specification.stubs_for に同じ名前を連続して渡した時の挙動についてのテストを追加しています。

[18ac783ea6] David Rodríguez 2020-03-04 20:10:31 UTC

Gem::Specification.stubs や stubs_for で Gem.loaded_specs を参照するのをやめています。

[58af4c0a1f] Hiroshi SHIBATA 2020-04-28 21:50:02 UTC

rubygems のテストで rubygemsapi key をファイルに書き出す処理をメソッドに切り出して使いまわすようにしています。

[ab1b31ffe0] Hiroshi SHIBATA 2020-04-28 22:29:49 UTC

58af4c0a1fdf15e1624867938d5a9ce6be8403e3 で切り出したメソッドをさらに別のテストファイルの setup でも利用するようにしています。

[4e436e605c] Hiroshi SHIBATA 2020-04-29 10:23:21 UTC

rubygems のテスト test/rubygems/test_gem_commands_signout_command.rb の setup で rubygems の credential ファイルを削除していたのをやめています。

[b9031b1043] Hiroshi SHIBATA 2020-04-29 11:17:43 UTC

bundler のテストで ~/.gemrc ファイルの対応についてのテストを追加しています。

[93293043f1] David Rodríguez 2020-04-29 12:18:59 UTC

rubygems のテストで credential ファイルの掃除を各テストメソッドごとに行なうようにしています。

[07d4ad935d] David Rodríguez 2020-04-29 12:49:04 UTC

rubygems のテストで不要な teardown メソッド定義の削除。

[ac2c07e983] Hiroshi SHIBATA 2020-05-08 03:39:30 UTC

93293043f135dec5a972378682b9e947fba7c4a6rubygems のテストでの credential ファイル掃除の方針変更を revert しています。

[da345adc1c] Hiroshi SHIBATA 2020-05-08 05:27:41 UTC

rubygems の cmake によるビルドのテストで使ってる Open3.capture2e が cmake コマンドが存在しなくて Errno::ENOENT を発生させた時に skip するようにしています。

[adf709a785] Marc-Andre Lafortune 2020-05-08 03:58:19 UTC

Struct で作ったクラスの new メソッドの実装を rb_class_s_new() を改名した rb_class_new_instance_pass_kw() を利用するようにしています。 Struct で作ったクラスでキーワード引数の警告が出る問題の対応のようですが 2.8 以降キーワード引数の扱いがデフォルトで問題なくなったからかなぁ。バックポートについての注釈もありますが、要は Struct.new に keyword_init: false が指定されててもキーワード引数対応の関数を使って大丈夫ということかな。たくさん Pull Request の参照がついてます。 https://github.com/ruby/ruby/pull/2795 https://github.com/ruby/ruby/pull/2944 https://github.com/ruby/ruby/pull/3045 https://github.com/ruby/ruby/pull/3093 [Bug #16465] [Bug #16801]

[8a504b224f] Nobuyoshi Nakada 2020-05-08 12:19:39 UTC

rb_struct_initialize() で引数を格納している配列オブジェクト values を RB_GC_GUARD() で GC mark 漏れしないようにしています。