ruby-trunk-changes 2021-12-04

今日は YJIT のコード領域への書き込み時のバッファオーバーランチェック追加などがありました。

[28fb6d6b9e] Burdette Lamar 2021-12-03 13:12:28 UTC

doc/syntax/literals.rdoc や Kernel#Integer, Kernel#Rational などの Kernel のメソッド群の rdoc 用コメントのマークアップ追加やリンク追加など。 https://github.com/ruby/ruby/pull/5192

[ec7f14d9fa] "S.H" 2021-12-03 15:01:24 UTC

node.h に NODE 型のタイプを判定する nd_type_p() というマクロを導入してこれを利用するようにリファクタリングしています。

[81eadd976f] git 2021-12-03 15:01:42 UTC

version.h の日付更新

[081539023a] Peter Zhu 2021-12-02 21:27:43 UTC

gc.c の try_move_in_plane() を try_move_plane() に、gc_fill_swept_page_plane() を gc_fill_swept_plane()、gc_page_sweep() を gc_sweep_page()、gc_marks_wb_unprotected_objects_in_plane() を gc_marks_wb_unprotected_objects_plane() などと改名しています。

[7fc9d83bd1] Burdette Lamar 2021-12-03 16:46:35 UTC

String クラスの rdoc 用コメントのリンクを id つきの特定のセクションへのリンクになるように修正しています。 https://github.com/ruby/ruby/pull/5208

[54ca530dbe] eileencodes 2021-12-01 19:01:34 UTC

YJIT の統計情報用のカウンタに getivar_megamorphic というのを追加しています。インスタンス変数まわりで side exits というのが頻繁に起きるのでその調査のためみたいです。side exits というのは YJIT で JIT コンパイルしたコードを作るか実行するかで支障があってあきらめるっていうことみたいですね。たぶんコンパイル時にあきらめるのは cancel って呼んでたところがあった気がするので実行時に抜けることじゃないかなぁ。

[c38c1d82b1] David Rodríguez 2021-11-29 12:43:09 UTC

bundler が Bundler::CompactIndexClient::Updater#update で一時ディレクトリ作成に Errno::EACCES で失敗した時にそれを捕捉して Bundler::PermissionError という例外を上げなおしていたのをやめています。そもそもこのエラー起きることあるの? という疑問もあるみたいで関連するテストごと削除しています。

[f41b4d44f9] Alan Wu 2021-12-01 19:15:23 UTC

YJIT が実行コードを生成する時に確保したメモリ領域をオーバーランしてないことをチェックするため構造体 codeblock_t のmem_block メンバーを mem_block_ と改名して直接参照せずに cb_get_ptr() や cb_get_write_ptr() という関数経由でポインタを得るようにしてそこでチェックするようにしています。またオーバーラン時には assert(3) で異常終了させてましたが NULL を返すようにしています。呼び元で必ずしもチェックしてなさそうなので SEGV しそうですが、そこまではまだ考慮してないってことかな。

[d118e7c025] Nobuyoshi Nakada 2021-12-04 01:35:44 UTC

ec7f14d9fab82b097fb8b58501461cd0e19d6bdf で導入した nd_type_p() をマクロから inline 関数に変更しています。

[a4964174e2] Nobuyoshi Nakada 2021-12-04 01:40:15 UTC

defs/gmake.mk の spec/%/ および spec/%_spec.rb というターゲットで make に直接 spec ファイル指定して rubyspec の指定のファイルのみテストするルールの記述位置を末尾に移動しています。 rubyspec の C API テスト用拡張ライブラリのルールの後にしないといけなかったみたいです。また rubyspec 内の rubyspec.h というヘッダファイル用にマッチしないようにするためのダミーのルールも追加しています。 [ruby-core:106356] [Bug #18374]

[4a6ca12904] Nobuyoshi Nakada 2021-12-04 07:20:30 UTC

make の ruby.pc のターゲットのルール記述を template/Makefile.in から defs/gmake.mk に移動して、Makefile の filter-out を使って --with-ruby-pc で "ruby.pc" が指定されてた時に依存ファイルから削って循環した依存関係になるのを防いでいます。 [ruby-core:106356] [Bug #18374]