ruby-trunk-changes r66638 - r66654

今日から ruby trunk changes は、はてなダイアリーからはてなブログへ移行してきました。
今日はTracePoint#enable の target_thread: キーワード引数やテストの CI 対策で主にタイムアウトの延長などがありました。

ko1: r66638 2018-12-30 01:29:44 +0900

Transient Heap と一緒に導入された要素数の小さい Hash を内部的に配列で実装する array hash 用の構造体 ar_table や ar_table_entry などの宣言を internal.h から hash.c 内に移動して他のソースファイルから不可視にしています。このため構造体サイズを得る関数 rb_hash_ar_table_size() を追加して gc.c から sizeof() のかわりにこれを利用するよういんしています。

svn: r66639 2018-12-30 01:29:52 +0900

version.h の日付更新。

ko1: r66640 2018-12-30 01:44:09 +0900

TracePoint#enable に target_thread: キーワード引数を追加して、指定の Thread のみでイベントフックが反応できるようにしています。 テストでもイベントフック内で別 Thread じゃないか判定してたりしたので有用そう。[ruby-core:90750] [Feature #15473]

eregon: r66641 2018-12-30 06:54:45 +0900

r66636 で rubyspec の Process.clock_gettime でどのタイマー種類が Redhat で動かなかったのか調べようとしていましたが、CLOCK_BOOTTIME_ALARM と CLOCK_REALTIME_ALARM は権限が必要なことがあるそうでテスト対象から除外するようにしています。

eregon: r66642 2018-12-30 06:54:59 +0900

r66641 の続きで r66624 で Solaris でも Process.clock_gettime のテスト除外していましたが、こちらも r66635 で CLOCK_XXX の種類ごとに it を分けるようにしたので一旦有効に戻してどの CLOCK_XXX が失敗するのか確認しようとしています。

eregon: r66643 2018-12-30 06:55:12 +0900

rubyspec の Process.spawn にオプションとして Integer を fd 番号として渡す機能のテストを AIX でも実行除外するようにしています。

nobu: r66644 2018-12-30 08:40:15 +0900

NameError と NoMethodError の rdoc 用コメントにキーワード引数 receiver の説明を追記しています。また NoMethodError の private 引数の説明も追記しています。 [ruby-core:90796] [Bug #15481]

eregon: r66645 2018-12-30 09:05:56 +0900

rubyspec に upstream から最新版をマージ。

normal: r66646 2018-12-30 09:46:02 +0900

rubyspec の socket の Socket#accept_nonblock のテストで謎の sleep をしていたところを IO.select を使うように修正しています。

k0kubun: r66647 2018-12-30 10:00:29 +0900

Refinements のテストで子プロセスを起動するもののタイムアウト値を伸ばしています。また EnvUtil.apply_timeout_scale で子プロセスを起動する assertion のタイムアウトに一律倍率をかけるやつの MJIT が有効じゃない時のデフォルトも長くしています。

sorah: r66648 2018-12-30 12:15:58 +0900

rubygems のテスト用の Gem::TestCase クラスの setup メソッドに環境変数 SOURCE_DATE_EPOCH をクリアするコードを追加しています。

k0kubun: r66649 2018-12-30 15:09:38 +0900

r66326 の VM の命令最適化で空になる ensure 節の不具合修正で追加したテストも CI 向けにタイムアウトを伸ばしています。

k0kubun: r66650 2018-12-30 15:17:16 +0900

r66642 で Process.clock_gettime の Solaris での実行除外をやめてどの CLOCK_XXX が動かないのか確認しようとした結果 CLOCK_PROCESS_CPUTIME_ID、CLOCK_THREAD_CPUTIME_ID、CLOCK_VIRTUAL、CLOCK_PROF などもテスト対象から外すようにしています。

k0kubun: r66651 2018-12-30 15:19:10 +0900

巨大すぎる Array に Array#push を呼んだ時のテストでも CI のエラー対策としてタイムアウトを伸ばしています。

k0kubun: r66652 2018-12-30 16:36:27 +0900

rubyspec の TCPSocket#accept_nonblock のテストで IO.select での待ちを入れることで Solaris での実行除外をやめています。

mame: r66653 2018-12-30 22:21:30 +0900

RubyVM.resolve_feature_path の rdoc 用コメントを関数本体のある load.c から vm.c の prototype 宣言の前に移動しています。メソッドに対する rdoc のコメントは rb_define_method() のあるソースファイルにないといけないそうです。 [ruby-core:90797] [Bug #15482]

kazu: r66654 2018-12-30 23:09:09 +0900

RubyVM.resolve_feature_path の rdoc 用コメントでサンプルコードの結果が間違っていたのを修正しています。