ruby-trunk-changes r66690 - r66699

今日は Complex の演算のメソッド呼び出しをバイパスする最適化の強化や OpenBSD での Random の実装の修正などがありました。

k0kubun: r66690 2019-01-03 14:08:43 +0900

.travis.yml の x86-64 Linux の環境で -w オプションをつけて実行するようにしています。RubyCI の CI 群は -w をつけて実行するようになってるので、Travis CI でもひとつは -w をつける環境を作っとこうということだそうです。

svn: r66691 2019-01-03 14:08:46 +0900

version.h の日付更新。

k0kubun: r66692 2019-01-03 14:15:54 +0900

r66690 の再修正。 -w オプションを RUN_OPTS ではなく RUBYOPT 環境変数経由で渡すようにしています。

k0kubun: r66693 2019-01-03 14:19:05 +0900

r66688 で追加した Complex のテストがメソッド再定義の警告が出てたので $VERBOSE を一時的に nil にして抑制するようにしています。

k0kubun: r66694 2019-01-03 14:24:05 +0900

r66693 の再修正。警告を $VERBOSE をいじって抑制するのではなく、メソッド再定義前に remove_method で削除しておくようにしています。

kazu: r66695 2019-01-03 14:51:18 +0900

Kernel#Integer(), #Float(), #Rational(), #Complex() などのメソッドの rdoc 用コメントの call-seq に戻り値が nil になり得ることを追記しています。 exception: true と書いてあって nil も書いてあるのはちょっと違和感がありますね。

kazu: r66696 2019-01-03 14:51:19 +0900

r66695 に続いて Kernel#Complex() の call-seq でキーワード引数 exception: のデフォルト値は true なので false から true に表記をかえています。あーなるほど、キーワード引数についてはデフォルト値を書くから true なのか。

mrkn: r66697 2019-01-03 15:19:17 +0900

Float#* を実装している flo_mul() や Rational#* を実装している関数 nurat_mul() をそれぞれ rb_float_mul()、rb_rational_mul() と改名して static 宣言をはずして、complex.c の f_mul() から直接呼び出すようにする最適化。

k0kubun: r66698 2019-01-03 15:27:35 +0900

r66690 および r66692 の続きで .travis.yml で make test-all に -w オプションを渡すのに env: で環境変数 RUBYOPT にセットさせるのはうまく働かなかったそうなので、make test-all のコマンドラインに直接 RUBYOPT=-w を追加するようにしています。

nobu: r66699 2019-01-03 20:42:24 +0900

random.c に OpenBSD の時に #include を追加しています。 チケットをみると r64625 で Random の実装に arc4random_buf() を利用できるかどうか各 OS のバージョンチェックするようになりましたが、OpenBSD ではこのチェックのためにヘッダが必要だったみたいです。 [ruby-core:90850] [Bug #15494]