ruby-trunk-changes 2022-02-25

今日は主に拡張ライブラリ date の埋め込まれている正規表現の修正や効率化、Date._parse などに Symbol を渡した時に deprecated warning を出力するようにする変更などがありました。

[9bd4b2ab14] Peter Zhu 2022-02-22 21:40:32 UTC

version.h から include/ruby/internal/abi.h を #include して RUBY_LIB_VERSION の末尾に RUBY_ABI_VERSION も含めるようにしています。そのかわり tool/mkconfig.rb で RbConfig に ruby_abi_version を追加している処理を削っています。しかしこれ非互換にならないのかな。

[97001638d9] Peter Zhu 2022-02-24 16:20:40 UTC

Windows 版でも 9bd4b2ab14eea3df392f4531887fcc1c59291d02 と同様に RUBY_ABI_VERSION を RUBY_VERSION_NAME に追加するようにしています。

[92d553b7c9] git 2022-02-24 18:32:11 UTC

version.h の日付更新

[8b3b113d84] eileencodes 2022-02-24 17:57:57 UTC

yjit_codegen.c のコメントの typo 修正。

[fc7e42a473] Adrien S 2022-02-24 19:12:17 UTC

doc/yjit/yjit.md のリンクが github.com/Shopify/yjit へのリンクになってたので文書内のリンクに修正しています。 https://github.com/ruby/ruby/pull/5596

[c19a631c99] Burdette Lamar 2022-02-24 20:10:49 UTC

doc/encoding.rdoc に Symbol や Regexp オブジェクトの Encoding についてや Locale Encoding, Script Encoding などの概念についての説明を追加しています。 https://github.com/ruby/ruby/pull/5578

[9f59a2bd87] Nobuyoshi Nakada 2021-07-08 21:19:03 UTC

拡張ライブラリ date のソーコード内に埋め込んでいる時刻の parse 用の正規表現の "|" の選択内の共通部分を括り出すリファクタリング

[c8cddac45c] Nobuyoshi Nakada 2021-07-08 21:35:58 UTC

拡張ライブラリ date の時刻を parse するための正規表現で空白を読み飛ばす部分の \s* のあとに + を追加しています。 backtrack を抑制して効率を良くするためだそうですが、/a*+/ っていうパターンはどういう意味になるんだっけ?

[d54a3df2e5] Nobuyoshi Nakada 2021-07-08 21:41:29 UTC

同じく拡張ライブラリ date の era の parse に使う正規表現に \b による文字境界のマッチや否定先読みを追加して前後の文字が繋がってないことを指定するように修正しています。

[1758eade57] Nobuyoshi Nakada 2021-07-08 22:21:27 UTC

同じく拡張ライブラリ date の時刻などの parse のための正規表現で数字のところに否定後読みを追加してかならず数字の先頭からマッチさせるように修正しています。テストが追加されてるけどこれって結果は変わるのかな。それとも効率化のためかな。

[b5c2a0840f] Nobuyoshi Nakada 2021-07-08 22:21:27 UTC

拡張ライブラリ date で 1758eade579c91f9ad000943994fccf30c7bf8a0 で導入した否定後読みつきの数字の正規表現のためのマクロ NUMBER を parse_iso() でも利用するようにしています。

[4933d7fe56] Nobuyoshi Nakada 2021-11-24 09:05:12 UTC

拡張ライブラリ date の Date._parse の大きな文字列を渡す時のテストにキーワード引数 limit を渡すように修正しています。デフォルトで文字列サイズの上限がつくので limit も上げとかないとエラーになるので。

[d4f32b6b7b] Nobuyoshi Nakada 2021-11-24 09:08:42 UTC

拡張ライブラリ date の Date._parse に大きな文字列を渡す時のテストでタイムアウトをかけるのに EnvUtil.timeout を利用して環境変数によるタイムアウト値のスケーリングに対応するようにしています。

[bb22bc76b0] Nobuyoshi Nakada 2022-02-25 04:39:39 UTC

拡張ライブラリ date の Data._parse などに Symbol を渡しても文字列化してから parse するという機能があったので deprecated warning を出すようにしています。知らなかった。というか必要性あるのかな。

[0db5ee5195] Nobuyoshi Nakada 2022-02-25 08:56:37 UTC

拡張ライブラリ date でブロックの途中で変数宣言をしているところがあったのでブロック先頭で変数宣言するように移動しています。 ruby 本体はもう C99 になってブロック途中の宣言ができるようになったという認識ですが date は default gems なので古い ruby 向けのビルド時の対応のためかな?

[8780f15fd7] Nobuyoshi Nakada 2022-02-25 11:34:59 UTC

拡張ライブラリ date の bb22bc76b08b8281d888424522790e0227ea09a4 で Symbol を parse した時の警告をチェックするテストで assert_deprecated_warn という assertion を使うようにしています。 deprecated warning はデフォルトでは表示されないからですね。