ruby-trunk-changes 2023-07-07

今日は主に Module#set_temporary_name の引数チェックの内容変更や YJIT の統計情報カウンタの追加などがありました。

[75f8781c08] Nobuyoshi Nakada 2023-07-06 12:16:00 UTC

GitHub Actions で古い clang を使う時に YJIT を無効化するよう configure のオプションをつけるようにしていましたが、configure のほうで objcopy が使えないものだった場合に自動的に YJIT を無効化するようにして明示的なオプションはつけないように GitHub Actions のほうは戻しています。

[2acb44e044] Maxime Chevalier-Boisvert 2023-07-06 14:17:03 UTC

YJIT の --yjit-stats で報告する統計情報に compiled_iseq_entry というカウンタを追加しています。言葉どおりいくつの ISeq をコンパイルしたか(メソッド数かブロックごとの ISeq も含めてかな?)のカウンタのようです。 https://github.com/ruby/ruby/pull/8032

[e76022f41c] Benoit Daloze 2023-07-06 11:32:23 UTC

rubyspec の Module#set_temporary_name メソッドのテストを専用のファイルに分離しています。

[9ee1877e4a] Benoit Daloze 2023-07-06 11:25:21 UTC

Module#set_temporary_name がまともな定数として使える名前だったらエラーにしている処理で "::" で区切られた名前空間つきの定数も弾くようにしています。

[055f7219bc] Benoit Daloze 2023-07-06 14:34:28 UTC

9ee1877e4ab535253b4f61302b9102d20e11db5a の続きで Module#set_temporary_name でつける名前が定数っぽい名前だった時の例外メッセージをもう少し詳しく説明的にしています。

[06c2d3e0a0] Jemma Issroff 2023-07-06 17:26:26 UTC

yarp の upstream からのマージ。

[48d95de6a6] Takashi Kokubun 2023-07-06 19:51:01 UTC

YJIT でコンパイルしたコードから C の関数呼び出しする命令を生成する Assembler.ccall() という関数(メソッド?) 内でレジスタの退避を行う spill_temps() を呼ぶようにして呼び元で呼ばなくて良いようにしています。 https://github.com/ruby/ruby/pull/7920

[a642a94b68] Hiroshi SHIBATA 2023-07-07 00:16:15 UTC

75f8781c08da421d6bcfb2c3c8b7b74efea3bec2 で configure で objcopy が YJIT のために使えないバージョンだった時に自動的に YJIT を無効化していたのを revert しています。 macOS で YJIT が無効になってしまってたみたいです。