ruby-trunk-changes 2020-10-22

今日は Kernel#Rational の引数を可能なら to_int で変換するようにする変更や freeze されているオブジェクトのインスタンス変数へのアクセスを Ractor をまたいで可能にする変更などがありました。

[762be87759] Yusuke Endoh 2020-10-21 14:36:49 UTC

拡張ライブラリ json のテストで assert_same メソッドの第1引数に単項演算子メソッドの "-" が使われてて警告が出てたので引数をかっこでくくるようにしています。

[631eaa8510] Koichi Sasada 2020-10-21 13:54:39 UTC

インスタンス変数テーブルの参照や定数の参照で Ractor 間の共有についてのチェックの条件で rb_ractor_main_p() のチェックのほうを先にして、そもそも Ractor を使ってない時には余計なチェックを省けるようにしています。

[af2471365f] Koichi Sasada 2020-10-21 13:56:35 UTC

Ractor のデバッグ用の rb_ractor_confirm_belonging() というオブジェクトの所属をチェックする関数で Ractor shareable なオブジェクトなら rb_ractor_belonging() が返した id が実行中の Ractor と異なっていても異常終了させないようにしています。

[89f6644de7] Koichi Sasada 2020-10-21 14:00:36 UTC

ractor.c の rb_obj_traverse() およびその内部で使うコールバック関数などのリファクタリング。不要な引数の削除やメモ用に使うオブジェクト生成の遅延など。

[3a97d36157] Koichi Sasada 2020-10-21 14:57:44 UTC

ractor.c の frozen_shareable_p() のリファクタリング。 switch 文で書いてたのをシンプルな if 文に変更したり BUILTIN_TYPE() のかわりに RB_TYPE_P() を使うようにしたり。

[9629378477] git 2020-10-21 15:07:02 UTC

version.h の日付更新

[0c0d0752f1] Koichi Sasada 2020-10-21 15:36:53 UTC

freeze されたオブジェクトであれば Ractor をまたいだインスタンス変数へのアクセスは可能にしています。

[603fb940c0] Koichi Sasada 2020-10-21 15:43:32 UTC

89f6644de71b7dfbdbdba216a8667b9c3348203b の続き?のリファクタリング。 主に ractor.c の obj_traverse_i() のコールバック関数 struct obj_traverse_data::enter_func の戻り値を enum で定数として定義してマジックナンバーを直書きしていたのをやめています。

[d23d5c3130] Kenta Murata 2020-10-22 08:59:52 UTC

Kernel#Rational で 2つの引数がそれぞれ to_r が定義されてないけど to_int は呼べる、という時には to_int で変換してから扱うようにしています。 https://github.com/ruby/ruby/pull/3684 [ruby-core:75995] [Bug #12485]