ruby-trunk-changes 2022-12-18

今日は主に Hash#default の実装の変更や拡張ライブラリ date の文字列からの parse の変更などがありました。

[965f4259db] Peter Zhu 2022-12-17 14:13:46 UTC

2ccf6e539458ef5c9f7a2d68163089d1d38e47f7 で objspace_malloc_fixup() に objspace_xmalloc0() と objspace_xcalloc() に追加していた GC 中に呼ばれた時の警告と rb_bug() 呼び出しを objspace_xmalloc0() と objspace_xcalloc() に移動しています。

[6e3bc67103] Peter Zhu 2022-12-17 14:18:54 UTC

2ccf6e539458ef5c9f7a2d68163089d1d38e47f7GC 中のメモリ確保関数の呼び出しを警告に留める変更で RGENGC_CHECK_MODE が真に定義されている時には rb_bug() も呼び出すようにしていましたが RUBY_DEBUG が真に定義されていた時も rb_bug() 呼び出しするようにしています。

[632beec01f] Mau Magnaguagno 2022-12-17 21:06:50 UTC

lib/mjit/c_pointer.rb で String#unpack のかわりに unpack1 を利用するようにしています。また Enumerable#sum にブロック渡しをする呼びかたを利用するようにリファクタリングしています。 https://github.com/ruby/ruby/pull/6955

[fbaa5db44a] John Hawthorn 2022-12-15 18:46:24 UTC

Hash#default メソッドの実装でメソッドの再定義を検出するのに enum ruby_basic_operators に BOP_DEFAULT を追加して BASIC_OP_UNREDEFINED_P() を利用するようにしています。また default という Symbol の ID を組み込みで初期化するようにしています。おそらく YJIT での最適化のため。

[ea3d3c4552] John Hawthorn 2022-12-17 01:00:13 UTC

fbaa5db44a3b0622e2755fd00e0519a603aa9bcb で追加した rb_hash_default_value() で struct RBasic::flags のチェックに FL_TEST() を使っていたのを FL_TEST_RAW() を利用してオブジェクトの型のチェックを省略しています。

[6efeaabef0] Nobuyoshi Nakada 2022-10-29 15:43:54 UTC

拡張ライブラリ date で月や曜日の文字列表現(Jan, Feb とか Mon, Tue みたいな)の parse のためのテーブルで全体の名前と 3文字の省略記法両方書いていたのを全体の名前(Sunday みたいな)だけにして、3文字以上マッチしていれば良いとするようにしています。

[70c905963e] Nobuyoshi Nakada 2022-10-29 16:09:38 UTC

拡張ライブラリ date で AM/PM の文字列を判定するための変数 merid_names を削除して strncasecmp(3) を使ていたのをコードに直接比較する文字を埋め込んで if 文で判定するようにしています。

[49dc424ff3] Nobuyoshi Nakada 2022-10-29 16:10:16 UTC

同じく拡張ライブラリ date でタイムゾーンの指示子を判定するための extz_pats という変数も削除して strncmp(3) のかわりに直接 if 文で判定するようにしています。

[df49bf8150] Nobuyoshi Nakada 2022-10-29 16:11:32 UTC

拡張ライブラリ date の関数 read_digits() に読むサイズを指定する引数を追加しています。

[b8cc0992c6] Nobuyoshi Nakada 2022-12-18 02:38:07 UTC

拡張ライブラリ date の 6efeaabef05253cfce64f2d7c94be57cd7d4acd5 の変更の再修正で文字列の先頭 3文字以上にマッチしていることを判定する部分を関数に切り出しています。

[c316a5f2f1] Nobuyoshi Nakada 2022-12-18 03:03:46 UTC

拡張ライブラリ date の C の関数定義のスタイル修正。

[e7bffe0c4b] Mike Dalessio 2022-12-17 18:43:24 UTC

configure で cross compile 時に miniruby がビルドされないようになっていたのを macOS の時は特別に PREP 変数に fake.rb に加えて miniruby をセットするようにしています。拡張ライブラリのビルド時に miniruby が必要だったとのこと。Xcode 14 対応のための処理のところで使うようになったからかな? だとすると backport が必要かもしれない。 [Bug #19239]

[7e93f7ceb7] Nobuyoshi Nakada 2022-12-18 05:24:14 UTC

configure.ac の AC_CHECK_TOOL() で pkg-config の存在チェックするところで一時的に ac_tool_warned 変数を no に設定しておくようにしています。 cross compiling 時の警告抑制のためとのこと。