ruby-trunk-changes 2019-11-20

今日は Enumerable#reverse_each の潜在的不具合修正や irb のオートインデント対応の修正、Method#inspect で引数の情報を詳しく表示するようにする変更などがありました。

[2439948bcc] Kazuki Tsujimoto 2019-11-19 14:53:01 UTC

パターンマッチに Struct を渡した時の deconstruct_keys メソッドの実装で、パターンマッチに指定されたキーの数より構造体の属性の数が少なかったらどうせマッチしないので中間オブジェクトを作らずすぐに空の Hash オブジェクトを返すようにしています。

[f3c9803528] git 2019-11-19 15:07:26 UTC

version.h の日付更新

[61131edba7] Nobuyoshi Nakada 2019-11-19 15:55:14 UTC

0b8c73aa65add5c57b46b0cfdf4e661508802172 の ripper 向け? の変更を revert しています。よくわからなかった修正だ。

[ff41663403] Kazuki Tsujimoto 2019-11-19 15:35:47 UTC

Enumerable#reverse_each でブロックの呼び出し中に receiver が破壊的に変更されて要素数が減る可能性があるのに RARRAY_LEN() で取得したサイズをそのまま使い続けるようになっていて異常終了する恐れがあったのを修正しています。サイズが小さくなるとインデックスがサイズ内に収まるように調整するので、yield するたびに先頭を削っていくと何度も末尾の要素を yield するという。ただここで削るべきは内部で生成される Array オブジェクトなので、普通はそんなことはないと思いますが(テストも ObjectSpace を使って無理矢理やっている)。 [ruby-dev:50867] [Bug #16354]

[bc0da8e3ff] aycabta 2019-11-19 11:58:11 UTC

irb のヒストリファイルパスを修正、というようなコミットログなんですが変更内容はローカル変数名を改名しただけのようにみえる。そして変更してるのはヒストリファイルパスじゃなくて .irbrc ファイルのパスを作るところのようなので、コミットログの間違いかなぁ。

[49b4507fd3] aycabta 2019-11-19 23:39:43 UTC

irb のオートインデントのためのインデントレベル検出でコメント行を改行として扱うようにする変更。

[19a310b0ac] aycabta 2019-11-20 00:56:13 UTC

irb の lexer で do ... end ブロックの do のトークンのタイプがその前のメソッドが引数のかっこありかなしかで異なるので、かっこありの時の EXPR_ENDFN というのにも対応するようにしています。

[da0d7211aa] aycabta 2019-11-20 01:04:41 UTC

標準添付ライブラリ reline の Reline::LineEditor のオートインデント機能で行の途中に改行を追加した? 時の対応を追加しています。

[4b583cff97] zverok 2019-10-27 10:39:33 UTC

Method#inspect でメソッドの引数の情報を詳しく表示するようにしています。 [ruby-core:84004] [Feature #14145]

[baf482bab4] zverok 2019-10-27 11:32:17 UTC

4b583cff97025394fab4a014a2a8606dfb557475 に対応して影響する test/ruby/test_module.rb のテストを修正しています。 [ruby-core:84004] [Feature #14145]

[50cc934145] zverok 2019-11-20 00:33:20 UTC

4b583cff97025394fab4a014a2a8606dfb557475 の省略可能な引数の表示方法をちょっと変更。 [ruby-core:84004] [Feature #14145]

[f90b22e3dc] Nobuyoshi Nakada 2019-11-20 06:37:05 UTC

e1b234148829f65bea9f5ecc7018beb782ea6023 の依存関係の再生成で ext/-test-/float/depend の FreeBSD 向けの依存関係が消えてしまっていたので再追加しています。

[7608baf92a] 卜部昌平 2019-11-20 06:51:10 UTC

0e8219f591f3f17cb7ee361e8a60dbef08145883 で一部関数を static に変更していた時に internal.h から array.c の関係ない関数の prototype 宣言が消されてたそうでそれを復旧しています。 icc で明示的に export していない関数が見えなくてエラーになってたようです。

[83900528ad] Nobuyoshi Nakada 2019-11-20 07:23:59 UTC

win32/Makefile.sub で WARNFLAGS に -we4047 というオプションを追加しています。 C4047 という警告をコンパイルエラーとして扱うように指定。 MJIT 用の precompiled header 作成時の警告についてらしいです。このオプションだけ指定して変更しなくてもいいのかな。

[fc22b0eaa3] Nobuyoshi Nakada 2019-11-20 07:27:57 UTC

と思ったら 83900528ad6a2cf37360abe2bcebb16787177838 の警告をエラーにしてた件で出てた警告の修正? で vm_args.c の rb_resolve_refined_method_callable() の宣言が MJIT_HEADER が定義されている時にされていなかったので常に宣言するようにしています。

[ae818b589e] Koichi Sasada 2019-11-20 08:21:38 UTC

NEWS ファイルに [Feature #14145] の Method#inspect の引数情報表示について追記しています。

[633625a083] aycabta 2019-11-20 08:55:03 UTC

標準添付ライブラリ reline の Reline::IS_WINDOWS という定数は削除して、1箇所でしか参照されていなかったのでそこで直接 RbConfig::CONFIG["host_os"] をチェックするようにして、さらに Reline::Windows.get_screen_size が [0, 0] になってしまっていたら Reline::ANSI を使うように fallback させています。 Cygin 上で Mintty という端末? を使うと Reline::Windows がうまく機能しない(というか ANSI が使える)みたいです。

[777973084e] Kazuhiro NISHIYAMA 2019-11-20 08:56:59 UTC

Method#inspect の表示に引数の情報を追加した件のテストに m(...) という引数を委譲するための記法が使われてた時のテストも追加しています。ついでに Method#parameters などのテストにも追加しています。 これは表示すると (...) じゃなくて (**、 &&) になるんですね。なるほど……。 [Feature #14145]