ruby-trunk-changes 2021-01-10

今日は拡張ライブラリ bigdecimalリファクタリングや arm64 環境向けの不具合修正などがありました。

[89f3125207] Kenta Murata 2021-01-08 12:00:45 UTC

拡張ライブラリ bigdecimal のテストに Float からの変換の assertion を追加しています。

[fb18a8113a] Kenta Murata 2021-01-09 06:10:20 UTC

拡張ライブラリ bigdecimal の GetVpValueWithPrec() から変換元が Float の時の処理を rb_float_convert_to_BigDecimal() に委譲するようにして一部の処理は rb_float_convert_to_BigDecimal() のほうに移植するようにリファクタリング? しています。元は逆に rb_float_convert_to_BigDecimal() から GetVpValueWithPrec() を呼んでました。

[be34e31d8e] Kenta Murata 2021-01-09 06:19:52 UTC

拡張ライブラリ bigdecimal の rb_float_convert_to_BigDecimal() と rb_rational_convert_to_BigDecimal() に引数のオブジェクト型についてのチェックをする assert(3) を追加しています。

[3d9c95996d] Kenta Murata 2021-01-09 06:28:08 UTC

fb18a8113a549185938e3cf12b3494547d077558 と同様に拡張ライブラリ bigdecimal で T_RATIONAL なオブジェクトからの BigDecimal への変換処理で GetVpValueWithPrec() から rb_rational_convert_to_BigDecimal() を呼ぶ(元は反対でした)ようにリファクタリングしています。

[161a20df28] David CARLIER 2021-01-09 11:38:54 UTC

gc.c の arm64 環境での tick() 関数でのインラインアセンブラの余計なカンマが入ってたのを修正しています。

[590dc06e38] Nobuyoshi Nakada 2021-01-08 10:07:16 UTC

テスト用の拡張ライブラリを作る ext/-test-/ 配下のコードで、組み込みクラスに直接メソッドを増やすようにしていたものは他のテストへの影響も考えてテスト用のクラスのクラスメソッドとして定義するようにしています。

[72d504c1fd] Kenta Murata 2021-01-09 23:29:53 UTC

拡張ライブラリ bigdecimal の GetVpValueWithPrec() の一部のローカル変数を関数全体で宣言してたのを必要な部分のブロックでのみ宣言するようにリファクタリングしています。

[8b53cbaf5e] Kenta Murata 2021-01-09 23:31:20 UTC

拡張ライブラリ bigdecimalfb18a8113a549185938e3cf12b3494547d0775583d9c95996dfc8e1d6bc263509273f13caaf06f77 の変更で GetVpValueWithPrec() で負の精度が指定された時にそのまま rb_float_convert_to_BigDecimal() や rb_rational_convert_to_BigDecimal() に渡してしまっていたので不正な値を渡してしまっていたので負の時は SIZE_MAX を渡すように修正しています。

[2e9b6096a6] Kenta Murata 2021-01-09 23:37:35 UTC

拡張ライブラリ bigdecimal8b53cbaf5e7f1a0a7eef905c449981d8895f9711 の修正で size_t 型変数への代入に long へのキャストを書いてたのを修正しています。

[01aa036023] git 2021-01-09 23:45:43 UTC

version.h の日付更新

[63abb5c227] Nobuyoshi Nakada 2021-01-10 06:46:23 UTC

missing/dtoa.c のいくつかの細かな修正。まず strtod() で使われてる hexdigit が未定義の時の代替の定義で変数名が hexdigits と typo していたのを修正。また int や long の bit 幅の判定に SIZEOF_INT や SIZEOF_LONG を利用していたのを INT_MAX や LONG_MAX のビット演算で直接(?)判定するようにしています。それから一部のマクロを未定義の時の代替宣言を追加。また xmalloc()/xfree() を直接呼び出していたのを MALLOC/FREE マクロを利用するようにしています。なんだっけこれ。

[34d02631e7] Nobuyoshi Nakada 2021-01-10 07:32:47 UTC

missing/dtoa.c の pow5mult() 内のテーブル的に使う static 変数 p05 に const 修飾子を付加しています。

[2adbf01ae1] Nobuyoshi Nakada 2021-01-10 08:36:18 UTC

missing/dtoa.c で Bigint の linked list の操作や static 変数 p5s の更新を ATOMIC_PTR_CAS() を利用するようにして MT safe にしています。とはいえ list のほうは SEGV などしないようにしているということで実際に同じ list を別のスレッドから同時に触るようなことはなさそう。