ruby-trunk-changes r66610 - r66637

今日は主に Fiber#raise メソッドの追加や CI のエラー対応のためのテストのタイムアウト延長などがありました。

samuel: r66610 2018-12-28 22:03:09 +0900

Fiber#raise が実装されています! Fiber って明示的に起こさないと動かないので、どういう仕様になるのか自明ではないと思いますが、Fiber#resume して即座に例外を発生させる(つまり raise するとその Fiber に制御を移す)という挙動になるようです。なるほど。…なんか rescue や ensure で Fiber.yield してると殺すつもりの Fiber が残って、みたいなのがありそうですね。 [ruby-core:65537] [Feature #10344]

samuel: r66611 2018-12-28 22:03:14 +0900

r66610 の続き。Fiber#raise が作っただけでまだ一度も resume が呼ばれてない Fiber に対して呼ばれたら例外にするようにしています。 [ruby-core:65537] [Feature #10344]

samuel: r66612 2018-12-28 22:03:18 +0900

cont.c の #endif につけてるコメントが間違ってたのを修正。

k0kubun: r66613 2018-12-28 22:20:38 +0900

RubyVM::InstructionSequence の to_a と load のテストが CI でこけることがあるのでタイムアウトを伸ばしています。

k0kubun: r66614 2018-12-28 23:05:45 +0900

同じく CI のエラー対策のため子プロセスを起動するテストのいくつかのタイムアウトを伸ばしています。

k0kubun: r66615 2018-12-28 23:12:42 +0900

r66590 の続き。 MJIT のテストを skip するためにサポートしていないコンパイラを検出するルールで icc の時にオプションがあっても検出するようにしています。 r66605 の変更で -std=c99 がつくようになったらかとのこと。なるほどあれで -std=c99 がつくのか。

k0kubun: r66616 2018-12-28 23:18:05 +0900

標準添付ライブラリ webrick のテストで CI のエラー対策のため WEBrick::Utils::TimeoutHandler のテストのタイムアウトを緩めています。

k0kubun: r66617 2018-12-28 23:24:46 +0900

SolarisOracle Developer Studio でビルドした環境で readline のテストが通らないとうことで skip しています。

k0kubun: r66618 2018-12-28 23:30:16 +0900

IO.select で fd 数が多い時のテストが AIX で失敗するということでタイムアウトを伸ばしています。

k0kubun: r66619 2018-12-29 00:19:11 +0900

.travis.yml の travis_wait コマンドに渡すタイムアウトを 30 から 40 に伸ばしています。

svn: r66620 2018-12-29 00:19:13 +0900

version.h の日付更新。

eregon: r66621 2018-12-29 09:22:31 +0900

mspec を upstream からマージ。

eregon: r66622 2018-12-29 09:22:52 +0900

rubyspec を upstream からマージ。

eregon: r66623 2018-12-29 09:54:10 +0900

rubyspec をもう一度更新しています。rubyspec ってたいてい 2回に分けて更新される気がするんですけどなんでなんだろ。

k0kubun: r66624 2018-12-29 10:51:34 +0900

rubyspec の Process.clock_gettime のテストを Windows で実行除外してましたが Solaris でも動かないようなので追加しています。

svn: r66625 2018-12-29 10:51:35 +0900

r66622 の新規追加ファイル、のうちひとつの svn property 設定。どうも r66622 の時には動かずその後の r66624 での編集がトリガーになったみたいですね。

k0kubun: r66626 2018-12-29 10:53:10 +0900

r66613 でタイムアウトを伸ばした RubyVM::InstructionSequence の to_a/load のテストですが 60秒でも足りなかったみたいで 120秒まで伸ばしています。

k0kubun: r66627 2018-12-29 12:57:15 +0900

rubyspec の Process.spawn の fd の CLOEXEC が効いてるのを確認するテストで windows では動かないので platform_is_not で実行除外するようにしています。

k0kubun: r66628 2018-12-29 13:48:23 +0900

Kernel#fork のテストで子プロセス終了待ちのタイムアウトを伸ばしています。

k0kubun: r66629 2018-12-29 15:48:34 +0900

MJIT 有効時の fork のテストで子プロセスからのメッセージをチェックしているところで同時に出力するせいでメッセージが混ざってしまって実際には成功しているのにエラーと判定されることがあるので fork したプロセス内で JIT 対象のメソッドを呼ぶ前に sleep を挟んでタイミングをずらすようにしています。

k0kubun: r66630 2018-12-29 15:49:54 +0900

finalizer 中の GC 発生のテストで大量のオブジェクトの finalizer 設定するテストのタイムアウト値を伸ばしています。これも CI のエラー対策です。

k0kubun: r66631 2018-12-29 16:11:38 +0900

r66556 で ERB.new の必須引数の廃止の deprecated の警告をデフォルトで出すようにしていましたが、これを revert しています。古い仕様の廃止について反対があったので 2.7 でのデフォルト警告はやめて削除も延期するみたいです。

k0kubun: r66632 2018-12-29 16:26:22 +0900

r66631 に続いて ERB.new の第2引数 safe_level については nil か 0 以外の値が渡された時にはやっぱり警告を出すようにしています。 [ruby-core:90781] [Bug #15479]

k0kubun: r66633 2018-12-29 16:41:20 +0900

rubyspec の Process.clock_gettime の各種 clock タイプの利用が Linux でも一部の distro で失敗することがあるそうで platform_is_not による guard に :linux も追加しています。

k0kubun: r66634 2018-12-29 19:50:31 +0900

r66606 と同様に AppVeyor 上の mswin でのみ実行 skip してた MJIT のテストを RubyCI でも除外するため mswin 環境では常に skip するようにしています。

eregon: r66635 2018-12-29 19:54:22 +0900

r66633 で Linux でも実行除外した rubyspec の Process.clock_gettime のテストで 1つの it ブロック内で Process::CLOCK_XXX を試してたのをそれぞれ独立した it ブロックに分割するようにしています。

eregon: r66636 2018-12-29 19:54:37 +0900

r66633 と r66635 の続きで、rubyspec の Process.clock_gettime のテストを Linux で再度有効にしています。どの CLOCK_XXX でこけるのかを検出しようという意図だそうです。

k0kubun: r66637 2018-12-29 20:04:42 +0900

Kernel#system の rdoc 用コメントに exception: キーワード引数について追記しています。 [ruby-core:90795] [Bug #15480]