ruby-trunk-changes 2022-11-13

今日は主に bigdecimalリファクタリングがありました。

[0d5248673d] Kenta Murata 2022-11-13 01:09:16 UTC

拡張ライブラリ bigdecimalBigDecimal_double_fig() という関数を inline 関数に変更しています。

[977aac057f] Kenta Murata 2022-11-13 01:11:27 UTC

同じく拡張ライブラリ bigdecimal の GetVpValue() という関数も inline 関数に変更しています。

[b89769b978] Kenta Murata 2022-11-13 01:13:54 UTC

拡張ライブラリ bigdecimalBigDecimal#n_significant_digits の rdoc 用コメントのサンプルで呼び出すメソッド名が scale や precision に間違えられてたのを修正しています。

[74c6e6e565] Kenta Murata 2022-11-13 01:50:33 UTC

拡張ライブラリ bigdecimal の check_rounding_mode() という関数で丸めモードの Symbol から内部の定数への変換を if 分でやってたのを配列の線形探索に置き換えています。

[ef1c6109b1] Kenta Murata 2022-11-13 02:01:09 UTC

同じく拡張ライブラリ bigdecimal の check_rounding_mode() という関数で不正な丸めモードの Symbol や String が指定された時の処理の不要な分岐を削除しています。

[2703410289] Kenta Murata 2022-11-13 02:46:00 UTC

拡張ライブラリ bigdecimal の GetPrecisionInt() という関数を check_int_precision() と改名して VALUE の幅に応じて整数オブジェクトの変換に NUM2LONG() や NUM2LL() など適切なマクロを利用するようにしています。

[bbb9f72353] Kenta Murata 2022-11-13 03:46:22 UTC

拡張ライブラリ bigdecimal の VpMemAlloc() や VpFree() といったメモリ管理用の独特の名称の関数群を rbd_allocate_struct()/rbd_free_struct() のように改名し、inline 関数として定義するようにしています。

[d1f55dea86] Kenta Murata 2022-11-13 04:26:50 UTC

VpAlloc() という Real 構造体を確保する関数で変数の使いまわしをやめたり処理の順序を変更するなどのリファクタリング

[c0735d1d72] Takashi Kokubun 2022-11-13 05:55:00 UTC

rubyspec の bigdecimal の丸めモードについてのテストが 74c6e6e565aad4cbf2e5b7a13c21e78361808404 および ef1c6109b12b78926b7cb31cd8b0d27b629a35c4 による例外メッセージの変化で失敗するようになっていたので追随させる変更をしています。

[019f53de5c] Kenta Murata 2022-11-13 05:59:21 UTC

拡張ライブラリ bigdecimalBIGDECIMAL_DEBUG というマクロが定義されている時だけ定義されていた VPrint() という関数を常に定義するようにしています。デバッガからの利用のためかな?

[802dce4acd] Kenta Murata 2022-11-13 05:59:55 UTC

拡張ライブラリ bigdecimal で 0.0 や 1.0 などの特別な数値のオブジェクトを生成する専用の関数を導入しています。

[18fa7059e8] Takashi Kokubun 2022-11-13 06:15:31 UTC

c0735d1d72aeeed777a233831c6a5208edadc2dc における rubyspec の拡張ライブラリ bigdecimal のテストの追随が全バージョンで同じ変更になってたため古い ruby では逆に失敗してしまう状態だったので ruby_version_is による guard を追加しています。

[66529eef88] Nobuyoshi Nakada 2022-11-11 23:48:43 UTC

defs/gmake.mk にソースツリーが git リポジトリで現在のコミットが revision.h に埋め込まれているものと違ったら revision.h を再生成するためのルールを追加しています。

[70c9d5b504] Nobuyoshi Nakada 2022-11-13 09:05:11 UTC

各種 tool/ のツール群から使う出力の色付けをするユーティリティ tool/lib/output.rb の Output#write で上書きが指定された時に書き込むファイルを VPath によるファイルパス解決をした後のものを可能なら使うようにしています。一瞬上書きの時も内容の変更がないかチェックしてるようにみえましたが後置 if で @ifchange が真の時だけチェックするように条件部が変更されているので実は overwrite 時には常に else 節に行くようになってました。