ruby-trunk-changes 2024-01-25

今日は主に引数をそのまま委譲する記法を使った時の中間オブジェクトの生成を抑制するような最適化の実装や YJIT の実行コード用メモリ領域のサイズのデフォルト値を少し小さくする変更などがありました。

[d86c4e553e] Nobuyoshi Nakada 2024-01-24 11:51:50 UTC

rb_thread_call_without_gvl() の呼び出しを wrap したマクロ IO_WITHOUT_GVL() や IO_WITHOUT_GVL_INT() を定義して利用するようにリファクタリングしています。

[23d4682926] Maxime Chevalier-Boisvert 2024-01-24 18:09:08 UTC

YJIT の Integer#>> の最適化実装で JIT をあきらめる条件を修正しています。 https://github.com/ruby/ruby/pull/9684

[1702528258] Maxime Chevalier-Boisvert 2024-01-24 18:14:36 UTC

YJIT の --yjit-exec-mem-size オプションで指定できる実行コード用のメモリ領域のサイズのデフォルト値を 64MB から 48MB に変更しています。 https://github.com/ruby/ruby/pull/9685

[303fef8752] Takashi Kokubun 2024-01-24 18:26:57 UTC

doc/yjit/yjit.md の --yjit-exec-mem-size オプションのデフォルト値について 1702528258c2b2a87dcf5673a80d999de35d0b71 に追随して変更しています。 https://github.com/ruby/ruby/pull/9687

[2cc7a56ec7] Alan Wu 2024-01-24 23:06:58 UTC

YJIT で特異クラスを持つオブジェクトについてメソッドキャッシュを誤って保存してしまうのを修正しているようです。 https://github.com/Shopify/ruby/issues/552 [ruby-core:116431] [Bug #20209]

[34c688b163] Takashi Kokubun 2024-01-25 00:03:05 UTC

Travis-CI 上の s390x でのテスト時に prism についてのテストを除外するようにしています。 https://github.com/ruby/ruby/pull/9694

[ef276858d9] KJ Tsanaktsidis 2024-01-22 05:22:14 UTC

CRuby の実装で GC 中などですぐにできない処理を後で実施させるための postponed_jobs の機能で実行がなかなかトリガーされないという不具合(?)があったので実行を常に main thread に投げてたのを、main Ractor 上で今現在実行中の thread に実行させるようにしているようです。 [ruby-core:116347] [Bug #20197]

[22e488464a] Jeremy Evans 2023-11-23 18:47:24 UTC

struct rb_callinfo::flags のビットフラグに VM_CALL_ARGS_SPLAT_MUT を追加してメソッド呼び出し時の *args による配列渡しで呼び元の配列を変更しないためにコピーするのを抑制して不要な中間オブジェクトができないようにしているようです。

[6e06d0d180] Jeremy Evans 2023-11-25 04:23:58 UTC

VM 命令に concattoarray という splatarray + concatarray 命令を融合した命令を追加して最適化しています。

[b8516d6d01] Jeremy Evans 2023-11-28 20:14:45 UTC

VM 命令 pushtoarray という newarray + concatarray の働きをする命令を新規追加しています。不要な中間配列の生成を抑制するため。

[0f90a24a81] Jeremy Evans 2023-11-30 22:58:42 UTC

メソッドの引数の委譲専用の無名の引数を使った時に中間的な配列や Hash オブジェクトの生成を抑制するように最適化を追加しています。

[4f77d8d328] Jeremy Evans 2023-12-08 22:30:39 UTC

全種類の引数をそのまま委譲する時の引数の "..." という記法を使った時にキーワード引数の Hash の複製を抑制するようにしてるようです。副作用として ruby2_keywords の設定が伝播しなくなるみたいでいくつかのテストの skip が追加されています。実装としては parse.y の FORWARD_ARGS_WITH_RUBY2_KEYWORDS マクロの define を消しているだけなので、これが恒久化したらこのマクロを #ifndef で分岐しているところも消されるかと思います。

[42d891be2c] Jeremy Evans 2023-12-15 00:48:09 UTC

benchmark/ 配下に無名の引数や "..." による委譲用の引数の記法を使ったメソッド呼びだしのベンチマークを追加しています。

[fb596499f7] Jeremy Evans 2024-01-25 02:39:54 UTC

GitHub Actions の macOS 版の workflow で bundled gems のテストの rbs と typeprof のエラーを無視するようにしています。

[2b9719ea30] Jeremy Evans 2024-01-25 03:13:30 UTC

GitHub Actions の prism 用のテストで引数の扱いで中間オブジェクトを抑制する変更の影響でエラーになるみたいでエラーを無視するように continue-on-error: true を追加しています。

[ff55d6b8e1] Nobuyoshi Nakada 2024-01-25 05:33:53 UTC

parse.y の comment_at_top() という magic comment を検出する関数で struct parser_params::token_seen というメンバーを参照することで処理を簡略化しています。行にトークンがあるかどうかの判定に使えるみたい?

[1d972498eb] Hiroshi SHIBATA 2024-01-25 02:42:26 UTC

Encoding の拡張ライブラリの自動 load に関するテストで利用する Encoding を Windows_31J から CESU_8 に変更しています。 Windows_31J は mswin の環境で事前に load されてしまう可能性があるため。

[d13a57cd65] Hiroshi SHIBATA 2024-01-25 05:23:12 UTC

Kernel#exec の引数にマルチバイト文字列を含める時の Encoding を locale Encoding にするために Encoding.find("locale") を使っていたのを Encoding.local_charmap メソッドを利用するようにしています。

[0f5407b337] Hiroshi SHIBATA 2024-01-25 05:34:35 UTC

コマンドラインオプション -E/--encoding のテストで文字列を puts で出力してその結果をチェックするようにしていたのを Encoding.default_external の名前を出力してそれをチェックする方法に変更しています。

[4d4d418457] ydah 2024-01-25 02:25:56 UTC

irb のテストのコメントの typo 修正。

[6580a95f8d] ydah 2024-01-25 02:26:13 UTC

irb のコメントの typo 修正。

[fd9b968569] ydah 2024-01-25 02:26:33 UTC

irb のコメントの typo 修正。

[9b1cc68b77] ydah 2024-01-25 02:27:00 UTC

irb のコメントの typo 修正。

[5f9f46a24c] ydah 2024-01-25 02:27:16 UTC

irb のコメントの typo 修正。

[819ae2c2c1] ydah 2024-01-25 02:34:10 UTC

irb のコメントの typo 修正。

[0334115628] ydah 2024-01-25 02:36:41 UTC

irb のコメントの typo 修正。

[4bd58e1ade] ydah 2024-01-25 02:40:12 UTC

irb のテストのメソッド名の typo 修正。

[fdb8f08639] Eddie Lebow 2024-01-25 10:20:44 UTC

irb の rdoc 用コメントの英文を修正しています。 https://github.com/ruby/irb/pull/842