ruby-trunk-changes 2023-03-24

今日は主に YJIT の不具合修正や最適化、Process.pid のキャッシュの実装の変更などがありました。

[b738cb01b6] Nobuyoshi Nakada 2023-03-23 12:51:18 UTC

vm_backtrace.c の calc_pos() で VM_ASSERT() でチェックしている整数の比較を符号の有無による警告を抑制するため明示的なキャストを追加しています。

[e950781880] Ole Friis Østergaard 2023-03-23 15:04:30 UTC

YJIT の definedivar 命令のコンパイル時に Object Shapes の rb_shape_t の情報を利用するコードを生成するようにしています。 https://github.com/ruby/ruby/pull/7579

[ed4dc1c33d] Nobuyoshi Nakada 2023-03-23 16:46:59 UTC

configure で --enable-multiarch 指定時に ENABLE_MULTIARCH というマクロを定義するようにしています。 31f4b2d86bfbc753cec9be376719acc4b120e944 で MJIT の compiled header の利用を削除した時にあやまって必要な部分も消しちゃったのを復活させているようです。

[8286544dc5] Jimmy Miller 2023-03-23 17:11:46 UTC

YJIT の実装で JIT コンパイルしたコードを使わない時の処理の生成で利用する Context を修正しているようです。テストをみてもよくわからないけど不具合修正らしい。 https://github.com/ruby/ruby/pull/7583

[b4e438d8aa] Takashi Kokubun 2023-03-23 20:42:49 UTC

YJIT で rb_str_concat() 関数を呼び出すための前処理で gen_save_sp() だけしていたのを jit_prepare_routine_call() を呼ぶように修正しています。 pc の退避も必要だったようです。 https://github.com/ruby/ruby/pull/7586 [ruby-core:112723] [Bug #19483]

[df21e7ebab] Hiroshi SHIBATA 2023-03-24 04:31:32 UTC

tool/sync_test_lib.rb という default gems に tool/lib/core_assertions.rb のようなテスト用のライブラリをコピーしてコミットするためのスクリプトを追加しています。

[3e7d1cbceb] Nobuyoshi Nakada 2023-03-23 15:36:24 UTC

1db8951d3a8be6a756c9d3d3b87231997b301985 で Process.pid をキャッシュして getpid(2) を実際に発行しないようにする変更でキャッシュしておく static 変数は VALUE 型でしたが rb_pid_t で pid の C の整数をそのまま保存しておくように変更しています。なるほどこうすると mark する必要はなくなる。そのかわり T_BIGNUM になるケースでは Process.pid を呼ぶたびにオブジェクトが生成されることになると思いますが。

[2759cf46f2] Nobuyoshi Nakada 2023-03-24 06:22:57 UTC

Thread::Queue のテストでキーワード引数の渡しかたが不要に Hash リテラルを ** で展開していたのをやめるのと、Kernel#open のかわりに File.open を使うようにする変更。