ruby-trunk-changes 2023-12-02

今日は irb の組み込みコマンド history の追加や GC まわりの不具合修正、式の埋め込みのある正規表現リテラルでの named capture でローカル変数への代入をしないようにする変更などがありました。

[43ef0da0fb] Peter Zhu 2023-12-01 14:56:32 UTC

Object Shapes の赤黒木の実装にさらにデバッグのための RUBY_ASSERT() による assertion を追加しています。

[6e2b10d456] Nobuyoshi Nakada 2023-12-01 12:57:28 UTC

parse.y の parser_peek_variable_name() や heredoc_identifier() の戻り値を受け取る変数の型を int から適切な enum 型に変更しています。

[add0ab07e8] Nobuyoshi Nakada 2023-12-01 13:16:10 UTC

parse.y に end_with_newline_p() という関数を切り出すリファクタリング。ついでに文字列が空文字列の時の対応も追加しています。

[e5e1f9813e] Nobuyoshi Nakada 2023-12-01 13:58:20 UTC

parse.y で ripper のネストしたヒアドキュメント(ヒアドキュメント内に式の埋め込みでヒアドキュメントが書かれている)への対応を修正しています。 [ruby-core:114381] [Bug #19838]

[079dfa1812] Eric Mueller 2023-11-30 02:51:55 UTC

bundler で deprecated の警告メッセージを出す major_deprecation というメソッドに removed_message というキーワード引数を追加して警告に出すメッセージとは別に例外のメッセージを指定できるようにしています。

[73440e1ef2] Eric Mueller 2023-11-30 03:40:10 UTC

079dfa1812e0f23a74c86e271245504b069b4c17 で bundler の major_deprecation メソッドに追加した removed_message 引数を利用するようにしています。

[ef466ac931] hogelog 2023-12-01 18:03:58 UTC

irb のヒストリの保存時に String#scrub を呼んで不正なバイト列を削るようにしています。 https://github.com/ruby/irb/pull/795

[a607d62d8c] Nobuyoshi Nakada 2023-12-01 17:29:36 UTC

正規表現リテラル内に #{} による式の埋め込みがある時には named capture によるローカル変数への代入はしないようにしているようです。なるほどーそんな制限があるのか。 [ruby-core:115563] [Bug #20033]

[0ed55bf097] Samuel Giddins 2023-11-27 22:06:27 UTC

bundler で処理中の一時オブジェクト生成を抑制するようにするリファクタリング

[80ea7fbad8] Peter Zhu 2023-11-30 19:47:09 UTC

GC の mark 処理でバッファを共有している String オブジェクトでなおかつ slot への埋め込みが行なわれているものは pin-down して compaction で移動しないようにしています。埋め込まれていると slot 移動するとバッファ自体も移動してしまうため。

[ee0eca191f] Peter Zhu 2023-11-30 19:48:26 UTC

String#undump の実装で実行中に確保したオブジェクトに mark 漏れの可能性があったようなので RB_GC_GUARD() で保護を追加しています。

[b77551adee] Peter Zhu 2023-12-01 20:21:01 UTC

gc.c の gc_update_object_references() 内の未使用になってたローカル変数を削除しています。

[0aed37b973] Peter Zhu 2023-11-30 15:51:51 UTC

VM 命令の expandarray の実装で関数 vm_expandarray() にスタックポインタだけ渡してたのを struct rb_control_frame_struct を渡して cfp->sp を直接利用するようにしています。これまでは vm_expandarray() の内部のローカル変数 base でスタックポインタの伸張を管理していてそのあいだに GC が発生すると積んでいたオブジェクトの mark 漏れが発生する可能性があったため。

[6ecc1ca9b1] Ryan Davis 2023-12-01 22:51:08 UTC

ARGF.readlines、ARGF.to_a の rdoc 用コメントの call-seq にキーワード引数 chomp についての記述を追加しています。

[9f6c6f88c3] yui-knk 2023-12-01 09:02:56 UTC

同梱している Lrama のバージョンを v0.5.11 に更新しています。

[4ee1f0fb5d] Gary Tou 2023-12-02 04:32:00 UTC

irb に組み込みコマンド history を追加しています。そういえば今までなかったのか。 https://github.com/ruby/irb/pull/761