ruby-trunk-changes r66496 - r66510

今日は OpenStruct#to_h もブロックを受け付けるようにする変更や、Exception#cause のセットの時に例外以外のオブジェクトや循環した参照を弾く変更、rubygems, csv などのライブラリの更新がありました。

marcandre: r66496 2018-12-23 02:05:03 +0900

r64794 で Array#to_h や ENV.to_h などに加えて Struct で作ったクラスのインスタンスメソッド to_h がブロックを受け付けるようになったので、標準添付ライブラリ ostruct の OpenStruct#to_h もブロックを受け付けて評価結果を値として持つ Hash を返すようにしています。 [ruby-dev:50725] [Feature #15451]

svn: r66497 2018-12-23 02:05:05 +0900

version.h の日付更新。

normal: r66498 2018-12-23 07:39:31 +0900

Integer(), Rational(), Complex() などの数値系の変換メソッドの rdoc 用コメントに exception: というキーワード引数で不正な文字列受け付けた時に例外にするかわりに nil を返す機能について追記しています。 これっていつから追加された機能だったかな…。2.6 からか。 [ruby-core:90673] [Bug #15452]

hsbt: r66499 2018-12-23 09:20:49 +0900

rubygems を 3.0.1 に更新しています。gem のインストール時のディレクトリの mode の修正や Dir.home を dup してからわたす変更など。 Dir.home って frozen になったんだっけ。 https://blog.rubygems.org/2018/12/23/3.0.1-released.html

k0kubun: r66500 2018-12-23 09:45:11 +0900

rb_iseq_free() で引数のポインタ iseq が NULL の時にチェックせずに参照しているところがあったので NULL チェックを追加しています。Coverity Scan による検出とのこと。

k0kubun: r66501 2018-12-23 10:10:06 +0900

r66486 で .travis.yml で macOS でのテストに -v オプションをつけるようにしましたが、これを消してかわりに make test-all を travis-wait というコマンド? 経由で起動するようにしています。 travis_wait ってなにかなーと調べてみると、Travis-CI は標準出力などに出力がないまましばらく止まってるとハングアップとみなして? 止められてしまうようなので、その待ち時間を伸ばすために指定するものみたいです。30分に指定ってことかな。 https://docs.travis-ci.com/user/common-build-problems/

k0kubun: r66502 2018-12-23 10:35:14 +0900

r66501 の再修正。make test-all の前に $SETARCH による setarch コマンドも挟んでることがあるので、その前に travis_wait を追加するようにしています。

k0kubun: r66503 2018-12-23 10:40:33 +0900

拡張ライブラリ fiddle のテストのタイムアウト値を伸ばしています。 msec 単位だし元々かなりシビアですね。

k0kubun: r66504 2018-12-23 10:58:33 +0900

r66481 とか r66484 で .travis.yml の macOS のビルド時に -j をつけるのをやめてましたが、そこのコメントを書き換えてこれを恒常化するようにしたみたいです。

marcandre: r66505 2018-12-23 12:43:45 +0900

Struct の作ったクラスのインスタンスメソッド to_h の rdoc 用コメントにブロックを受け付けた時の仕様について追記しています。 [ruby-core:90677] [Bug #15454]

nobu: r66506 2018-12-23 14:49:43 +0900

r66475 で Exception の cause に例外以外のものが入ってた時の表示の修正をしてましたが、やはりそもそも例外オブジェクト以外のものが入るのはおかしいということで、セットしようとした時点で TypeError を発生させるようにしています。 [ruby-core:90656] [Bug #15447]

kou: r66507 2018-12-23 16:00:35 +0900

標準添付ライブラリ csv に upstream から 3.0.2 をマージ。出力の高速化が含まれているとのこと。

normal: r66508 2018-12-23 17:42:44 +0900

r66488 とか r66494 で対応していた Mutex ロックしたまま fork した時のテストで一部の CI 環境で OOM Killer に殺されてた(前のコミットではプロセス数制限超えたみたいな感じだったけどやっぱり SIGKILL が飛ぶということは OOM Killer ですね)のを回避するため Thread は 1つだけ立てて [Bug #15383] の再現コードのまま(?)にするように、デバッグ用の一時ファイルへの出力も消しています。 [ruby-core:90676] [Bug #15430]

nobu: r66509 2018-12-23 20:11:35 +0900

r66507 の行末の空白削除……ってあれ? svn さんじゃない?

nobu: r66510 2018-12-23 20:11:36 +0900

r66493 で循環した Exception#cause の参照を表示する時に対応してましたが、これもそもそもおかしいはずなのでセットする時に検出して ArgumentError を発生させるようにしています。 [ruby-core:90656] [Bug #15447]