ruby-trunk-changes 2024-02-27

今日は主に finalizer の処理の最適化や String#grapheme_clusters の不具合修正、Refinements で 2つ以上の using が効かない不具合の修正などがありました。

[40c9a3dad5] Benoit Daloze 2024-02-26 13:45:28 UTC

spec/mspec に upstream の最新版をマージしています。

[815db5c028] Benoit Daloze 2024-02-26 13:45:30 UTC

spec/ruby に upstream の最新版をマージしています。

[83e676e5f9] Peter Zhu 2024-02-23 18:50:46 UTC

ObjectSpace.define_finalizer で finalizer が設定されているオブジェクトは struct RBasic::flags にビットフラグの FL_FINALIZE が立てられるので、オブジェクトの回収時の finalizer 実行の処理時にこのビットフラグをチェックして不要な時に st_table の検索をスキップするように多少最適化しています。

[27e3e44390] Peter Zhu 2024-02-26 16:38:44 UTC

83e676e5f9049168047c36d1bbd75ac342e6fed6 の関連で struct RBasic::flags のビットフラグ FL_SEEN_OBJ_ID と FL_FINALIZE を混ぜたものを ZOMBIE_OBJ_KEPT_FLAGS という定数マクロに切り出すリファクタリング……かと思いましたが verify_internal_consistency_i() でチェック時にもこのマクロを利用するようにして GC_ASSERT() でひっかかるのを修正しているようです。

[9c5a91e320] "dependabot[bot]" 2024-02-26 15:52:19 UTC

rubygems の Rust 製拡張ライブラリを含む gem のテストのためのプロジェクトで rb-sys パッケージのバージョンを更新しています。

[f54122368c] "dependabot[bot]" 2024-02-26 15:11:05 UTC

rubygems の Rust 製拡張ライブラリを含む gem のテストのためのプロジェクトで rb-sys パッケージのバージョンを更新しています。

[c9b6cd4223] Peter Zhu 2024-02-26 16:13:23 UTC

gc.c から未使用になった関数 rb_objspace_each_objects_without_setup() を削除しています。

[b8572c3f16] John Hawthorn 2024-02-26 20:09:34 UTC

doc/contributing/building_ruby.md の BASERUBY の要求バージョンの記述を 3.0 以降に更新しています。

[d2da774f87] Hiroshi SHIBATA 2024-01-31 04:49:31 UTC

rubygems に vendoring している標準添付ライブラリの default gems のファイル名を vendored_ という prefix をつけるようにしています。ファイル名のみでクラス名などはそのままです。

[d220d273aa] Hiroshi SHIBATA 2024-01-31 05:08:33 UTC

d2da774f870ecf51f465dd4081a7349812efaac4 での require のファイル名変更追随漏れを修正。

[8b22198ee9] Hiroshi SHIBATA 2024-02-07 08:56:37 UTC

d2da774f870ecf51f465dd4081a7349812efaac4 の追随で rubygems に vendoring されている molinillo から利用する tsort を vendoring されているバージョンの vendored_ の prefix つきのファイルを require するように変更しています。

[c342726568] Hiroshi SHIBATA 2024-02-07 09:46:17 UTC

bundler から rubygems の vendoring されている net/http や timeout を利用する時に古い rubygems と一緒に使った時のために vendoring_ の prefix つきで require できなかった時の fallback 処理を追加しています。

[81dded1044] Hiroshi SHIBATA 2024-02-26 10:43:50 UTC

rubygems に vendoring されている net-http と timeout で同じファイルの重複 load を避けるための条件分岐を追加しています。

[7538703d1b] Peter Zhu 2024-02-26 16:20:59 UTC

gc.c の rb_objspace_data_type_memsize() という関数を static 関数に変更しています。

[78ae6dbb11] Peter Zhu 2024-02-26 16:21:09 UTC

gc.c の rb_objspace_marked_object_p() という関数を削除して gc_move() から呼んでたところは RVALUE_MARKED() で代替するようにしています。

[89f0c0ceb5] ydah 2024-02-22 10:48:41 UTC

parse.y で省略可能な改行に opt_nl というルールを利用していたのを '\n'? という記法を利用するようにしています。 Lrama の拡張機能かな?

[54a5b82944] Kenta Murata 2024-02-27 00:37:03 UTC

Complex#to_r で虚数部が浮動小数点数(Float)の時は 0.0 であっても例外発生させていたのを 0.0 ならば無視して実数部のみを処理して Rational に変換するように対応しています。 https://github.com/ruby/ruby/pull/9581 [ruby-core:38886] [Bug #5179]

[cbbb98ba5e] Nobuyoshi Nakada 2024-02-27 01:18:06 UTC

標準添付ライブラリ tempfile の gemspec ファイルで spec.files を取得するために git ls-files を実行する IO.popen に exception: false を渡して git コマンドが実行できない環境でもエラーにはならないようにしています。

[316d1e1014] Nobuyoshi Nakada 2024-02-27 01:17:25 UTC

cbbb98ba5e856c4413dcb27460b32be8865683ab と同様に標準添付ライブラリ tmpdir の gemspec ファイルで spec.files を取得するために git ls-files を実行する IO.popen に exception: false を渡して git コマンドが実行できない環境でもエラーにはならないようにしています。

[1745dd2691] Nobuyoshi Nakada 2024-02-27 02:47:50 UTC

.git-blame-ignore-revs に git blame で無視する commit として a0f7de814ae5c299d6ce99bed5fb308a05d50ba0d4e24021d39e1f80f0055b55d91f8d5f22e15084 を追加しています。 Happy Eyeballs の追加を誤って revert してしまったやつですね。

[bfb2dc8acf] Josef Šimánek 2021-10-25 00:47:04 UTC

rubygems で spec.required_ruby_version が未設定だと警告を出すようにしているようです。

[7b56353d97] Fable Phippen 2024-02-26 19:24:22 UTC

String#grapheme_clusters が不正なバイト列の文字列に対して呼ばれた時の不具合のテストを追加しています。次で修正されるもののテストを先に入れているみたいです。 [ruby-core:116960] [Bug #20305]

[3a04ea2d03] Nobuyoshi Nakada 2024-02-27 03:20:35 UTC

String#grapheme_clusters で Encoding に対して不正なバイト列を持つ文字列の不具合修正ですが、修正箇所としては regexec.c の正規表現の処理のところで必要に応じて onigenc_mbclen_approximate() に fallback するようにしています。 [ruby-core:116960] [Bug #20305]

[d50f9ca2dd] Shugo Maeda 2024-02-27 05:19:15 UTC

Refinements で同じ Module に対して複数の Module#using でメソッドの上書きを適用することができなくなっていた不具合を修正しています。 [ruby-core:116946] [Bug #20302]

[d7730d3a0b] Nobuyoshi Nakada 2024-02-27 10:40:39 UTC

parse.y の rb_parser_warn_duplicate_keys() 内の変数 literal_type に Universal Parser 用でない時だけ static const 修飾子を追加するようにしています。

[5efe386c89] Alexander Ross 2024-02-27 11:19:02 UTC

GC.start の rdoc 用コメントの typo 修正。