ruby-trunk-changes 2019-12-06

今日は inline cache のインスタンス変数のキャッシュについての構造体を分離する変更や、昨日の drb の変更での警告抑制などがありました。

[f4d9daf2b6] Yusuke Endoh 2019-12-05 13:24:58 UTC

dbfd4b780e3914a3f27e92c2248254452bf0fd6b で Solaris でのビルドのため coroutine/ucontext/Context.c に #include "ruby/config.h" を追加しましたが、これはやめてかわりに Solaris の環境で #define __EXTENSIONS__ するのみに留めるようにしています。 https://github.com/ruby/ruby/commit/dbfd4b780e3914a3f27e92c2248254452bf0fd6b#diff-7fd78c3cc8a19b7e0637502983ec26ff

[d43b9eb22d] Yusuke Endoh 2019-12-05 13:37:08 UTC

a0bc0e1ba15e83c72426ac243ea96e6497c49859 で標準添付ライブラリ drb の DRb::DRbConn のクラスのインスタンス変数(クラス変数にあらず)を class 文のコンテキストで初期化する処理が消されてたので復活させています。警告抑制のためとのこと。

[6477d98e49] Yusuke Endoh 2019-12-05 14:46:42 UTC

MJIT 用のテストでサポート外のコンパイラを検出するための正規表現を MJIT_CC にはフルパスを入れるようにしたのでそれに追随させています。

[173b864668] Kazuhiro NISHIYAMA 2019-12-05 14:56:14 UTC

d43b9eb22de1b1cd8de09a161cc836413cc158a1 で DRb::DRbConn の class 文内でインスタンス変数 @pool_proxy を初期化するのに make_pool でインスタンスを作ってましたが、ここでは nil で初期化するように戻しています。 ここで pool 作っちゃうと require しただけで Thread 起動しちゃうので。未代入のインスタンス変数参照の警告抑制のためには nil を入れておくだけで足ります。

[693cba1a13] Kazuhiro NISHIYAMA 2019-12-05 15:11:11 UTC

173b864668777ef157a0c82b6e6f1a6aa0f06ac9 を契機にして標準添付ライブラリ内の .rb ファイルを require してみてそれだけで Thread が起動しないかというのを確認するテストを追加しています。

[38b7f947a2] git 2019-12-05 15:13:22 UTC

version.h の日付更新

[2c8d186c6e] Aaron Patterson 2019-10-12 00:06:41 UTC

inline cache の実体である struct iseq_inline_cache_entry からインスタンス変数の inline cache の時の値を struct iseq_inline_iv_cache_entry という別の構造体に分離するようにしています。インスタンス変数の時は VALUE ではなく配列のインデックス値をキャッシュしているため struct iseq_inline_cache_entry 内に共用体で定義されていて、これが GC.compact の移動の対応の処理のためにやりにくいので分離たということみたいです。

[2f6a8baac6] Kazuhiro NISHIYAMA 2019-12-06 06:56:14 UTC

拡張ライブラリ socket のテストに Socket.ip_address_list が "localhost" に対応するアドレスを含むことを確認するテストを追加しています。なんか昔コンテナ(lxc だったかな)かなにかの中で動かそうとして localhost がない、みたいなことがあったような気がするけど、今はいずれにせよそういう環境だと他にもコケるテストがあるので明示的な確認というかわかりやすいエラーを起こすため、ということみたいです。