ruby-trunk-changes 2023-03-09

今日は主に ObjectSpace.trace_object_allocations のコールバック内で Variable Width Allocation を利用しているオブジェクトを生成すると異常終了する可能性があった不具合の修正や defined? をインスタンス変数に使う時の専用の VM 命令 defined_ivar の追加などの変更がありました。

[e1bd45624c] Peter Zhu 2023-03-07 14:50:30 UTC

拡張ライブラリ objspace の ObjectSpace.trace_object_allocations のコールバックのブロック内で Class を生成すると異常終了することがあった不具合を修正。オブジェクトの生成時に slot をクリアするのに newobj_fill() を使っていましたがこれは struct RVALUE 1つぶんの範囲しかクリアしないので複数まとめて確保する heap では初期化漏れする部分があったのでそのためみたいです。初期化する範囲を heap の slot サイズに合わせる newobj_zero_slot() という関数を追加してこれで再初期化するようにしています。 [ruby-core:112721] [Bug #19482]

[611a64250a] Nobuyoshi Nakada 2023-03-08 11:40:06 UTC

標準添付ライブラリ syntax_suggest のテストで出力の色付けを環境変数に依存してオフにする処理を追加しています。

[dc1e6573f2] Nobuyoshi Nakada 2023-03-08 15:49:11 UTC

611a64250a2406ee0bc864ef3d4b565036865911 の再修正。メソッドの receiver 書き漏れを修正。

[1a3f8e1c9f] Ole Friis Østergaard 2023-02-28 12:44:57 UTC

VM 命令に defined? をインスタンス変数に対して呼んだ時の専用の命令 defined_ivar を追加しています。Object Shapes の実装の高速化のためみたいです。とはいえ VM 命令の追加となるとチケットでの議論はあったのかな? チケット参照はないけど。

[4667a3a665] Ole Friis Østergaard 2023-03-01 13:49:39 UTC

1a3f8e1c9f6ce4b1cd7236fdcdd17a8719654320 で追加した VM 命令 defined_ivar の YJIT の対応追加。

[2f19c5b7e0] Burdette Lamar 2023-03-08 19:47:41 UTC

標準添付ライブラリ net/http の rdoc 用コメントの手直し。 https://github.com/ruby/net-http/pull/130

[cc54e1cf48] Takashi Kokubun 2023-03-08 20:00:13 UTC

prelude.rb で Enumerable#to_set の定義しているところで既に定義済みだったら行なわないようにしています。RJIT を利用時に再定義が起きることがあったみたいです。

[309dd50a01] Takashi Kokubun 2023-03-08 21:13:22 UTC

RJIT 用の C binding 生成のツールで rjit_c.h のパース結果を探索する処理に不具合があったみたいなので修正しています。

[cb3f1f6de8] Hiroshi SHIBATA 2023-03-08 04:11:54 UTC

rubygems の Gem::Specification#missing_extensions? というメソッドで拡張ライブラリっぽいファイルがロードパス内にあったら false を返すようにする処理を追加しています。

[ea8b5e7359] Hiroshi SHIBATA 2023-03-08 04:20:06 UTC

lib/rubygems/specification.rb のインデントの修正のみ。

[1658e7d966] Samuel Williams 2023-03-09 03:05:47 UTC

SIGCHLD で子プロセスの終了を検出する処理を削除しています。これって signal thread の削除と MJIT が worker プロセスを持ってた時代のあれこれですごく複雑になってたんだったと思いますが、もう不要になったってことかな。 https://github.com/ruby/ruby/pull/7476

[2ecdefab7d] lukeg 2023-03-08 17:29:39 UTC

test/ruby/test_default_gems.rb で git コマンドが利用できない時に skip していたテストを git rev-parse を実行するのをソースディレクトリに移動して実行するように修正しています。

[96d1acfdf6] Nobuyoshi Nakada 2022-11-30 05:01:54 UTC

configure で thread local storage のコンパイラによるサポートをチェックする処理の位置を移動しています。 RedHat Enterprise でのビルドのエラーの対応みたいです。 [ruby-core:111075] [Bug #19161]

[cf08a85b85] Nobuyoshi Nakada 2023-03-08 15:58:20 UTC

rubygems のテストで IO の close 漏れを修正しています。

[7d7b67a472] Takashi Kokubun 2023-03-09 07:07:30 UTC

rjit.c および rjit_c.c で関数の前方宣言していたところを rjit.h の #include を前に移動して不要にしています。

[a0918a4a80] Takashi Kokubun 2023-03-09 07:12:49 UTC

RJIT の実装で専用の verbose() という関数を定義してデバッグ出力していたのを rb_warn() を利用して警告出力するようにしています。

[f5909ac6d9] Takashi Kokubun 2023-03-09 07:14:33 UTC

RJIT 用の関数や変数で rjit_ という prefix のものを export していたのを rb_rjit_ という prefix に改名しています。

[4be224eaf5] Takashi Kokubun 2023-03-09 07:25:36 UTC

rjit.c の関数定義などの順序を入れ替えているみたいです。

[1a0d3ec4b9] Takashi Kokubun 2023-03-09 07:37:58 UTC

RJIT 用の関数で公開が不要だったものは rb_rjit_ の prefix を rjit_ に戻して static 関数にしています。

[7bd7aee02e] KJ Tsanaktsidis 2022-01-08 04:21:46 UTC

拡張ライブラリ objspace の ObjectSpace.trace_object_allocations などで利用している GC のイベントフックで rb_execution_context_t::cfp が NULL の場合にスキップするようにしています。 Ractor を利用している時に異常終了することがあったそうです。

[44a0711eab] Samuel Williams 2023-03-09 08:48:50 UTC

1658e7d96696a656d9bd0a0c84c82cde86914ba2 の続きで SIGCHLD のシグナルハンドラの特別扱いも不要になったため削除しています。 https://github.com/ruby/ruby/pull/7482