ruby-trunk-changes r63592 - r63601

今日は主に Math.cbrt の C ライブラリの不具合の対応などがありました。

nobu: r63592 2018-06-06 23:01:43 +0900

Math.cbrt が 1より少しだけ小さい(prev_float 2つぶん) Float で正しい値にならず 1.0 よりちょっと大きくなってしまうという問題が


というツイートで話題になっていました。その後どうも glibc が最適化時に定数に置換する時の計算の影響らしい(https://twitter.com/anohana/status/1004195971322994688)ということだったので、標準ライブラリの cbrt(3m) の結果をニュートン-ラプソン法を使って補正するようにしています。すごい、これでいいのか。

k0kubun: r63593 2018-06-06 23:36:56 +0900

MJIT のコンパイラを呼び出す worker プロセスを止める時の操作に stop と finish という単語がコメントと変数名などで入り交じってたので、stop のほうを使うように統一しています。

normal: r63594 2018-06-07 05:57:48 +0900

VM 命令数が多くなってきて(今198らしい)線形探索だと効率が悪くなってきたよね、ということで rb_vm_insn_addr2insn2() で線形探索していたのを rb_vm_insn_addr2insn() という関数を追加してここで st_table を使って検索するようにしています。 [ruby-core:87361] [Feature #14814]

svn: r63595 2018-06-07 05:57:49 +0900

version.h の日付更新。

normal: r63596 2018-06-07 10:14:09 +0900

struct iseq_compile_data の cached_const というメンバーは未使用になっていたので削除しています。

usa: r63597 2018-06-07 11:37:44 +0900

r63587 の Net::HTTP の write_timeout オプションの追加時に追加したテストで Windows 環境では write timeout を起こすことができなかったそうなので、同時に read_timeout オプションも指定して Net::ReadTimeout で補足するようにしています。 Windows だとバッファがあふれたらどうなるんだろう?

naruse: r63598 2018-06-07 15:18:23 +0900

r63597 のテストの修正ですが、read_timeout と同居させるのはテストの意図にあわないので revert して単に Windows 環境ではこのテストを skip するようにしています。

hsbt: r63599 2018-06-07 19:13:00 +0900

標準添付ライブラリ openstruct も gemspec ファイルを追加して default gem 化しています。 https://github.com/ruby/ostruct

kazu: r63600 2018-06-07 21:06:15 +0900

r63587 で導入した例外クラス Net::WriteTimeout の rdoc 用コメントで関連するオプション名が read_timeout になってたので write_timeout に修正しています。

hsbt: r63601 2018-06-07 21:10:24 +0900

標準添付ライブラリ matrix にも gemspec ファイルを追加して default gem 化しています。 upstream は https://github.com/ruby/matrix