ruby-trunk-changes r57170 - r57183

Ruby 2.4.0 がリリースされました。 https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/
そしてさっそく trunk は 2.5.0 に突入しました。
数日前から調査されていた time.c の不具合修正や Integer#fdiv の僅かな精度の調整などがありました。

nobu: r57170 2016-12-24 20:56:12 +0900

time.c のデバッグ用の関数 value_insane_p() で RBASIC_CLASS() の結果のチェックで & を追加しています。 & 追加して 0 になることってあるのかな…。

nobu: r57171 2016-12-24 21:19:23 +0900

r57142 以降 time.c に追加してきた value_insane_p() などのデバッグ調査用のコードを削除しています。

nobu: r57172 2016-12-24 21:21:52 +0900

time.c の usec2subsecx() の戻り値の型を long から VALUE に変更しています。これが SEGV の原因だったのかな。 [ruby-dev:49912] [Bug #13066]

nobu: r57173 2016-12-24 22:19:50 +0900

compile.c の method_for_self() 第4引数の関数ポインタの型の引数のところに const を追加しています。 for VC6 とあるので警告除去かビルドエラー対策かと。

nobu: r57174 2016-12-24 22:21:30 +0900

hash.c の prime1, prime2 という変数の初期化子に ULL をつけたリテラルを書いていたところを 32bit ずつのリテラルにシフト演算とビット演算で合成するように書きかえています。 VC6 で整数リテラルの LL の suffix がサポートされていないためとのこと。まじか…。

nobu: r57175 2016-12-24 22:22:53 +0900

regint.h で sprintf_s(), strcat_s() などの secure version (_s の suffix がついている)の文字列関係関数を利用する時の Windows 版の条件に RUBY_MSVCRT_VERSION の範囲での判定を追加しています。古い VC でこれらの関数がサポートされていなかったようです。

nobu: r57176 2016-12-25 14:58:24 +0900

.gdbinit で gdb の rp コマンドで T_STRUCT と T_BIGNUM 型のオブジェクトの表示を強化しています。

svn: r57177 2016-12-25 14:58:25 +0900

version.h の日付更新。

nobu: r57178 2016-12-25 17:42:28 +0900

bignum.c で DBL_BIGDIG という定数をマクロで定義していたのを enum 化しています。

nobu: r57179 2016-12-25 17:47:22 +0900

a.fdiv(b) と Rational(a, b).to_f がたまにごく僅かに異なる値になることがあるので bignum.c の big_fdiv() で調整を追加しています。 [ruby-dev:49915]

nobu: r57180 2016-12-25 23:32:29 +0900

テスト用の拡張ライブラリ ext/-test-/memory_status/memory_status.c が OS X の Lion 以前でビルドエラーになるということで MACH_TASK_BASIC_INFO の有無を調べてなかったらかわりに TASK_BASIC_INFO というマクロのほうを使うように修正しています。

matz: r57181 2016-12-26 01:35:51 +0900

恒例の matz による RUBY_VERSION を更新するコミットです。2.5.0 の開発が開始されました。

svn: r57182 2016-12-26 01:35:52 +0900

version.h の日付更新。

matz: r57183 2016-12-26 01:53:00 +0900

include/ruby/version.h の RUBY_API_VERSION_MINOR も更新され、 API Version が 2.5.0 になりました。拡張ライブラリはインストールしなおしです。