ruby-trunk-changes r55573 - r55578

今日は pack/unpack の "G" による浮動小数点の変換の不具合修正と拡張ライブラリ json の更新がありました。

naruse: r55573 2016-07-05 11:08:55 +0900

pack/unpack で Float の変換時にコプロセッサ浮動小数点数(精度が 80bitあるので、CPUのレジスタにある時と誤差の出方が違ってよくトラブルになる)が利用されてしまって微妙にビットパターンが変わってしまうのを抑制するため、union を使って double の値を char の配列としてアクセスする方法を取るように修正しています。 [ruby-core:74496] [Bug #12209]
以前図形演算やってた時によくこの問題にあたって一部のモジュールに -ffloat-store を付けてコンパイルしたりしましたね…。

svn: r55574 2016-07-05 11:08:56 +0900

version.h の日付更新。

ngoto: r55575 2016-07-05 19:45:23 +0900

r55547 から r55557 あたりにかけての文字列の終端 NUL 文字のバイト数についての対応のリファクタリングです。 rb_str_capacity() に termlen を引数に追加した str_capacity() という関数を作って、埋め込み文字列オブジェクトに対して常に終端文字を考慮する時に TERMLEN(str) でなく引数で指定されたバイト数を使うようにしています。また rb_str_change_terminator_length() という関数を追加して、終端文字のバイト数が変化した時(エンコーディングの変換などで)にバッファを拡張したり終端文字部分を fill しなおしたりする処理を切り出しています。 [ruby-dev:49699] [Bug #12536]

hsbt: r55576 2016-07-05 20:49:39 +0900

拡張ライブラリ json を 2.0.1 に更新しています。 ChangeLog はこちら https://github.com/flori/json/blob/f679ebd0c69a94e3e70a897ac9a229f5779c2ee1/CHANGES.md RFC 7159 という新しい RFC に準拠するようになったので、 :quirks_mode というオプションはなくなった(まあでもキーワード引数ではなくて Hash のオプション引数だから指定しててもこけることはないのでそんなに影響はないか…)。 https://github.com/ruby/ruby/pull/1395 [ruby-dev:49706] [Feature #12542]

svn: r55577 2016-07-05 20:49:40 +0900

r55576 のファイルの末尾に改行を追加しています。

svn: r55578 2016-07-05 20:49:40 +0900

r55576 で新規追加されたファイルの svn property 設定。
ところで ext/json/lib/json/ext/.keep のディレクトリは必要なのかな。