ruby-trunk-changes 2023-09-08

今日は YJIT の String の一部メソッドの最適化や GC のイベントフック登録時の性能改善、yarp の更新などがありました。

[5184b40dd4] Samuel Williams 2023-09-07 12:32:54 UTC

thread_sync.c の do_mutex_lock() から一部の処理を do_mutex_lock_check_interrupts() という関数に切り出すリファクタリング。処理の内容はまったく変わってないのですが ppc64le でのコンパイラの不具合のせいでエラーになってるんじゃないかという疑惑のために関数分離しているみたいです。 https://github.com/ruby/ruby/pull/8393

[0adca625ee] Aaron Patterson 2023-09-07 13:54:05 UTC

YJIT の Rust 実装で String#bytesize メソッドの専用処理で rb_str_bytesize() の関数呼び出しをしていたところを処理をインライン展開する最適化。 https://github.com/ruby/ruby/pull/8389

[2d37b44603] Jean Boussier 2023-09-06 07:47:07 UTC

include/ruby/thread.h の RUBY_INTERNAL_THREAD_EVENT_XXX 系の定数マクロの doxygen 用コメントの説明を追記しています。

[5b5ae3d9e0] Takashi Kokubun 2023-09-07 17:57:52 UTC

組み込みメソッド Integer#times メソッドの実装を ruby 実装に移植しています。 https://github.com/ruby/ruby/pull/8388

[fcdedf7f47] Takashi Kokubun 2023-09-07 18:22:34 UTC

YJIT の send 命令の receiver の型の候補の許容する数を増やしています。 https://github.com/ruby/ruby/pull/8390

[ed712e0e9d] Matthew Draper 2023-08-24 06:57:17 UTC

Thread.handle_interrupt の実装で引数に渡された Hash が既に freeze されていて ID で同値性判定するように設定されていたら不要なコピーを抑制するようにしています。

[aed5215104] Matthew Draper 2023-08-24 08:23:23 UTC

Thread.handle_interrupt の実装で引数の Hash の key に Exception を渡したケースの最適化をしているようです。このケースそんなにメジャーなのかな?

[094f336a27] John Hawthorn 2023-09-04 00:02:57 UTC

構造体 rb_objspace_t の flags.has_hook という bit field を flags.has_newobj_hook と改名して rb_objspace_t::hook_events の全体ではなく RUBY_INTERNAL_EVENT_NEWOBJ ビットフラグのみチェックするフラグとしています。 newobj_of0() で不要なイベントフックのフラグに対しても slowpath に入るのを抑制するためみたいです。

[89edce4321] Takashi Kokubun 2023-09-08 03:15:08 UTC

YJIT でインスタンス変数の set/get での receiver の型の候補の対応する数を 10 から 8 に少し減らしています。 https://github.com/ruby/ruby/pull/8398

[78233e8352] Ian Candy 2023-09-08 03:15:24 UTC

YJIT に String#getbyte メソッドに専用のコードを生成する最適化を追加しています。 https://github.com/ruby/ruby/pull/8397

[b6df6f911c] Nobuyoshi Nakada 2023-09-08 03:22:55 UTC

addr2line.c の addr_header_init() および rnglists_header_init() の戻り値の true/false が反転していたところを修正しています。

[15fd897629] "dependabot[bot]" 2023-09-08 02:42:32 UTC

GitHub Actions の workflow で利用している actions/cache アクションのバージョンを更新しています。なぜか Windows 版でだけ更新されているな、と思ったら他は .github/actions/setup の専用のアクション経由で利用されるからですね。専用アクション内のアクションは dependabot の更新対象にはならないのかな?

[be21a056d2] Samuel Williams 2023-09-08 08:44:46 UTC

5184b40dd4dc446660cd35c3e53896324e95b317 の thread_sync.c の関数への切り出しのリファクタリングを revert して Travis-CI で ppc64le-linux および s390x-linuxgcc-10 を利用しないようにしています。リファクタリングでは結局直ってなかったのか、いずれにせよコンパイラの問題という判断で gcc のバージョンを古くして対応しているようです。 https://github.com/ruby/ruby/pull/8394