ruby-trunk-changes 2021-07-16

今日は rubygems と bundler の更新や Ractor 利用時のメモリリーク修正、Integer.try_convert メソッドの新規追加などがありました。

[33bea3bdff] Nobuyoshi Nakada 2021-07-15 12:30:15 UTC

1a637544166eca6b917fb6f32baeb771f4914b7a の Struct が生成したクラスのクラスメソッド keyword_init? で Struct.new に明示的に keyword_init キーワード引数に ture/false 以外のオブジェクトが渡されてた場合に対応するように? しています。 [ruby-core:104410] [Feature #18008]

[3e7a7fb28a] Nobuyoshi Nakada 2021-07-15 12:33:39 UTC

1a637544166eca6b917fb6f32baeb771f4914b7a で追加した Struct で生成したクラスの keyword_init? メソッドは keyword_init キーワード引数が指定されずに生成された場合は nil を返すようにしています。 [ruby-core:104410] [Feature #18008]

[119697f61e] Peter Zhu 2021-06-29 18:32:28 UTC

rb_gc_force_recycle() で mark フラグを記録している bitmap のクリアする条件が判定していたのを修正しています。 [ruby-core:104443] [Bug #18014]

[4a627dbdfd] Peter Zhu 2021-06-29 18:32:50 UTC

Ractor 利用時にパフォーマンスのために追加さえた Ractor ごとに管理されているオブジェクトの slot が返却されなくて再利用できずメモリリークしていたのを修正しています。 [ruby-core:104443] [Bug #18014]

[e5fe48646c] Peter Zhu 2021-06-29 18:32:54 UTC

4a627dbdfd1165022fa9e716ba845e937b03773d の続きで gc_page_sweep() に struct heap_page::free_slots と freelist の要素数が一致していることを確認するチェックを RGENGC_CHECK_MODE が真の時に実行するようにしています。 [ruby-core:104443] [Bug #18014]

[feec80a362] git 2021-07-15 15:49:08 UTC

version.h の日付更新

[456d0019dd] aycabta 2021-07-14 07:27:17 UTC

irb のテストで出力のチェック用の正規表現で空白を \s で表現するようにしています。

[f1035248af] aycabta 2021-07-15 14:42:11 UTC

irb のテストで irb_info コマンドで Windows 版の時 code page (chcp コマンドの出力)も出力するようにしています。

[fa87f72e1e] Jeremy Evans 2021-05-13 22:31:46 UTC

pattern match の文法の式の値を埋め込む "^" の後にグローバル変数インスタンス変数、クラス変数が書けなくなってたのを書けるように文法を拡張しています。 [ruby-core:102851] [Feature #17724]

[95f8ffa5f6] Jeremy Evans 2021-07-15 17:04:17 UTC

Hash のメソッド群 except, merge, reject, select, slice, transform_values など新しい Hash オブジェクトを返すものが compare_by_identity でキーの同一性で比較するようにした Hash に対しても通常の Hash を返してしまっていたので、receiver の compare_by_identity のフラグを保持した Hash を返すようにしています。 [ruby-core:103071] [Bug #17757]

[25689024cf] Nobuyoshi Nakada 2021-07-16 02:23:36 UTC

fa87f72e1e84e2b55516be188f00434a683b924c の pattern match の文法拡張についての NEWS の記述でサンプルコードがコードとして表示されるようにマークアップを追加しています。 [ruby-core:102851] [Feature #17724]

[55a79b648c] Hiroshi SHIBATA 2021-07-16 04:50:15 UTC

lib/ruby2_keywords.gemspec のバージョンを 0.0.5 に変更しています。3.1 の添付のバージョンが 1.0.0 以降になってしまうとまずいみたいなので巻き戻しています。

[6073a8bdc0] Samuel Williams 2021-07-16 03:43:57 UTC

rb_funcallv() および rb_funcallv_kw() に VM_ASSERT() で現在の Thread が GVL を確保していることを確認するようにしています。拡張ライブラリでうっかり GVL 解放中に ruby の呼び出しがありえる API を呼んだりするとありえるか。

[29ed9d1aaa] Nobuyoshi Nakada 2021-07-15 12:08:57 UTC

標準添付ライブラリ error_highlight のテストで一時ファイルの閉じ忘れがあったのを修正しています。

[bbaebbf529] Jared Beck 2021-07-08 15:27:50 UTC

rubygems の Gem::Uninstaller で default gem の削除時に特別なメッセージを出力するようにしています。

[227c2deff4] David Rodríguez 2021-07-12 08:30:16 UTC

bundler の依存関係解決時に gemspec の development_dependency と Gemfile に書かれた依存関係が重複してた時の処理に問題があったようで修正していますがよくわからない。

[44ba77d16d] Andre Arko 2021-07-13 09:25:21 UTC

bundler の生成するリポジトリでの Gemfile.lock ファイルの PLATFORM に arm64-darwin-20 を追加しています。 M1 Mac での対応ですかね。

[5cce96891e] Andre Arko 2021-07-13 09:12:00 UTC

bundler のテストの :focused というタグがついてた spec のひとつからタグを外しています。

[a3d2200b2a] Andre Arko 2021-07-13 09:25:09 UTC

bundler の plugin ロード時に名前が空だったら無視するようにしています。

[c5f78ade5a] Andre Arko 2021-07-13 09:13:48 UTC

bundler の plugin 管理のサブコマンドで bundle plugin uninstall 時のフックを呼ぶ機能が動いていなかったのを修正しているようです。

[71d3c9bbfa] David Rodríguez 2021-07-13 11:00:02 UTC

bundler の bundle plugin install --help で bundle install のヘルプメッセージが表示されてしまっていたのを修正。

[650a65c6fc] Masafumi Koba 2021-07-15 11:25:12 UTC

rubygems で FileUtils 利用時に require "fileutils" するようにしています。

[eee709595c] Yusuke Endoh 2021-06-17 02:34:20 UTC

IO.read、IO.foreach、IO.binread、IO.write、IO.binwrite などのメソッドの rdoc 用コメントの call-seq に File を receiver として呼ぶ形式も追加して、パイプが使えるのは IO を receiver として呼んだ場合と明記しています。そういう実装なんでしたっけ。File 以外の IO を継承したクラスでもパイプは無効なんだっけ。

[301d194ee3] Nobuyoshi Nakada 2018-10-07 04:02:46 UTC

Integer.try_convert メソッドを追加しています。今までなかったんだっけ。 to_int による変換が可能なら変換して、なかったら nil を返します。 [ruby-core:89301] [Feature #15211]

[fd0df9c4fb] Benoit Daloze 2021-07-06 16:52:29 UTC

C API rb_iterate() を DEPRECATED_BY() つきで宣言して利用時に警告が出るようにしています。 [ruby-core:104520] [Misc #18025]