ruby-trunk-changes 2023-04-26

今日は主に特殊なメソッドの呼び出し方法での大きな配列を splat で渡した時の VM スタックを食い潰す問題の対策やその他メソッド呼び出し時の引数処理の最適化などがありました。

[99c6d19e50] Jeremy Evans 2023-03-06 23:58:58 UTC

メソッド呼び出し時に巨大な配列を splat で展開して引数に渡すと VM スタックを食い潰してしまう問題の対応で 2e7bceb34ea858649e1f975a934ce1894d1f06a6 で要素数の大きな配列オブジェクトの場合は VM スタック上に展開しないで配列のバッファをそのまま argv に使うようにしていましたが、メソッド定義側が省略可能引数だけで rest 引数がないとか、ブロックパラメーターの場合? などにその対応がされていなくて SystemStackError が発生する場合があったのでメソッド呼び出し時の引数処理の全体的な書き直しをしています。 [ruby-core:33132] [Bug #4040]

[f6254f77f7] Jeremy Evans 2023-03-23 21:39:31 UTC

99c6d19e502b5fdadbd367ae4b6bb3fab850fddc の続き? でブロックから定義されたメソッドの呼び出し時の引数処理の不要なコピーを抑制する最適化をしているみたいです。

[af2da6419a] Jeremy Evans 2023-04-01 16:19:35 UTC

99c6d19e502b5fdadbd367ae4b6bb3fab850fddc からの続きで C 実装のメソッド呼び出し時にメソッドの受け取る引数のタイプによって引数処理を分岐して高速化しようという最適化を行なっているようです。

[9b4bf02aa8] Jeremy Evans 2023-04-02 03:55:43 UTC

99c6d19e502b5fdadbd367ae4b6bb3fab850fddc からの続きで Object#send によるメソッド呼び出し時の引数の処理を呼び出し時の keyword splat の有無で分岐して不要な処理をスキップするようにする最適化をしているようです。

[583e9d24d4] Jeremy Evans 2023-04-02 18:06:13 UTC

99c6d19e502b5fdadbd367ae4b6bb3fab850fddc からの続きで Symbol#to_proc でメソッド呼び出しする Proc オブジェクトを作って呼び出す時の引数の処理でも keyword splat の有無で処理を分岐して不要な処理をスキップする最適化を行なっているようです。

[a82a24ed57] Jeremy Evans 2023-04-02 18:28:01 UTC

99c6d19e502b5fdadbd367ae4b6bb3fab850fddc からの続きで method_missing を呼び出す時の引数の処理でも最適化を行なっているようです。

[d3da01cd11] Benoit Daloze 2023-04-25 15:04:24 UTC

ruby/mspec に upstream から最新版をマージしています。

[d562663e40] Benoit Daloze 2023-04-25 15:04:25 UTC

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

[e3d05001ed] Benoit Daloze 2023-04-25 15:08:52 UTC

rubyspec の require のテストで "-fake" で終わる feature 名が $LOADED_FEATURES に入ってた時に問題があったみたいで削るようにしています。

[82995d4615] Benoit Daloze 2023-04-25 15:27:57 UTC

ruby/spec を再度 upstream からマージしています。

[c9b61ec53e] Stan Lo 2023-03-14 06:59:59 UTC

標準添付ライブラリ pp のテストでいくつかのテストメソッドを JRuby で skip するようにしています。

[bf3ed7e826] Stan Lo 2023-03-14 07:29:41 UTC

標準添付ライブラリ pp のテストで古い ruby 向けに UnboundMethod#bind_call メソッドの代替実装していたところを修正しています。

[0c30425e89] "dependabot[bot]" 2023-04-26 02:59:41 UTC

GitHub Actions の workflow で使っている ruby/setup-ruby アクションのバージョンを更新しています。

[5154d6beed] Hiroshi SHIBATA 2023-04-26 04:12:17 UTC

e7cdce83e8c8797c481ccb54c260c0db1e1afa7cirb のテストで一部 assertion をコメントアウトしていたのを revert しています。

[299d17a2f1] Stan Lo 2023-04-25 11:00:05 UTC

標準添付ライブラリ irbIRB::Locale#initialize で encoding が不正になる不具合を修正しています。

[b90d87bf25] Hiroshi SHIBATA 2023-04-26 08:22:03 UTC

bundled gems の upstream reopsitory からテスト対象の revision (commit hash) をチェックアウトする処理を gemspec ファイルのチェックする前に移動しています。 gems/bundled_gems に書かれてるバージョンと gemspec ファイルのバージョンとが食い違ってエラーになってしまうのを避けるためとのこと。

[457824e2d3] Koichi Sasada 2023-04-26 07:54:34 UTC

ruby インタプリタ自体の開発時のデバッグログのための機能に環境変数 RUBY_DEBUG_LOG_PID が(空文字列でも良いので)設定されていると出力に pid を含めるようにする機能を追加しています。

[06b68db7cf] Koichi Sasada 2023-04-26 08:05:32 UTC

ruby インタプリタ自体の開発時のデバッグ出力の関数 ruby_debug_log() で rb_execution_context_t が NULL だった時に許容するようにしています。

[ffce3117b6] Koichi Sasada 2023-04-26 08:12:12 UTC

ractor.c の rb_ractor_terminate_all() に RUBY_DEBUG_LOG() マクロによるデバッグ出力で Ractor 数を出力するようにしています。