ruby-trunk-changes 2020-06-12

今日は lambda にブロック引数でブロックを渡した時に警告するようにする変更や、freeze された Class/Module の継承先でのクラス変数への代入の不具合修正、 fileutils の install メソッドの不具合修正などがありました。

[2188d6d160] Jeremy Evans 2020-06-11 00:50:35 UTC

Kernel#lambda のブロックとしてブロック引数経由で Proc や Method や Symbol などが渡された時に deprecation warning を表示するようにしています。 lambda にブロック引数で is_lambda? == false な Proc が渡されると lambda なのに is_lambda? じゃない Proc オブジェクトができてしまう、という問題に対して、そもそもブロック引数渡す意味ないので警告対象にしよう、という対処みたいです。 [ruby-core:93482] [Feature #15973]

[eb5ecc2ea8] Burdette Lamar 2020-06-11 15:55:11 UTC

Array の rdoc 用コメントのサンプルのシンプル化や追加など。 https://github.com/ruby/ruby/pull/3204

[631c01f5ae] git 2020-06-11 15:55:31 UTC

version.h の日付更新

[e100fcbdd1] Alan Wu 2020-06-10 22:44:52 UTC

クラス変数へのアクセスは継承した Class や Module からも可能ですが、所属している Class/Module が freeze されていてもこれら継承先からのアクセスでは代入できてしまっていたのを修正しています。 https://github.com/ruby/ruby/pull/3203

[a6cf2f3d22] Jeremy Evans 2019-10-27 23:03:07 UTC

標準添付ライブラリ set の SortedSet#to_a が内部で使っている配列をそのまま返していたので、破壊的変更をすると SortedSet 自体に変更ができてしまっていたので dup して返すようにしています。 [ruby-core:92578] [Bug #15834]

[c74b044aab] 卜部昌平 2020-06-12 01:23:15 UTC

182ae1407b3f6597cdbf6872f788c1ed3aa22a35 で Array のバッファ共有の実装で元になるオブジェクトの参照を shared_root と名前を徹底するようにいろいろ改名した時に .gdbinit の rp コマンドの実装が追随漏れしてたのを修正。

[1f4db23ac1] 卜部昌平 2020-06-12 01:35:44 UTC

さらに .gdbinit の rp で T_HASH 型オブジェクトの表示で struct RHash::basic.flags へのアクセスの記法が間違っていたのを修正しています。

[e2678781c7] Koichi Sasada 2020-06-12 08:28:58 UTC

過去に 02705b27be207fce57bd0253251f81108c7ed57b でも GC.start を二重にするなど対策してた GC.latest_gc_info のテストでさらに GC.start を追加。さらに GC.latest_gc_info の呼び出しも事前に 1回しておくなど偶然の失敗の対策を強化しています。

[7cddb844e6] Jeremy Evans 2020-03-09 16:42:40 UTC

標準添付ライブラリ fileutils の各種メソッドで verbose 指定時の出力先を $stderr から $stdout に変更しています。なるほど。昔って端末で使うフィルタツールみたいなのを作ることが多かったので、標準出力はツールが本来出力したいもののために使って、警告でもイレギュラーなものは stderr という作法が多かった気がしますが、最近だとコンテナ化されたアプリで stderr に出力されたものは全てエラーメッセージとしてハンドリングされてしまうとかの事情で、確かに作法が変わってきてる感じがありますね。とはいえ結構大きめの仕様変更ではあります。 https://github.com/ruby/fileutils/pull/49 [Bug #4436]

[cc9ca468fe] Nobuyoshi Nakada 2019-10-02 16:39:02 UTC

標準添付ライブラリ filesutils の install メソッドで mode オプションに "X" を含む文字列を渡すとエラーになる不具合を修正。 symbolic_modes_to_i というメソッド内で path という変数(引数)名に File::Stats を入れるように途中で値がすりかわってて、 mode の "X" を処理するパスでのみ path が文字列という前提で書かててたようです。 https://github.com/ruby/fileutils/pull/47

[510df47f5f] Nobuyoshi Nakada 2020-06-12 10:00:27 UTC

7cddb844e6d51f954c6669341b9cc656bd7d3492 の fileutils の verbose メッセージを stderr に出すようにした変更を revert しています。rake のテストが失敗したためということ。やっぱりそれなりに影響大きそう。