ruby-trunk-changes 2021-12-03

今日は標準添付ライブラリ reline、irb の更新、bundler の主にリファクタリングの更新、ObjectSpace.trace_object_allocations の不具合修正のほか Object#instance_eval, #instance_exec の特異クラス生成についての仕様変更がありました。

[60fc8dda64] Nobuyoshi Nakada 2021-12-02 12:13:02 UTC

tool/update-bundled_gems.rb で gems/bundled_gems の更新の必要をチェックする時の条件に間違いがあったのを修正しています。

[3f1dcd7fff] Nobuyoshi Nakada 2021-12-02 13:21:20 UTC

GitHub Actions の設定全般に actions/cache@v2 という step を利用して src/.downloaded-cache をキャッシュしてジョブ間で使いまわすようにしているようです。

[697d7b8d62] ima1zumi 2021-11-09 14:22:12 UTC

標準添付ライブラリ reline の Reline::ANSI でキーバインディングを決める時に Reline::Terminfo.tigetstr で端末の情報を取得してそれを元に設定することで対応していないバインディングが作られないようにしているようです。

[ca33b59099] ima1zumi 2021-11-24 10:24:51 UTC

697d7b8d629ae20c42611ac697bb7e763a7e7213 の reline の変更で rescue する例外を TerminfoError で参照していたのを Reline::Terminfo::TerminfoError とフルパスで参照するようにしています。

[f7bdfb39ef] Matt Valentine-House 2021-12-01 21:29:22 UTC

GC.compact の後に定数の constant cache をクリアしていたのをやめています。昔は必要だったのかもしれないけど参照を更新できているはずなので不要だからとのこと。

[0b22e3e1df] git 2021-12-02 15:14:38 UTC

version.h の日付更新

[4d4716d939] ima1zumi 2021-11-17 14:10:45 UTC

標準添付ライブラリ reline の Reline::ANSI.move_cursor_up, .move_cursor_down の実装で引数の符号をチェックする if が冗長だったので後置 if のほうを削除しています。

[dcbe29d2ae] manga_osyo 2021-11-23 14:07:02 UTC

irb の RubyLex.ripper_lex_without_warning で Ripper::Lexer#parse から返ってきた token の pos.first が 0 のものを削るようにしています。ruby 2.6 で使った時に期待したのと異なる tokens が返ってくるので無限ループに陥いってしまうのでそれを避けるためとのこと。

[d486286f1d] ima1zumi 2021-11-29 12:59:12 UTC

標準添付ライブラリ irb のドキュメント表示用ダイアログの独自のキーバインドに convert-meta が無効になっている時の Alt+d の対応のためのキーコードを追加しています。

[6b64e78823] Kaíque Kandy Koga 2021-10-25 21:32:40 UTC

irb の RubyLex で予約語 in のインデントへの影響を計算する時に case 文の中に書かれているかどうかをチェックするようにしています。

[fbc1615761] Adam Hess 2021-12-02 17:01:42 UTC

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

[9f0c6f20c5] Peter Zhu 2021-12-02 16:16:53 UTC

GC.auto_compact が true の時に ObjectSpace.trace_object_allocations が NULL チェック不足で SEGV することがあったのを修正しています。 [ruby-core:106399] [Bug #18382]

[1f4af99383] Josef Šimánek 2021-12-02 19:44:30 UTC

rubygems の Gem::Specification#required_ruby_version の rdoc 用コメントに使用例を追記しています。

[733500e9d0] John Hawthorn 2021-12-02 23:53:39 UTC

Object#instance_eval, #instance_exec で自動的に receiver に特異クラスが作成されていましたが、これをブロックやスクリプト内でメソッド定義が行なわれて実際に特異クラスが必要になる時点まで作らないように遅延するようにしています。なるほどー。コミットログにありますが、これにより特異クラスを持てない即値オブジェクトに対して instance_{eval,exec} が呼べなかったのが実際にメソッド定義しなければ呼べるようになるという変化もあるようです。これは良いのか悪いのかちょっと考えものですね。 https://github.com/ruby/ruby/pull/5146 [ruby-core:106193] [Misc #18354]

[433a5a0eb0] Nobuyoshi Nakada 2021-12-03 04:17:38 UTC

Time.new の rdoc 用コメントの英文法修正。

[dd6c59cdaf] git 2021-12-03 07:00:45 UTC

gems/bundled_gems の rbs のバージョンを 1.8.0 に更新しています。

[e4c7c5468e] Nobuyoshi Nakada 2021-12-03 09:35:35 UTC

Time.new のテストに year だけ渡すケースと year と month に文字列を渡すケースを追加しています。

[906b95780f] David Rodríguez 2021-11-17 08:19:03 UTC

bundler の lib/bundler/definition.rb の不要な nil チェックを削除しています。

[901a257533] David Rodríguez 2021-11-17 11:01:55 UTC

同じく bundler の lib/bundler/definition.rb の if 文を後置 if に変更するリファクタリング

[d19c266b49] David Rodríguez 2021-11-17 11:02:24 UTC

同じく bundler の lib/bundler/definition.rb でインスタンス変数を直接参照するかわりに locked_dependencies メソッドを利用するリファクタリング

[ca65f7bb8a] David Rodríguez 2021-11-17 11:58:07 UTC

bundler の locked_dependencies で不要な条件分岐を削除。

[aa87780f8f] David Rodríguez 2021-11-17 13:21:48 UTC

bundler の依存関係解決時のエラーメッセージの修正。

[7d974cc56f] David Rodríguez 2021-11-17 13:09:50 UTC

bundler の Bundler::Definition#converge_dependencies で最初に source を書き換える依存関係に locked_dependencies も追加していたのをやめています。正しくエラーにするため? みたいです。なのでたぶん挙動の変化を含んだ変更だと思われます。

[248fae0ec4] David Rodríguez 2021-11-11 22:58:40 UTC

bundler の Bundler::Source::Rubygems の to_s メソッドを identifier メソッドに、to_err を to_s に改名しています。

[4c5e862434] David Rodríguez 2021-11-17 14:14:30 UTC

bundler の Bundler::Definition#ensure_equivalent_gemfile_and_lockfile で lockfile の同一性チェックの実装をシンプルにリファクタリング(?) しています。

[0073f624f0] David Rodríguez 2021-11-17 14:26:06 UTC

bundler の Bundler::Definition#converge_dependencies で @dependencies.each を不要に2度読んでいたのを 1回にしてブロックをまとめています。

[324d57df0b] Jean Boussier 2021-12-03 09:17:21 UTC

Class#subclasses を名前のない Class が GC で回収された時に呼ぶテストで作る無名クラスの数を 1桁減らしています。