ruby-trunk-changes 2020-10-02

今日は Fiber のメモリ解放時の潜在的不具合修正や Range リテラルの最適化の復活などがありました。

[9fb60672d5] Aaron Patterson 2020-09-24 03:06:38 UTC

cont_free() で Fiber のスタック解放処理の前提として fiber_is_root_p() の呼び出しをしていたのを削っています。 ASAN で Fiber がその親の Thread と同時に回収される場合に解放したメモリ領域を触るのを検出したそうです。このチェックなくてもいいのかなと思ったけどコミットログにはいらないはずってありますね。

[d959987891] git 2020-10-01 15:43:14 UTC

version.h の日付更新

[8dd9a23693] eileencodes 2020-09-24 18:00:51 UTC

super の呼び出しで呼ぶべき method entry を探す vm_search_super_method() で FL_TEST() のかわりに FL_TEST_RAW() を使うようにするなど細かい最適化をしています。

[c827cacde1] Kenta Murata 2020-10-01 23:04:25 UTC

Memory View のインターフェースの構造体 rb_memory_view_t のメンバー ndim の型を int から ssize_t に変更しています。ビルド時の警告抑制のため。 https://github.com/ruby/ruby/pull/3615

[c881678cd7] Nobuyoshi Nakada 2020-10-01 23:43:33 UTC

rubyspec の File.lcmod のテストを削除しています。環境の glibc のバージョンなどによって挙動が異なるので spec としてテスト書きずらいということみたいです。 [ruby-core:97302] [Bug #16662]

[8d76b729a1] Koichi Sasada 2020-09-25 15:53:07 UTC

VM 命令へのコンパイル時に Range リテラルのオブジェクトを putobject の operand に埋め込んで毎回同じオブジェクトを返すようにする最適化を復活させています。 Ractor で問題があったので無効にしてたけど Range が常に freeze されてて Ractor sharable になったので問題なくなったようです。

[4b41ee154f] Aaron Patterson 2020-10-02 01:13:26 UTC

Thread オブジェクトの GC.compact 時の処理のコールバック thread_compact() で rb_thread_t::self の内容も compact による移動での参照更新を行うように対応追加しています。

[89ca842dcc] Nobuyoshi Nakada 2020-10-02 01:57:07 UTC

Float オブジェクト同士の比較を行う関数 rb_float_cmp() で第1引数が Float::NAN だった時に ArgumentError を発生させるようにしてオブジェクト変換のための TypeError が発生しないようにしています。 [ruby-core:100236] [Bug #17205]

[74aaa8e7ab] Gwitr 2020-09-23 14:16:39 UTC

doc/marshal.rdoc のフォーマットの説明の修正。