ruby-trunk-changes 2022-11-16

今日は主に Object Shapes の off-by-one の修正や Symbol#to_sym などの実装の ruby 化などがありました。

[5dcbe58833] Peter Zhu 2022-11-14 15:24:55 UTC

Object Shapes のインスタンス変数管理の実装でバッファのサイズを拡張する条件が 1足りなくて未確保の領域を触ってしまう可能性のある不具合があったので修正しています。

[ac063fd4c4] Nobuyoshi Nakada 2022-11-15 15:10:31 UTC

tool/update-deps で revision.h を VPATH 経由のファイルパス解決する対象にして common.mk の依存関係を更新しています。

[9751b54971] Stan Lo 2022-11-15 17:26:47 UTC

標準添付ライブラリ irb のテストに require "tmpdir" を追加しています。コミットログをみるともっといろいろやってそうなんですがおそらく upstream の repo での GitHub Actions などでの CI の設定の変更なのでこちらには含まれてなくてテスト部分の(ついでの?)変更だけ残ったんだと思われます。

[1125274c4e] Takashi Kokubun 2022-11-15 20:57:43 UTC

YJIT のメソッド再定義時の JIT コンパイルしたコードの破棄を行う処理の実装をリファクタリング? しているようです。 https://github.com/ruby/ruby/pull/6734

[d1fb659547] Takashi Kokubun 2022-11-15 22:50:12 UTC

YJIT の Rust 実装の小さな変更ですがよくわからず。 https://github.com/ruby/ruby/pull/6735

[0d384ce6e6] Takashi Kokubun 2022-11-15 23:20:02 UTC

YJIT の --yjit-stats の統計情報に JIT コンパイルしたコード領域に使ったメモリ量の項目を追加しています。 https://github.com/ruby/ruby/pull/6736

[41b0f641ef] Takashi Kokubun 2022-11-15 23:23:20 UTC

YJIT の x86_64 アーキテクチャVALUE が 32bit の環境? でも 64bit 整数としてオペランドに埋め込むようにしているみたいです。よくわかりませんが code GC のため? https://github.com/ruby/ruby/pull/6733

[e7443dbbca] Takashi Kokubun 2022-11-16 05:34:30 UTC

Symbol#to_sym と Symbol#intern という self を返すだけのメソッドを ruby 実装に移動しています。おそらく JIT コンパイルした時に inline 最適化が効くように。なお従来は to_sym と intern は同じ C 関数を実体に持つ別の method entry でしたが intern を to_sym の alias として定義するように変更しています。 https://github.com/ruby/ruby/pull/6683

[cd2da09410] Takashi Kokubun 2022-11-16 05:59:38 UTC

lib/mjit/c_pointer.rb で BitField#* の実装で if 文の分岐内の共通部分を if の前に括り出すリファクタリング

[fca50abb7c] Takashi Kokubun 2022-11-16 07:42:41 UTC

MJIT 用の C binding のコード生成をする make mjit-bindgen で $(XRUBY) を利用して実行するようにしていたのを BASERUBY を利用するように変更しています。 mjit-bindgen はパッケージ作成時に行なう(tarball には成果物が入る)んでしたっけ? https://github.com/ruby/ruby/pull/6740

[be65cf5325] Nobuyoshi Nakada 2022-11-16 02:41:19 UTC

ext/extmk.rb で make の -j オプションが伝播しないように生成する Makefile で MFLAGS から -j を削除しています。

[dc1c4e4675] Nobuyoshi Nakada 2022-11-16 02:43:52 UTC

ext/extmk.rb で生成する Makefile の clean ターゲットに exts.mk と拡張ライブラリのビルド用のディレクトリ? の削除も追加しています。

VALUE の値を Qundef と比較しているところを UNDEF_P() というマクロを利用するようにコア部分のソースコード全般を変更しています。