ruby-trunk-changes 2024-01-24

今日は主に YJIT の一部組み込みメソッドの最適化や Arrayh#each を ruby 実装にしてこの最適化の対象にする変更などがありました。

[b14674b236] Peter Zhu 2024-01-19 15:26:24 UTC

TracePoint#enable で target にブロックを define_method などに渡して作ったメソッドを指定するとメモリリークしていたという不具合を修正しています。 [ruby-core:116336] [Bug #20194]

[7f51959ff1] Alan Wu 2024-01-22 22:58:05 UTC

YJIT を使っていると ArgumentError を発生させるべきところ TypeError が発生してしまう引数の渡しかたがあったという不具合を修正しています。 [ruby-core:116374] [Bug #20204]

[a846d391d3] Jean Boussier 2024-01-22 20:57:22 UTC

doc/maintainers.md にブランチメンテナの存在と責任範囲について追記しています。

[557b69e83b] Takashi Kokubun 2024-01-23 19:00:00 UTC

bootstraptest の YJIT のテストが prism 利用時に失敗するとのことで skip するようにしています。

[27c1dd8634] Takashi Kokubun 2024-01-23 19:36:23 UTC

いくつかの ruby 実装の組み込みメソッドでブロックを受け取るもの(Kernel#loop, Integer#times, Kernel#tap, Kernel#then など)に Primitive.attr! で :inline_block というフラグをつけて、これらが YJIT でコード生成時にブロックの起動までインライン展開する最適化を行うようにしています。 https://github.com/ruby/ruby/pull/9622

[c84237f953] Takashi Kokubun 2024-01-23 20:09:57 UTC

Array#each を ruby 実装にしています。 ブロック起動中に配列のバッファが移動したりサイズが変化したりといった問題はどうかと思いましたがそれを考慮して毎回サイズチェックやバッファの参照をしなおす C の関数を定義してそれを Primitive.cexpr! で呼ぶようにできています。 また :inline_block のフラグもつけているので 27c1dd8634d34bfe3592151d66b410f28ca749ce との合わせ技で Array#each が YJIT で相当速くなりそうですね。 debug.gem が影響を受けるのか gems/bundled_gems で debug.gem のテストに使う commit hash の指定を追加しています。 https://github.com/ruby/ruby/pull/9533

[7ac74f5c77] Peter Zhu 2024-01-23 20:23:48 UTC

557b69e83b27dafea435719fc3afc2e67e155962 の prism 利用時に YJIT のテストを skip していた変更を revert しています。

[996776e936] Takashi Kokubun 2024-01-23 22:37:22 UTC

RJIT の生成する rjit_c.rb で Primitive で C のコード片を埋め込むのが 127b19ab561b5365884b465d50356a1e4019713c で 1行に複数使えなくなったのでそれに関してコメントで注意喚起を追加するようにしています。

[c0cabc0a69] Takashi Kokubun 2024-01-23 22:54:39 UTC

RubyVM::InstructionSequence.disasm でメソッドにつけられた attr を表示するようにしています。 https://github.com/ruby/ruby/pull/9667

[ac1e9e443a] Alan Wu 2024-01-23 17:35:34 UTC

YJIT で引数の末尾の Hash の ruby2_keywords フラグの扱いが無視されることがあった? 不具合を修正しています。 [ruby-core:116344] [Bug #20195]

[974b141ffe] Alan Wu 2024-01-23 23:45:07 UTC

YJIT の Rust 実装でユーティリティ関数を利用するようにしたリファクタリング

[d914f82a3c] Hiroshi SHIBATA 2024-01-24 00:53:38 UTC

gems/bundled_gems で debug.gem のテストに使う commit hash を再度更新しています。

[a170f1859b] Hiroshi SHIBATA 2024-01-24 01:44:18 UTC

tool/sync_default_gems.rb で標準添付からはずれた syslog の同期処理を削除しています。

[c16aaf119a] "dependabot[bot]" 2024-01-24 02:36:11 UTC

GitHub Actions の workflows で利用している actions/upload-artifact アクションのバージョンを更新しています。

[df5f2fab93] Burdette Lamar 2024-01-24 03:43:52 UTC

Process.spawn の rdoc 用コメントにシェルを経由してコマンド実行されるケースについて環境によって変わる場合がある点の注意書きを追記しています。

[828f3ecfcd] Nobuyoshi Nakada 2024-01-21 10:14:41 UTC

Kernel#spawn の rdoc 用コメントに第1引数に配列を渡すことで実行するコマンドのファイルパスとプロセスにつける名前をそれぞれ指定できる機能についてのサンプルコードを Process.spawn の rdoc 用コメントに移動しています。

[be6e06ef74] Nobuyoshi Nakada 2024-01-21 10:29:11 UTC

Process モジュールの rdoc 用コメントでシェルを経由していることを明示するためのサンプルで利用する環境変数Unix 系と Windows とで異なるのでサンプルコードとその出力を環境ごとに分けて記述するようにしています。

[623058649e] Nobuyoshi Nakada 2024-01-21 11:01:10 UTC

Kernel#exec, Kernel#system, Kernel#spawn などの rdoc 用コメントからシェルを経由するかどうかについての記述を Process モジュールの rdoc 用コメントにセクションを設けてそこへのリンクを貼るようにしています。

[769bb924b2] Nobuyoshi Nakada 2024-01-21 11:02:34 UTC

Process モジュールの rdoc 用コメントの 623058649e18e7a65b8ba3498b6524fad482b3e0 での追記部分にコマンドのファイルパスが空白を含んでいる時に shell を経由しないようにするための tips について追記しています。

[2defa9f4ae] Nobuyoshi Nakada 2024-01-22 10:37:04 UTC

Process モジュールの rdoc 用コメントの Windows 環境での shell 利用についての細かな注意書きを追記しています。

[01f9766aa0] Martin Emde 2023-12-17 21:22:38 UTC

rubygems でパッケージの展開処理のためディレクトリやファイルを作成する時に File.umask を考慮するようにしています。

[772afa00b5] Hiroshi SHIBATA 2024-01-24 04:01:39 UTC

rubygems のパッケージ展開についてのテスト(?)を Travis-CI 上でのみ skip するようにしています。

[1e519abe21] なつき 2024-01-17 22:57:09 UTC

rubygems の rake の依存関係に関する警告メッセージを微修正しています。

[6bd997ecfd] David Rodríguez 2024-01-17 11:43:35 UTC

rubygems で不要になったらしい rescue 節を削除しています。

[2f06e4f739] Hiroshi SHIBATA 2024-01-24 05:09:58 UTC

772afa00b5109f55c1d8359c688aca4063818549Travis-CI でのみ rubygems の一部のテストを skip してたのを revert しています。

[270ad76359] Hiroshi SHIBATA 2024-01-24 05:10:05 UTC

01f9766aa05182a7bbdc914a5dcd8a36ebade861 での rubygems で File.umask を考慮する変更を revert しています。

[c8355a8d1f] Hiroshi SHIBATA 2024-01-24 06:55:30 UTC

標準添付から削除された syslog のテストがまだ残っていたので削除しています。

[53d0cf442a] Hiroshi SHIBATA 2024-01-24 08:05:50 UTC

Fiber のテストで Proceses.spawn や Kernel#system で外部コマンドを実行させるために true コマンドを使っていたのが Windows ではそんなコマンドがなくて(?)うまくいかないみたいでかわりに "exit 0" を使うようにしています。

[1018dca09a] Hiroshi SHIBATA 2024-01-23 10:14:39 UTC

bundler で独自に定義している YAML のロード処理でコメントを認識するようにしています。

[723deec9cf] Hiroshi SHIBATA 2024-01-23 11:19:02 UTC

1018dca09a55e7b21d701cfee0171b44ba26fe4a の再修正で bundler で定義している YAML のロード処理で "#" が行頭にあった時はコメントとして扱わない? ようにしています。互換性のためとのこと。

[6191f4a169] Hiroshi SHIBATA 2024-01-23 13:31:07 UTC

1018dca09a55e7b21d701cfee0171b44ba26fe4a で追加した bundler の独自 YAML ローダーのテストに渡す YAML の内容を少し変更しています。明示的なクオートを消している。

[fb39128dce] Hiroshi SHIBATA 2024-01-24 01:51:21 UTC

rubygems のテストにも独自に定義している YAML のローダーのコメントの扱いのテストを追加しています。

[4099b04c09] Hiroshi SHIBATA 2024-01-24 08:33:50 UTC

rubygems のテストで mswin 環境では失敗するものを skip するようにしています。

[0f417d640d] Nobuyoshi Nakada 2024-01-24 10:33:25 UTC

6c0e58a54e3fda604386d9c409e2a9998bbc9352 の拡張ライブラリ socket で名前解決を割り込み可能にするための別 thread での getaddrinfo() の呼び出しで errno を伝播するようにした変更の追加修正で変数が未初期化のまま使われていたのを修正しています。また errno が 0 の時に呼び元のほうを 0 にリセットしてしまわないようにしています。