ruby-trunk-changes r63092 - r63100

今日は Rational#to_f が場合によって誤った結果を返す不具合の修正などがありました。

k0kubun: r63092 2018-04-04 22:17:01 +0900

mjit_compile() でグローバル変数 mjit_opts.debug が偽の時には生成するソースコードでマクロ OPT_CHECKED_RUN を 0 に設定するようにして leave 命令でのスタック一貫性チェックをスキップするようにしています。

mame: r63093 2018-04-04 23:02:59 +0900

Rational#to_f が誤った値を返すことがある不具合を修正。浮動小数点数の誤差問題? と思いきや Bignum#fdiv で内部で一度 double に変換するせいで問題がおきるみたいなので、割る数が非常に大きい時も Integer のまま計算するパスに入るようにしています。 [ruby-core:86330] [Bug #14637]

mame: r63094 2018-04-05 00:26:11 +0900

r62990 で追加した tempfile のテストでファイルの閉じ忘れを修正しています。

svn: r63095 2018-04-05 00:26:12 +0900

version.h の日付更新。

usa: r63096 2018-04-05 00:44:56 +0900

r63094 のファイルを閉じる後始末でまだファイルを開いてない状態だった時に対応するため、いわゆるぼっち演算子(&.)を使うようにしています。

mame: r63097 2018-04-05 10:05:16 +0900

tool/test-coverage.rb で別ディレクトリでのビルドに対応するようにしているようです。あれ? 対応してなかったのか。

nobu: r63098 2018-04-05 16:00:08 +0900

ISeq のバイナリフォーマットへのダンプでアライメント調整のために r62791 で追加した ibf_dump_align() で調整した padding 部分を 0 クリアしておくようにしています。

nobu: r63099 2018-04-05 16:04:39 +0900

ISeq のバイナリフォーマットのダンプ時に各命令のインデックスを管理するための succ_index_table に生ポインタが含まれるのでそのままダンプしても意味がないのでやめる、というふうにコメントは読めるのですが、差分読んでると関数の引数の変更とか rb_iseq_insns_info_decode_positions() が中で insns_info.positions セットしてたのを戻り値で返して呼び元でセットするように変えたような感じで全体的にリファクタリングようにみえるのでどこが効いてるのかよくわからなかったです。

mame: r63100 2018-04-05 18:48:16 +0900

rubygems のテストで $LOAD_PATH を弄っているところで、各要素の @gem_prelude_index というインスタンス変数の変更も行うようにしています。 symbolic link の解決をした時などに追随が漏れてたのに対処しているのかな。