ruby-trunk-changes 2022-10-14

今日は Object Shapes の不具合修正や RubyVM::Shape というデバッグ用のクラスをデフォルトのビルドでは定義しないようにする変更などがありました。

[2cc3963a00] Yusuke Endoh 2022-10-13 10:23:46 UTC

913979bede2a1b79109fa2072352882560d55fe0 の Object Shapes の shape_id と index を 1つのメンバーに埋め込んだ時に 32bit 環境で誤った型昇格があって誤動作する可能性があった不具合修正のため明示的なキャストを追加しています。失敗したテストみてもさっぱりなぜかわからないのでこういう根本的なところで不具合が出ると追求大変そうですね。

[1b0c9d0e3d] Alan Wu 2022-10-12 20:19:55 UTC

YJIT のメモリ管理で確保したメモリ領域を 0x1E で埋めておくのを x86_64 アーキテクチャの時だけにして arm64 ではそのままにしておくようにしています 0x00 埋めが x86_64 では有効な命令? だけど arm64 では不正なのでそのままでいいっていうことみたいです。

[e5058b58c2] Aaron Patterson 2022-10-12 21:37:02 UTC

Object Shapes のデバッグのための RubyVM::Shape というクラスは VM_CHECK_MODE が 1以上に指定されてビルドされた時だけ定義されるようにしています。

[93a87f4963] Jimmy Miller 2022-10-13 22:17:13 UTC

YJIT の x86_64 アーキテクチャ向けのコード生成で write_rm() 関数の op_ext という引数を Option にして None を渡せるようにしています。 None のかわりに 0xff を渡してたけど意味がわかりやすようにするためのリファクタリングだと思います。 https://github.com/ruby/ruby/pull/6542

[3c0b4ef1a2] Jimmy Miller 2022-10-13 22:20:04 UTC

YJIT の Rust 実装の clippy による lint の指摘の対応をしているようです。 https://github.com/ruby/ruby/pull/6543

[5e554d30ba] Takashi Kokubun 2022-10-13 23:28:16 UTC

AppVeyor の設定ファイル .appveyor.yml でインストールする zlib のバージョンを 1.2.13 に更新しています。新しいバージョンがリリースされて前のバージョンのパッケージファイルが削除されちゃったみたいです。脆弱性の修正があったのかな。

class.c の ins_methods_undef_i() の内容を ins_methods_type_i() に委譲するようにリファクタリングしています。

[5ccb625fbb] Nobuyoshi Nakada 2022-10-04 09:10:41 UTC

各所で配列のサイズ計算に roomof() マクロを利用するようリファクタリング