ruby-trunk-changes 2021-06-19

今日は主にクラス変数のインラインキャッシュの実装追加などがありました。

[b91b3bc771] eileencodes 2021-06-01 17:34:06 UTC

e8ae922b62adb00a80d3d4c49f7d7b0e6026eaba08de37f9fa3469365e6b5c964689ae2bae0eb9f3 で一旦入れられたけど(おそらく複数 Ractor 対応がされてなかったなどの理由で) 07f055bb132f21fd71af2720382ad8d2e8f69e47 ですぐに revert されたクラス変数の参照のインラインキャッシュ実装をリトライしています。 T_CLASS 型オブジェクトが持つ struct rb_classext_struct のメンバーに cvc_tbl というメンバーを追加してここにキャッシュしている値を保持するようです。キャッシュの invalidation には VM グローバルな通し番号で状態を保持しておいてこれが更新されてたら無効化するみたいですが、INC_GLOBAL_CVAR_STATE() というマクロが追加されているのにこれが呼ばれているところがないのが気になる。けどこのマクロを使わずに直接グローバル変数をインクリメントしてるコードはあるので、実際には無効化もしているみたいですね。 https://github.com/ruby/ruby/pull/4340

[53a094ea45] git 2021-06-18 17:03:03 UTC

version.h の日付更新

[72a4e1d3bb] Jeremy Evans 2021-06-18 18:57:55 UTC

TracePoint の rdoc 用コメントの event のタイプ line が発火するタイミングについての記述に対象が expression か statement だというのを明記しています。式が複数行にまたがっている時にその途中の行についてイベントが発火しないことがあるのでそれを明確にするためみたいです。チケットのサンプルをみると確かに発火しそうにみえるので、期待はわからなくはないですね。 [ruby-core:91659] [Bug #15634]