ruby-trunk-changes 2023-11-11

今日は主に Hash の削除系メソッドでの st_table の compaction をすぐにするようにした変更や Thread::Backtrace 関係のクラスのオブジェクトを Variable Width Allocation による拡張 slot への埋め込みを使うようにする変更などがありました。

[068bf59b33] Jun Aruga 2023-11-10 11:27:13 UTC

Travis-CI の設定で arm64-linux でのビルド/テストをエラーを無視するようにしていたのをやめています。

[1ee6968855] Edwin Garcia 2023-11-10 10:50:56 UTC

YJIT の Rust 実装のコメントの typo 修正。

[a2442e91fd] Jean Boussier 2023-11-10 09:21:28 UTC

Thread::Backtrace::Location クラスのインスタンスの実装で T_TYPEDDATA 型の構造体を slot 内に埋め込むように指定しています。

[a9f45aac6e] Jean Boussier 2023-11-10 10:53:50 UTC

T_DATA 型オブジェクトの構造体ポインタの開放時や memsize_of の実装でポインタを取り出すのに DATA_PTR() を使っていたのが T_DATA 型オブジェクトの slot 埋め込み利用時に不正なポインタ操作をしてしまっていたので RTYPEDDATA_GET_DATA() を利用するように修正しています。

[3b69637eba] Jean Boussier 2023-11-10 10:56:40 UTC

Thread::Backtrace のオブジェクトも TypedData の slot 埋め込みを利用するようにしています。

[5f3fb4f4e3] Peter Zhu 2023-11-10 16:27:49 UTC

f6910a61122931e4193bcc0fad18d839c319b720 で Object Shapes の rb_shape_t::type のタイプの定数の SHAPE_CAPACITY_CHANGE というのを削除していたのを revert しています。Shopify 社内でのテストで異常終了が発生していたとのこと。

[38fe710e08] Alan Wu 2023-11-09 17:57:45 UTC

YJIT の Rust 実装でコードのソースコードの位置情報を生成する処理がエラー時? でうまく位置情報を設定できない時にも呼ばれてしまっていたのを抑制しているみたいです。

[b8eb4bd4ce] Alan Wu 2023-11-09 16:59:51 UTC

38fe710e08db3d93b6225f9c41c18c672e602d7f の続きで YJIT の Rust 実装で Assembler.compile のエラー時の処理が漏れていたところを修正。

[82ce47415b] Burdette Lamar 2023-11-10 17:14:58 UTC

標準添付ライブラリ open3 の rdoc 用コメントにメソッドリストの追加やドキュメントの体裁の整形など。 https://github.com/ruby/open3/pull/18

[7e6609e8f0] Peter Zhu 2023-11-10 17:43:06 UTC

variable.c の不要なインデントの修正のみ。

[8044feb7ab] ima1zumi 2023-11-10 19:27:26 UTC

irb のバージョンを 1.9.0 に更新しています。 https://github.com/ruby/irb/pull/757

[642b9c6987] git 2023-11-10 19:28:32 UTC

NEWS の default gems のバージョンを 1.9.0 に更新しています。

[0a93ea4808] Alan Wu 2023-11-10 20:21:56 UTC

YJIT の Rust 実装の linter (clippy) による指摘の適用みたいです。不要な clone() の呼び出しを消しているようですね。

[408d5886cf] Alan Wu 2023-11-10 20:26:02 UTC

同じく YJIT の Rust 実装で linter (clippy) の指摘の反映。不要なキャストを削っているようです。

[8dfbfa15f6] Alan Wu 2023-11-10 20:47:23 UTC

YJIT の Rust 実装で不要な into() メソッドの呼び出しを削っています。

[f5fa90fe0b] Alan Wu 2023-11-10 20:54:54 UTC

YJIT の Rust 実装のテスト用の関数で配列を作るのに vec! というマクロ利用していたのをやめています。

[cdaca574ce] Alan Wu 2023-11-11 00:08:05 UTC

NEWS の YJIT の code GC をデフォルトで無効にしたことの記述の説明の追加や英語のいいまわしの修正をしています。 https://github.com/ruby/ruby/pull/8865

[277a3ecbf5] Alan Wu 2023-11-11 00:08:13 UTC

yjit.rb 内に rdoc によるドキュメント化を抑制するための :nodoc: タグのコメント追加やクロスリファレンスを抑制するためのエスケープの追加などコメントの修正。

[1fe2bc4b22] Nobuyoshi Nakada 2023-11-09 11:11:38 UTC

ObjectSpace.memsize_of の実装で T_MODULE/T_CLASS/T_ICLASS 型オブジェクトの処理で RCLASS_EXT() の結果が NULL かどうかでの分岐がありましたが、現在はここが NULL になることはないそうなので条件を削っています。

[2a442121d1] Nobuyoshi Nakada 2023-11-11 06:44:35 UTC

ISeq のバイナリフォーマットでのダンプの処理で struct rb_iseq_constant_body::outer_variable メンバー(確かブロックがその外のスコープのローカル変数やダイナミック変数への参照を持っているかを管理してて Proc から外への参照をなくして isolate する時にためのもの?)の内容のダンプ時の実装を rb_id_table_foreach() を使っていたのを一旦配列に詰めて ruby_qsort() で変数名の辞書順でソートしてからダンプするようにしています。同じリストでも順序が安定せずバイナリとして一致しなくなるのを防ぐため。

[9eac9d7178] Nobuyoshi Nakada 2023-10-24 09:33:14 UTC

Hash のメソッドで Hash#delete, #delete_if, #reject など要素を削除するようなメソッド群では st_table の foreach 系関数の中で直接要素を消せないので ST_DELETE で削除済みとしてマークしておいて後でその要素を取り除く処理をするという実装になっていますが、従来は削除の処理のあとすぐには行なわず要素を追加する処理のところで必要なら再構築するという流れになっていたのを、compact_after_delete() という関数を定義して削除系のメソッドの後で再構築するようにしています。ただしブロックを受け取るメソッドの場合削除系メソッドがネストしている可能性もあるので、ある Hash のインスタンスに対するイテレーターがネストしている数をカウントしているところもチェックして最も外側のイテレーターから抜けた時だけ再構築させるようにしています。 [ruby-core:115139] [Bug #19969]

[64f03460ba] Nobuyoshi Nakada 2023-11-11 09:49:19 UTC

DECIMAL_SIZE_OF_BITS() という関数マクロの Doxygen 用コメントの引数の上限の記述の変更とオーバーフローについての注記を追加しています。