ruby-trunk-changes 2021-09-17

今日は Module#initialize_copy での不具合修正や Thread::Mutex を WB-proteted にする変更などがありました。

[cbbda3e648] Nobuyoshi Nakada 2021-09-16 14:49:16 UTC

string.c のインデント修正のみ。

[475a4651b6] Nobuyoshi Nakada 2021-09-16 23:38:29 UTC

f2cb6288bc6f1d5e693841734ce5eb04ff41c2a9 で追加した MatchData#match_length のテストメソッドの名前が間違っていて重複していたので修正しています。 [ruby-core:105290] [Feature #18172]

[8450b6a91d] git 2021-09-16 23:39:26 UTC

version.h の日付更新

[34d6720fee] Nobuyoshi Nakada 2021-09-16 23:54:18 UTC

tool/lib/test/unit/testcase.rb でテストメソッドが再定義された時(重複している時)に警告を出していたのを例外を発生させて止めるように変更しています。すぐに気づけるようにですね。

[5a048829a4] John Hawthorn 2021-09-15 09:40:42 UTC

Thread::Mutex の rb_data_type_t のフラグに RUBY_TYPED_WB_PROTECTED を追加して Thread::Mutex のインスタンスを WriteBarrier protected なオブジェクトとして扱えるようにしています。Mutex の構造体は他の Ruby オブジェクトへの参照がないので。

[8f41c791b1] Nobuyoshi Nakada 2021-09-17 01:20:02 UTC

rubyspec に MatchData#match と MatchData#match_length メソッドについてのテストを追加しています。 [ruby-core:105290] [Feature #18172]

[178ee1e801] Nobuyoshi Nakada 2020-07-26 02:52:19 UTC

Module の initialize_copy メソッドを(private メソッドなので __send__ などで)呼ぶ時にコピー元が Module の場合に異常終了する場合があったみたいなのを修正しています。 rb_module_s_alloc() で Module のインスタンスを作る時に struct RClass::super を rb_cBasicObject に設定しておいて、Module#initialize_copy の引数に渡された場合に 0 にクリアして複数回コピーされないようにしているみたいです。 [ruby-core:99311] [Bug #17048]

[fd918d1afa] Nobuyoshi Nakada 2020-07-26 04:20:19 UTC

178ee1e801acb33d13b3e8a630f6ca4926c68fbc の続きで Module.allocate や Class.allocate などの特異メソッドの undef を追加しています。空の Class や Module はおかしなことになるので作っちゃだめということですね。 [ruby-core:99311] [Bug #17048]