ruby-trunk-changes 2022-11-19

今日は主に Object Shapes の YJIT 最適化のための変更などがありました。

[10788166e7] Aaron Patterson 2022-11-17 23:57:11 UTC

インスタンス変数テーブルを管理する Object Shapes のタイプに T_OBJECT 型のオブジェクトかどうかを区別するようにしています。YJIT で T_OBJECT かどうかのチェックを省くためみたいです。

[ba3b40a9ae] Takashi Kokubun 2022-11-18 18:03:29 UTC

00872d120b017de2270fe18068cea2d37d41ed71 で追加した irb の組み込みコマンド debug で debug.gem が bundled gems に含まれていれば Gemfile に書かれていない状態でも読み込めるように $LOAD_PATH に追加するようにしています。

[6582f34831] Aaron Patterson 2022-11-18 18:29:41 UTC

Object Shapes 実装の定数マクロ SHAPE_BITS を SHAPE_ID_NUM_BITS と改名しています。

[9e067df76b] Aaron Patterson 2022-11-15 19:46:18 UTC

Object Shapes の実装の YJIT に export するための rb_shape_flags_mask() という関数を削除してかわりに rb_shape_id_num_bits() を定義し 6582f34831cc665b2adcf7d475aceb9b918badb6 で改名した定数マクロ SHAPE_ID_NUM_BITS の値を返すようにし、YJIT で shape id を比較する時にこれを利用してレジスタを使わずに比較できるよう機械語を生成するように工夫しているようです。

[2185f0ca77] Aaron Patterson 2022-11-18 21:58:13 UTC

10788166e7e568fdcd0b748e8d5dab442dcdc7ef の Object Shapes の T_OBJECT 型オブジェクトの特別扱いに追随して rb_obj_copy_ivar() の RUBY_ASSERT() によるチェックを更新しています。

[7f269a3c2d] Alan Wu 2022-11-18 19:59:04 UTC

拡張ライブラリ io/console のテストで拡張ライブラリが static link されている時に TestIO_Console::PATHS が空になるので不正なコマンドラインオプション(-I)になって実行エラーになるのを防ぐ対応を追加しています。

[5c505f4a48] Alan Wu 2022-11-19 00:42:24 UTC

load.c の search_required() 内の goto に使うラベル名を改名しています。

[082cfcfd06] yui-knk 2022-11-18 10:42:37 UTC

メソッド定義の構文のテストで "..." による委譲専用の引数の記法を rest 引数の後に書くのが SyntaxError になるというのを確認するテストを追加しています。

[6dcb7b9216] Takashi Kokubun 2022-11-19 01:27:07 UTC

YJIT の Rust 実装で assertion で異常終了させる時のメッセージの改善。 https://github.com/ruby/ruby/pull/6769

[574d849869] Alan Wu 2022-11-18 23:56:27 UTC

tool/test-bundled-gems.rb から minitest のテスト実行時に skip するテストの指定をしていたのを削除しています。 https://github.com/seattlerb/minitest/pull/880

[50c6cabadc] Maciek Rząsa 2022-11-19 02:38:16 UTC

Kernel#exec の rdoc 用コメントの体裁の修正。