ruby-trunk-changes 2023-07-29

今日は主に rubygems の WebAuthn 対応の実装の改良や昨日の callcache のメモリリーク修正の再修正などがありました。

[af04e26924] Nobuyoshi Nakada 2023-07-26 07:57:42 UTC

String の文字を削る系の実装に使っている関数 rb_str_drop_bytes() で String オブジェクトのバッファに終端文字を埋めるのを 1バイト固定で行なっていたのを TERM_LEN() を使うようにして、さらに SHARABLE_MIDDLE_SUBSTRING マクロをチェックして終端文字を埋めない場合のビルドにも対応するようにしています。

[9f059d908c] Nobuyoshi Nakada 2023-07-26 10:02:04 UTC

巨大な文字列に対する String#byteslice のテストで使っている文字列を freeze するようにしています。文字列のバッファの共有が行なわれるようにするためみたいです。

[49b76e57cc] Nobuyoshi Nakada 2023-07-26 03:40:31 UTC

GitHub Actions のいろんなコンパイラオプションを試す workflow に SHARABLE_MIDDLE_SUBSTRING マクロを指定した時のビルドを追加しています。

[91e13a5207] Peter Zhu 2023-07-28 14:12:52 UTC

拡張ライブラリ strscan のインデントの修正のみ。

[812dbe79f0] Jenny Shen 2023-06-21 17:20:12 UTC

rubygems のテストで rubygems.org へのログインのテストのためのユーティリティクラスを導入しているようです。

[023d0f662b] Jenny Shen 2023-06-21 21:21:35 UTC

rubygems の WebAuthn 対応の実装で Thread を立てて検証リクエストを polling するようにしているようです。

[fce04f9a6c] Jenny Shen 2023-06-29 20:10:22 UTC

023d0f662b4487c2bd6636c4fcf1e223ef4c8b30 からの続きで rubygems の WebAuthn 対応の処理を Gem::GemcutterUtilities::WebauthnListener という Module に切り出すリファクタリング

[e96b3138a8] Jenny Shen 2023-07-01 04:20:57 UTC

rubygems のテストで assert_raises のかわりに assert_raise を利用するように変更しています。

[db80e947a3] Jenny Shen 2023-07-23 23:18:08 UTC

023d0f662b4487c2bd6636c4fcf1e223ef4c8b30 からの続きで rubygems の WebAuthn 対応で起動する Thread に abort_on_exception や report_on_exception フラグを立てるのに Thread の外からインスタンスメソッドでセットするのではなく Thread 内で Thread のクラスメソッドを使うようにしてレースコンディションを防いでいます。

[17b50cdb68] Jenny Shen 2023-07-23 23:18:44 UTC

rubygems の WebAuthn 対応の実装でレスポンスの content-type ヘッダに charset=utf-8 の指定を追加しています。

[bcf823fddb] ko1 2023-07-28 22:28:52 UTC

bcf823fddbe38e0503805a7ba6ded53c1bc1e19drubygems の WebAuthn 対応の実装の Thread のフラグ設定方法の変更を revert しています。Thread のクラスメソッドは current thread のみ変更するのではなく全 Thread に設定することになるので。

[6dc15cc889] ko1 2023-07-28 22:54:30 UTC

昨日の c330037c1a38cc257dbe21022fcc7b13159c2821 および 6391132c03ac08da0483adb986ff9a54e41f9e14 の追加修正で T_IMEMO 型オブジェクトの callcache のキャッシュの無効化のために cme_ メンバーを直接 0 クリアしていたのを vm_cc_invalidate() を呼び出して klass メンバーをクリアするようにしています。直接 cme_ を消すと assert にひっかかることがあったみたいです。

[b0f44cfa5d] Nobuyoshi Nakada 2023-07-29 02:49:53 UTC

tool/sync_default_gems.rb についてのテストで git コマンドを実行するところで git が古いと .gitconfig を指定する GIT_CONFIG_GLOBAL 環境変数に対応していなくて実際に ~/.gitconfig を変更してしまうので skip するようにしています。テスト実行で環境が壊れるため。なるほど昨日ささださんのコミットが Ruby ユーザーになってたのはこのためか。

[7a7aba755d] Koichi Sasada 2023-07-29 04:41:28 UTC

c330037c1a38cc257dbe21022fcc7b13159c28216391132c03ac08da0483adb986ff9a54e41f9e14 および 6dc15cc8895b28800d5c187929d846ac4eb7cd3f からのさらに追加修正で T_IMEMO 型オブジェクトの GC.compact による参照の移動処理中の callcache の無効化処理で T_MOVED になっている時の対応を追加しています。T_MOVED の時に誤って無効化してしまうことがあったため。

[4b91d6abb9] Nobuyoshi Nakada 2023-07-29 11:02:13 UTC

b0f44cfa5da53b90817732cb25b4d3a1cddecb89 で tool/sync_default_gems.rb のテスト実行時に git のバージョンをチェックしてたのを revert しています。

[628cc7e12d] Nobuyoshi Nakada 2023-07-29 04:42:14 UTC

b0f44cfa5da53b90817732cb25b4d3a1cddecb89 の git が古い時の対策のやりなおしで HOME 環境変数も上書きしておくことで古い git でも ~/.gitconfig の上書きを防ぐようにしています。