ruby-trunk-changes 2021-09-12

今日はテストライブラリの移行の続きや MatchData#offset などのメソッドのエラー時の例外メッセージのエンコーディング保持などの修正がありました。

[297f9b8d4c] Shugo Maeda 2021-09-11 11:23:36 UTC

c60dbcd1c55cd77a24c41d5e1a9555622be8b2b8 の新記法は Hash リテラルだけでなくキーワード引数にも使えるので NEWS にもその旨追記しテストも追加しています。 [ruby-core:85950] [Feature #14579]

[d58e0ffc24] Hiroshi SHIBATA 2021-09-11 11:35:18 UTC

tool/lib/test/unit/testcase.rb で Test::Unit::TestCase の run_test を __send__ への alias として宣言して直後に run_test メソッドを定義して上書きするという謎なことをしていたので alias を削除しています。

[8d0315a2bb] Hiroshi SHIBATA 2021-09-11 12:05:15 UTC

tool/lib/test/unit/assertions.rb から capture_subprocess_io メソッドの定義を削除しています。

[7686776c05] Shugo Maeda 2021-09-11 13:03:10 UTC

c60dbcd1c55cd77a24c41d5e1a9555622be8b2b8 の新記法の変更で Ripper 向けの実装で var_ref() または vcall() で値を得るようにしていたのを Qnil にしておくようにしています。いいのかなーと思ったけど Ripper は評価するわけではなくて AST を得たいので値が省略されている記法だということが分かればよいので値を取り出す必要はないのでした。なるほど。 [ruby-core:85950] [Feature #14579]

[308183fffa] Nobuyoshi Nakada 2021-09-11 18:23:59 UTC

Test::Unit::Runner に Test::Unit 配下の Module 群を include していたのを prepend に変更しています。 Test::Unit::Runner#run を上書きするために prepend でないといけなかったようです。以前は MiniTest::Unit#run が呼ばれてたので include でも先に呼ばれてたけど移動したので prepend じゃないといけなくなったということみたいです。

[bbd105c445] Nobuyoshi Nakada 2021-09-11 18:51:19 UTC

テスト用のライブラリに Test::Unit::Runner#inspect メソッドを追加しています。表示方法はほぼ同じですがインスタンス変数の @option_parser は表示内容が巨大になるのでこれを表示しないようにしているようです。

[926749516e] git 2021-09-11 18:56:41 UTC

version.h の日付更新

[af5826a25e] S-H-GAMELINKS 2021-09-11 04:45:22 UTC

RB_TYPE_P() を使って T_FIXNUM 型オブジェクトかチェックしているところを FIXNUM_P() マクロを利用するようにリファクタリングしています。

[83a5e2bb5c] S-H-GAMELINKS 2021-09-11 00:56:59 UTC

RB_TYPE_P() を使って T_FLOAT 型オブジェクトか確認しているところを RB_FLOAT_TYPE_P() マクロを利用するようにリファクタリングしています。

[99d8c4832a] Nobuyoshi Nakada 2021-09-11 12:43:11 UTC

正規表現のマッチ結果のオブジェクト MatchData の MatchData#offset, #begin, #end などのグループ化した部分の情報を取得するメソッドで名前つきグルーピングを取得するために文字列を渡して対応するグループがみつからなかった時の例外メッセージ作成でエンコーディングが保持されていなかったので PRIsVALUE を使って文字列を埋め込むようにしています。 [ruby-core:105204] [Bug #18160]

[c5570a7c11] Nobuyoshi Nakada 2021-09-11 13:50:59 UTC

99d8c4832a7133ca52578d015e3ddcfd94820f4a の続きで MatchData#offset で対応するグループの通し番号を得た後で範囲内の整数かチェックしている部分を backref_number_check() という関数に切り出すリファクタリング[ruby-core:105204] [Bug #18160]

[e802587433] Nobuyoshi Nakada 2021-09-12 05:05:52 UTC

rubyspec の C API テスト用拡張ライブラリで string_spec_rb_vsprintf_worker() と call_rb_str_vcatf() という関数の宣言に PRINTF_ARGS() マクロを利用して printf タイプの引数のチェックが有効になるようにしています。

[11fd3fec53] Nobuyoshi Nakada 2021-08-23 00:57:02 UTC

benchmark/ 配下に Time.new や Time.parse のベンチマークを追加しています。