今日は警告の挙動をカスタマイズする Warning.warn メソッドにキーワード引数として category を渡すようにする変更や Range の max, minmax などの変更の revert などがありました。
tool/sync_default_gems.rb で bundler の同期時に man/ 配下のファイルを Dir.glob で展開するようにしています。 FileUtils.rm_rf にワイルドカードつきのパスを渡していましたが自動で展開されないので事前に Dir.glob しておくように修正しています。
gc.c のデバッグ用出力や rb_bug() でのフォーマット文字列での指示子に PRIdSIZE などのマクロを適切に使うようにしたり引数に明示的キャストを追加したりしています。
gc.c の gc_marks_step() の引数の型を int -> size_t に変更しています。
Range#max の rdoc 用コメントに begin と end が逆順になってる時や終端を含まない Range の時の挙動についての説明やサンプルを追記しています。
警告のフィルタリングなどを行なえるコールバックメソッドを定義する Warning.warn メソッドのデフォルトの実装に追加のキーワード引数を受け付けるようにして、警告出力時にこのメソッドを呼び出す際に category キーワード引数で警告のカテゴリ(あれば)を Symbol で渡すようにしています。過去に再定義した Warning.warn はキーワード引数を受付けないように定義されてるかもしれないので、呼び出す時に arity をチェックして 1じゃない時だけ渡すようにしています。将来の拡張のために再定義の時も category を直接受け取るように書く(だけ)ではなくて keyword rest 引数として受け取るようにしたほうが良いですね、というのがどこかに書かれてたほうが良さそうですね。 https://github.com/ruby/ruby/pull/3418 [ruby-core:99582] [Feature #17122]
vm_trace() の引数 pc を削除しています。 pc は他の引数 reg_cfp から取得できるので不要なので。
gc.c の gc_verify_internal_consistency() で WB-unprotected なオブジェクト(RGenGC の世代管理の対象にならないオブジェクト)の数のチェックが異常だった時の rb_bug() のメッセージが間違ってたのを修正しています。
parse.y の式埋め込みをもつ文字列リテラルのノードを作成する処理を new_dstr() という関数に切り出して再利用するリファクタリング。