ruby-trunk-changes 2022-09-30

今日は Method,UnboundMethod が継承したメソッドの alias や可視性変更だけ行なわれたメソッドに対しての owner の判定の挙動を前に戻す変更や、Data クラスの追加(復活、ですが前の Data クラスとは用途が違うようです)、GC.compact 中に GC がトリガーされる不具合修正などがありました。

[866cfb248e] Shugo Maeda 2022-09-29 12:03:57 UTC

gems/bundled_gems の net-imap のバージョンを 0.3.1 に再度更新しています。

[4ced7bfb23] git 2022-09-29 12:05:31 UTC

866cfb248e269f64951c852170732243c3e32d9d に追随して NEWS の bundled gems のバージョンリストも更新しています。

[892f350a7d] Matt Valentine-House 2022-09-28 13:45:43 UTC

GC.compact で Array オブジェクトを移動する時に Variable Width Allocation によって拡張された slot 内にバッファを埋め込む場合に元の配列が transient array で確保されていた場合に RARRAY_PTR() が GC をトリガーしてしまう可能性があるとのことで rb_ary_make_embedded() 内でRARRAY_PTR() を利用しないように実装しなおしています。 [ruby-core:110136] [Bug #19029]

[94cea3e4d0] Benoit Daloze 2022-09-28 16:54:05 UTC

5473c1064d5e82d706b554f2fe5a5b41900f6b14 などの変更で Method#super_method と UnboundMethod#super_method の挙動が変化してしまっていたのを修正しています。

[aa53d69aa2] Benoit Daloze 2022-09-28 17:04:06 UTC

rubyspec に {Method,UnboundMethod}#owner の継承したメソッドについてのテストを追加しています。

[6b7d32a5e5] Benoit Daloze 2022-09-28 17:49:13 UTC

{Method,UnboundMethod}#owner の再修正。継承したメソッドに対して alias や private などの可視性の変更だけした method entry の扱いを修正しているようです。まあしかしどの仕様が正解なのかよくわからないですね。 [ruby-core:108235] [Bug #18729]

[aa490f9442] Benoit Daloze 2022-09-29 10:09:01 UTC

6b7d32a5e54088b6b4014529bbf2b4b8c1a96029 の変更をみやすくするために変更したよということですが、たぶんこれ pull request でまとめてみるとみやすくなったということで、squash commit されてないのでこれだけみてもなって感じですかね?

[58b3a535cc] Nobuyoshi Nakada 2022-09-29 08:31:39 UTC

tool/lib/vcs.rb の VCS::SVN.short_revision の定義を VCS.short_revision に移動しています。

[f70ba9cf80] Nobuyoshi Nakada 2022-09-30 01:17:46 UTC

tool/lib/vcs.rb の VCS.detect でリポジトリの種類をディレクトリ構造から検出する時に登録されたクラスに COMMAND 定数があったらそれを --version オプションをつけて呼び出してみてコマンドが実行可能かどうかもチェックするようにしています。

[5a5644dadc] Nobuyoshi Nakada 2022-09-29 11:03:51 UTC

tool/lib/vcs.rb に VCS::Null というクラスを導入して、リポジトリが判定できなかった時? の fallback 処理をここにまとめるようにリファクタリングしています。

[ab31d2e69f] Nobuyoshi Nakada 2022-09-29 11:08:56 UTC

tool/lib/vcs.rb のオプションに --zone を追加して RUBY_RELEASE_DATE のマクロ生成のための CommitDate の処理時に基準にするタイムゾーンを指定できるようにしています。デフォルトは +09:00 つまり日本時間にしています。

[962f9932af] Yusuke Endoh 2022-09-30 01:53:22 UTC

rubygems のテストのユーティリティで未使用の変数の警告抑制のため不要な変数を削除しています。

[e294e6f417] Nobuyoshi Nakada 2022-09-30 08:26:46 UTC

error.c で定義している with_warning_string() というマクロの内容を with_warning_string_from() というマクロに切り出してそれを呼ぶようにリファクタリングしています。 with_warning_string_from() では va_start() に渡す引数名を別途指定できるようにしています。将来的に使う予定なのかなぁ。

[ad651925e3] Victor Shepelev 2022-09-30 09:23:19 UTC

c30f03d32833f38fedf41ecb08f1ade9c6657fef で削除された Data クラスが再度追加されています。ただ同じものではなくて Struct の immutable 版が欲しい、というユースケースのために追加されたようです。そのため Struct と同様のメソッドが定義されていたり Data.define という新たにクラスを生成するクラスメソッドが用意されていたりします。Struct.define はないからこれは独自のメソッドですね。 [ruby-core:94508] [Feature #16122]