ruby-trunk-changes 2023-03-10

今日は昨日追加された VM 命令 defined_ivar を definedivar と改名する変更、gem pristine コマンドに --only-missing-extensions というオプションを追加する変更、YJIT の最適化などがありました。

[3926ad578c] Hiroshi SHIBATA 2023-03-09 06:42:07 UTC

rubygemsYAML を読み込むのに使う psych の ruby 2.5 以前に添付されていた古いバージョンの対応のためのコードを削除しています。

[262254dc7d] Koichi Sasada 2023-03-09 15:34:38 UTC

4667a3a665c40d9ea7f2be6417d1537deb208c52 で導入された VM 命令 defined_ivar を definedivar と改名しています。そういう命名規則があったみたいですね。おそらく副作用だと思いますが yjit/src/codegen.rs のコメントの非ASCII文字が文字化けを起こしてしまっているようです。

[3938b79ef9] Takashi Kokubun 2023-03-09 17:15:05 UTC

262254dc7dd9b503ca01ab701eb5cdd96bce4c4d での yjit/src/codegen.rs のコメントの文字化けを修正しています。

[74f44dae96] Takashi Kokubun 2023-03-09 17:29:06 UTC

262254dc7dd9b503ca01ab701eb5cdd96bce4c4d でもうひとつ yjit/src/cruby_bindings.inc.rs のファイル先頭の BOM が消えてたのを戻しています。

[c5e9af9c9d] Takashi Kokubun 2023-03-09 17:31:46 UTC

parse.y のタブを空白に展開しています。

[1347d707ca] Takashi Kokubun 2023-03-09 17:34:03 UTC

git blame でタブの展開のコミットを無視させるための .git-blame-ignore-revs に c5e9af9c9d890578182a21e7b71b50334cd5579e を追加しています。 [ruby-core:112788] [Misc #19523]

[487142928a] Takashi Kokubun 2023-03-09 19:58:40 UTC

YJIT の Rust 実装の Assembler の x86_merge() というメソッドを削除して同様の最適化を x86_split() に移動しているみたいです。 https://github.com/ruby/ruby/pull/7487

[9546c70e09] Matt Valentine-House 2023-03-07 19:59:48 UTC

intgernal/gc.h の不要な構造体 struct rb_thread_struct の前方宣言を削除しています。

[65a95b8259] Maxime Chevalier-Boisvert 2023-03-09 23:26:21 UTC

YJIT の Rust 実装で T_STRING 型のオブジェクトかどうかをチェックするコードを生成する guard_object_is_string() という関数でチェック内容を増やして、また文字列ではなかった時に upgrade_opnd_type() という関数を呼ぶようにしています。この関数がなにをしているのかはよくわかりませんでしたが to_s で変換するとかではなさそう? https://github.com/ruby/ruby/pull/7489

[69465df424] HParker 2023-02-17 16:15:03 UTC

Object Shapes によるインスタンス変数の管理で T_MODULE/T_CLASS 型オブジェクトはインスタンス数が多くても shapes の情報で管理するようにしていましたが、Module/Class でもインスタンス数がとても多い時は st_table による普通の管理に fallback するように変更しているようです。

[0a466e3072] Nobuyoshi Nakada 2023-03-10 02:54:59 UTC

Thread::Queue や Thread::ConditionVariable のテストで不安定でたまに失敗するものを削除しています。

[a7bc000eaa] Nobuyoshi Nakada 2023-03-10 03:03:31 UTC

Thread::Queue と Thread::SizedQueue に allocate を呼んでインスタンスを作っても使えないというテストを追加しています。

[dcc8ecdee8] "dependabot[bot]" 2023-03-10 03:00:43 UTC

GitHub Actions で使われている ruby/setup-ruby のバージョンを更新しています。

[86d38b4520] Samuel Williams 2023-03-10 03:40:05 UTC

Kernel#sleep は無引数で呼ぶと制限なく sleep しますが、明示的に nil を引数に渡した場合にも無制限 sleep するように引数の扱いを変更しています。 https://github.com/ruby/ruby/pull/7484

[15739c66b7] Hiroshi SHIBATA 2023-03-08 09:23:10 UTC

rubygems の gem pristine サブコマンドに --only-missing-extensions というオプションを追加して、ビルドされていない拡張ライブラリのチェック? のみ実施させるようにしています。

[fade612d18] Hiroshi SHIBATA 2023-03-09 22:59:34 UTC

15739c66b713a695b0dfc1e4c1bf01b7d2a04426 で gem prinstine のオプション --only-missing-extensions を追加した時に不要なフラグのセットが混じっていたのを削除しています。

[65f2563551] Takashi Kokubun 2023-03-10 04:57:06 UTC

doc/rjit/rjit.md に RJIT は実験的なプロジェクトなので本格的に使うには YJIT のほうを考慮するようにと追記しています。

[f1c9f89ff8] Hiroshi SHIBATA 2023-03-10 01:06:49 UTC

rubygems のテストで環境変数 GEM_HOME を書きかえるものを後で復旧させるように ensure 節での後始末を追加しています。

[5e27d82dd0] Hiroshi SHIBATA 2023-03-10 01:26:13 UTC

f1c9f89ff89ea044c2fda11b9684309c6c31f64c で文字列のクオートをダブルクオートを使うようにしています。 rubocop による指摘とのこと。

[35fd79ac37] Takashi Kokubun 2023-03-10 05:55:14 UTC

RJIT で最適化命令のある演算子メソッドなどで脱最適化する時の機械語命令の生成を必要になった時まで遅延するようにしています。

[4afe9c09a0] Takashi Kokubun 2023-03-10 06:14:43 UTC

RJIT から利用する C の関数 imemo_type() のかわりに imemo_type_p() を利用するようにしています。よくわかりませんが imemo_type() を利用していて SEGV することがあったとのこと。

[e07e9f8491] Takashi Kokubun 2023-03-10 06:31:50 UTC

cont.c の jit_cont_free() の最初に引数の cont が NULL だった時のチェックを追加しています。

[3c35c13aaa] Takashi Kokubun 2023-03-10 06:43:38 UTC

MJIT 時代に削除された RJIT 用オプション --rjit-pause を復活させています。

[4dce12bead] Samuel Williams 2023-03-10 10:38:09 UTC

process.c の不要な関数の前方宣言を削除しています。 https://github.com/ruby/ruby/pull/7497