ruby-trunk-changes 2020-11-06

今日は GC と Ractor まわりの修正と T_DATA 型のオブジェクトの一部を Ractor#send で copy 可能にする変更などがありました。

[b29fe5eb2d] "NARUSE, Yui" 2020-11-05 11:51:17 UTC

Object#__send__ の rdoc 用コメントに send より __send__ のほうが再定義されてないことが期待できるのでより安全なので良いという追記をしています。

[3407b7d8a6] "NARUSE, Yui" 2020-11-05 11:54:34 UTC

4dba0c1a8e3cc08664872e637099c4e7d58d24d3 で標準添付ライブラリ内で __send__ を send に戻してたのを revert しています。

[8014ed9bd2] Soutaro Matsumoto 2020-11-05 15:11:48 UTC

bundled gems の rbs と typeprof のバージョンを更新しています。 https://github.com/ruby/ruby/pull/3732

[193edbde91] git 2020-11-05 15:12:16 UTC

version.h の日付更新

[68a3a2d90f] Aaron Patterson 2020-11-05 16:51:40 UTC

gc.c の gc_double_heap_size() および gc_sort_heap_by_empty_slots() で heap_eden の page リストを操作する時に RB_VM_LOCK_ENTER()/RB_VM_LOCK_LEAVE() で排他処理するようにしています。

[ab5f2fa4fb] Aaron Patterson 2020-11-05 19:13:04 UTC

68a3a2d90f96b46e5c20659ea3eef3f554fbf542 の変更は revert して呼び元の gc_verify_compaction_references() 内で page の追加などを行なうようにしています。また gc_verify_compaction_references() の未使用の引数は消して rb_objspace_t を渡すようにしています。

[d8da5c1983] Aaron Patterson 2020-11-05 20:27:09 UTC

gc_sort_heap_by_empty_slots() 内の GC_ASSERT() を assert(3) に置き換えています。デバッグのためみたいですね。

[6d17c9fa5d] Aaron Patterson 2020-11-05 20:28:50 UTC

gc_sort_heap_by_empty_slots() の最初に gc_rest() を呼び出して GC 完結させてたのを呼び元の gc_verify_compaction_references() で無条件に呼ぶようにしています。heap_add_pages() の前に呼ぶようにしたのがキモかな? d8da5c198348eac3d3d7a3e13dfb8a9351ed07ae で assert() にしていたのがこの修正のためかな(戻してないですが)。

[4948982b53] Yusuke Endoh 2020-11-06 04:28:58 UTC

bundled gems の typeprof のバージョンをさらに更新しています。

[7718e9588b] Koichi Sasada 2020-11-05 18:21:08 UTC

Ractor#send で別の Ractor に共有するオブジェクトに T_DATA 型のオブジェクトのうち参照しているオブジェクトが shareable なものだけとわかっている場合には copy 可能にしています。

[037803e092] Hiroshi SHIBATA 2020-11-06 08:42:57 UTC

標準添付ライブラリの net/xxx 群の gemspec ファイルに net-protocol.gem (net/protocol) への依存関係を追加しています。