ruby-trunk-changes 2023-07-18

今日は主にブロックで定義されているメソッドの呼び出し時のマシンスタックの利用のしかたの変更や YJIT のリファクタリングなどがありました。

[2476b1ee0b] Nobuyoshi Nakada 2023-07-17 11:44:35 UTC

fa30b99c34291cde7b17cc709552bc5681729a12 で追加した Process.warmup のテストで b998e6b79d3fa9326d4426ab8138a1e8bf0e2d0d で子プロセスで実行するようにしたので test/ruby/test_process.rb のルートで require "objspace" する必要はなくなったので削除しています。

[1c4a523006] Nobuyoshi Nakada 2023-07-17 12:31:59 UTC

signal.c で定義していた posix_signal() を ruby_posix_signal() と改名しています。

[d70484f0eb] Maxime Chevalier-Boisvert 2023-07-17 14:41:18 UTC

YJIT の JIT コンパイル済みの ISeq を再度コンパイルしないようにする分岐や JIT コンパイル対象にするかどうかの判定の関数を vm.c の C 関数に切り出すリファクタリングhttps://github.com/ruby/ruby/pull/8078

[105bdba899] Nobuyoshi Nakada 2023-07-17 14:57:11 UTC

Math.log の da39936ce165ea9462b9e192eb6b608485c94842 での変更で基数に 0 を指定した時に NaN を返すようにしてましたが元は Infinity を返していたのでそれに合わせるよう修正しています。

[f302e725e1] Alan Wu 2023-07-17 17:57:58 UTC

構造体 rb_control_frame_t の __bp__ メンバーを削除しています。このメンバーは MJIT のために導入されたけど今ではもう不要になっているとのこと。これによりメソッド起動時の操作が少し軽くなるので高速化されるようです。YJIT/RJIT と通常の CRuby のメソッド呼び出し時のマシンスタックの使いかたが異なっていたのを JIT 時にそろえるようにしている? ことでブロックで定義されているメソッド(BMETHOD)の呼び出しを vm_exec() に再入しないでそのまま処理できるようにしているみたいです。 https://github.com/ruby/ruby/pull/8060

[b368990ce6] Hiroshi SHIBATA 2023-07-18 02:32:44 UTC

拡張ライブラリ psych のテストで BigDecimal を利用しているテストメソッドを defined?(BigDecimal) でチェックして定義するようにして、bigdecimal が読み込まれていない時でも失敗しないようにしています。

[9977462fd9] Dimitar Haralanov 2023-07-12 12:52:21 UTC

拡張ライブラリ json の rdoc 用コメント内の JSON::ParseError を JSON::ParserError に修正しています。

[9f51810f34] Nobuyoshi Nakada 2023-07-17 10:30:28 UTC

拡張ライブラリ json のテストで JRuby で失敗するものをスキップするようにしています。

[56c8dab468] Hiroshi SHIBATA 2023-07-18 02:36:21 UTC

拡張ライブラリ json のテストで require "bigdecimal" の LoadError を捕捉するようにして、BigDecimal を利用しているものは未定義ならテストメソッドの定義をスキップするようにしています。

[b89b7d8fdc] Ivanov-Anton 2023-07-18 10:23:27 UTC

doc/syntax/comments.rdoc に記述されている magic comment の shareable_constant_value のサンプルの typo 修正。