ruby-trunk-changes 2022-08-11

今日は Method/UnboundMethod の public?/protected?/private? メソッドを削除する変更や Symbol#to_proc で protected/private メソッドも呼べてた挙動をやめる変更などメソッドの可視性まわりの変更がありました。

[3a58009066] Yusuke Endoh 2022-08-10 12:17:04 UTC

99e7fa5b3718d61d61427c67d244ec50b9eb8578 の error_highlight の変更で ErrorHighlight.spot のキーワード引数の参照が rest kwarg の変数を上書きした後にしてしまっていたので変更前に取り出しておくよう修正しています。

[1b32a4c7bb] Yusuke Endoh 2022-08-10 12:50:48 UTC

標準添付ライブラリ error_hightlight のバージョンを 0.4.0 に更新しています。

[2ebb428fd9] git 2022-08-10 12:52:38 UTC

NEWS の default gems のバージョンリストにも error_highlight を追加しています。

[a661aac9a7] Soutaro Matsumoto 2022-08-10 14:01:49 UTC

gems/bundled_gems の rbs の commit hash の指定を更新しています。 https://github.com/ruby/ruby/pull/6228

[26bed71959] Burdette Lamar 2022-08-10 18:40:50 UTC

doc/strftime_formatting.rdoc にフォーマット文字列の padding や大文字小文字の指定などの修飾子について追記したうえ、Date の文字列化のメソッドについての記述も追加しています。 Date についてここに追加するのはなんか違うような……。 https://github.com/ruby/ruby/pull/6227

[d115a06037] git 2022-08-10 18:41:04 UTC

version.h の日付更新

[bfa6a8ddc8] Jeremy Evans 2022-08-10 20:02:19 UTC

主にブロック引数として Symbol に & をつけて渡す時に使われる Symbol#to_proc が protected/private メソッドでも呼べてしまうのを修正しているようです。うーむ、呼べて困ることってあるのかな? と思いましたがチケットの議論をみると最適化のしやすさという観点で public なものだけ呼べるとしたほうがいいという可能性があるみたいです。 rubyspec でもこの挙動に依存しちゃってたところ(テストではなくユーティリティ部分で)があったみたいで明示的にメソッドを public にしているところがあります。 [ruby-core:108882] [Bug #18826]

[ff42e2359b] Jeremy Evans 2022-06-04 01:15:56 UTC

[Feature #11689] のために UnboundMethod と Method に public?/protected?/private? メソッドを追加してた 27278150685e738f84105d09843d3ba371146c7a および 58dc8bf8f15df9a33d191074e8a5d4946a3d59d5 を revert しています。 Module#{public,protected,private} を使うと Method#owner の値が変化するとか Method/UnboundMethod の同値性の判定に狂いが生じるとかの副作用があり、Method/UnboundMethod はメソッドそのものをオブジェクト化したもので、method entry の属性である可視性をここに持たせるのは設計の誤りだったということで消すことにしたそうです。 3.1 にも backport しようと書いてあるけど、存在しているメソッドを消すというのは互換性としては受け入れがたいなぁ。ただ Method/UnboundMethod の挙動の変化のほうも問題なのでダミーのメソッド追加しとこというあたりが落としどころか。 [ruby-core:108235] [Bug #18729] [ruby-core:108378] [Bug #18751] [ruby-core:106828] [Bug #18435]

[9fc401b689] Burdette Lamar 2022-08-10 21:18:27 UTC

doc/rdoc/markup_reference.rb の記述の追加/変更、マークアップの変更など。

[74d95744bd] Nobuyoshi Nakada 2022-08-11 02:02:28 UTC

開発版であることを判定するマクロ RUBY_DEVEL が 357352af5ee37bf31ba4468ee242ea5a10158461 で自動で有効にしないように変更されたのに追加して configure 時に --enable-devel という専用のフラグを追加して明示的に有効にするようにしています。

[26054c7461] Nobuyoshi Nakada 2022-08-11 06:21:03 UTC

template/exts.mk.tmpl で make distclean, realclean で exts.mk を削除する時のパスをブロック変数に格納されているパスから切り出すようにしています。切り出し元のパスは make のターゲットなども含んだものみたいだけどそこは削っていて、だったらさらにその元である d から末尾のパーツを削ったほうが早そうだけど違うのかな。

[0c9803b0fd] Nobuyoshi Nakada 2022-08-11 08:09:17 UTC

make の依存関係解決のための timestamp ファイルの配置に使っている gems ディレクトリを .bundle ディレクトリに変更しています。

[32d1ce96e0] Nobuyoshi Nakada 2022-08-11 08:42:56 UTC

template/Makefile.in で ext/clean.sub や .bundle/clean.sub などの clean 系ターゲットのためのダミーのターゲットの依存関係に ext/clean.mk などのファイルを追加しています。

[cfb9624460] Jeremy Evans 2022-08-11 10:16:49 UTC

Array#[] に負の step を持つ Enumerator::ArithmeticSequence (Integer#step や Range#step で値が Integer の時に返されるオブジェクト)を渡した時の結果を修正しています。うーん、beginless や endless の Range から作ったものはどうなるのが正しいのかちょっとテストコードみてもこれが良いのかいまいち納得できませんでした。 https://github.com/ruby/ruby/pull/5739 [ruby-core:105607] [Bug #18247]