ruby-trunk-changes 2023-05-24

今日は Hash.new のキーワード引数が渡されると deprecated 警告を出すようにする変更や最近の変更で Hash#replace が異常終了する可能性があった不具合の修正などがありました。

[31ac8efca8] Jean byroot Boussier 2023-05-23 13:51:28 UTC

Hash.new に Hash オブジェクトとしてでなくキーワード引数を渡して呼び出した時に警告を出力するようにしています。チケットをみると同期としては Hash の作成時にあらかじめ要素数の指定をして内部的なテーブルやバッファを確保した状態で(あるいは Variable Width Allocation で適した slot サイズの heap を使うように)指定したいけど、そのためには現在 Hash.new(a: 42) と書くと Hash.new({a: 42}) 相当として扱われているためにキーワード引数が渡せないという問題があるので、まずこれを禁止したいということみたいです。キーワード引数分離が Hash.new では互換性のために Hash として扱う挙動が残ってたわけですね。なるほどなぁ。 https://github.com/ruby/ruby/pull/7828 [ruby-core:111306] [Feature #19236]

[24a6609ccb] Peter Zhu 2023-05-23 15:11:05 UTC

hash.c の ar_copy() 内の不要な分岐を削除。

[92d6c9a7b1] TSUYUSATO Kitsune 2023-05-23 16:16:32 UTC

irb の組み込みコマンド show_source で private なメソッドにも対応するようにしています。 https://github.com/ruby/irb/pull/577

[e854b050cc] Jenny Shen 2023-05-16 18:26:03 UTC

rubygems の config ファイル(YAML)の処理でキーの URL を特別扱いする処理で余分な空白が含まれてチェックがうまく働いてなかったのを修正しています。

[061e01ee50] Jenny Shen 2023-05-16 18:27:35 UTC

rubygems の config ファイルの処理のキーの URL 処理で末尾の "/" を無視するようにしています。

[a86f798fc2] Peter Zhu 2023-05-23 17:45:44 UTC

Hash#replace で内部実装が ar (配列による実装)の Hash で st_table による Hash を上書きしようとした時に異常終了するようになってしまっていたので修正しています。おそらく 5199f2aaf9527c97e6ec371e19748d0c2ac7a70e0938964ba1af3924cf969fb809fc3598892bc20d のあたりで Hash の Variable Width Allocation 対応のために ar_table/st_table の実装の変更をした影響で要素数が多い Hash でも ar_table 実装になるケースが出てきて従来は想定していなかった st_table -> ar_table という replace のパターンが生じていたのに対応してなかったということだと思われます。

[9592bc7039] Peter Zhu 2023-05-23 18:11:54 UTC

a86f798fc2e979ea83ec55744f906b2a816c8681 の影響?で rb_hash_replace() で不要になった分岐を削除しています。

[28056a6d16] Samuel Williams 2023-05-24 00:15:20 UTC

win32/win32.c に Windows 環境でも pread(3)/pwrite(3) の代替実装を提供するようにしています。 https://github.com/ruby/ruby/pull/7827

[12dfd9d1c9] Ufuk Kayserilioglu 2021-10-25 12:48:18 UTC

拡張ライブラリ json で String クラスを拡張するためのモジュール? JSON::EXT::Generator::GeneratorMethods::String の included メソッドの実装で super を呼ぶようにしています。

[135a0d26a1] Samuel Williams 2023-05-24 01:17:35 UTC

IO::Buffer クラスの read/write/pread/pwrite メソッドで割り込みによって指定のサイズまで読み書きできなかった時のためのループを追加して、そのかわり GVL を解放して blocking region を作るようにしています。 pull request からリンクされている async の issue をみると不具合の修正も含んでいるみたいですね。 https://github.com/ruby/ruby/pull/7826

[6406ae6931] "dependabot[bot]" 2023-05-24 02:59:33 UTC

GitHub Actions の workflow で利用している dependabot/fetch-metadata アクションのバージョンを更新しています。

[a692122fcd] "dependabot[bot]" 2023-05-24 02:59:36 UTC

GitHub Actions の workflow で利用している necojackarc/auto-request-review アクションのバージョンを更新しています。

[1ea9bb8496] Nobuyoshi Nakada 2023-05-24 05:26:56 UTC

標準添付ライブラリ racc のテストファイルで末尾の改行がないものがあったので追加しています。

[d8da563f9e] Nobuyoshi Nakada 2023-05-24 06:04:07 UTC

rubyspec および YJIT の実装でもファイル末尾の改行がないものがあったので追加しています。