ruby-trunk-changes 2021-01-19

今日は MJIT 向けの関数の export 指定の追加や pattern match 文法の peephole optimization での不具合修正、Module#ruby2_keywords の不具合修正などがありました。

[bb5747e18a] Hiroshi SHIBATA 2020-12-28 07:29:45 UTC

標準添付ライブラリ drb の gemspec ファイルに依存関係として ruby2_keywords を追加しています。

[dff74ee6db] Nobuyoshi Nakada 2021-01-18 12:15:47 UTC

331f0bc1cb7965bec9aed5d7278360c2e9fc8946 の autoconf の -o オプションを削ったのを revert しています。2.70 でこのオプションがなくなったからということで消してましたが間違いだった模様。

[ac1a4bccbd] Juanito Fatas 2021-01-18 12:48:17 UTC

Array#push の rdoc 用コメントの call-seq に別名である Array#append も追記しています。

[5cf6229ee9] Takashi Kokubun 2021-01-18 15:14:02 UTC

make test-spec の依存関係の main を program に変更しています。ruby 本体がビルドされてれば良いようにしてテスト開始にかかる時間を短縮するためのようです。 https://github.com/ruby/ruby/pull/4089

[92e288420c] git 2021-01-18 15:14:22 UTC

version.h の日付更新

[fad9922d84] Marc-Andre Lafortune 2021-01-18 16:05:05 UTC

ac1a4bccbda4358436a7a907a7f09d047f562740 の Array#push の rdoc 用コメントの call-seq 追加を revert しています。 https://github.com/ruby/ruby/pull/4088 のコメント欄をみると rdoc の call-seq で alias を列挙するのはやめる方針になってたみたいですね。

[21d2463fbc] Nobuyoshi Nakada 2021-01-18 15:12:46 UTC

lib/ruby2_keywords.gemspec を追加しています。本体はないんだけど、たぶん ruby 3.1 以降で ruby2_keywords.gem をインストールされないようにするためかな。

[e812b36205] Alan Wu 2021-01-18 19:02:19 UTC

vm_method.c の invaldate_negative_cache() の関数名の typo を修正して invalidate_negative_cache() に改名しています。

[9d1475c621] Takashi Kokubun 2021-01-18 22:52:07 UTC

numeric.c の rb_float_uminus() や rb_float_abs() の宣言に MJIT_FUNC_EXPORTED をつけて precompiled header に含めるようにしています。また numeric.rb の実装で実行する C の式を flo_iszero() から FLOAT_ZERO_P() に変更しています。MJIT で動かないのを修正しているようです。

[1b89b99941] Vladimir Dementyev 2021-01-18 21:00:52 UTC

pattern match の文法を VM 命令列にコンパイルする時に peephole optimization で必要がラベルが消されてしまうことがあったようで、ラベルを追加するところのほうに LABEL_UNREMOVABLE() というマクロを使って LABEL::unremovable をセットするようにしています。 [ruby-core:102061] [Bug #17534]

[5741236a0c] Hiroshi SHIBATA 2021-01-19 02:51:38 UTC

21d2463fbc5094aa2ad92a21c910dccdc928b920 で追加した lib/ruby2_keywords.gemspec の version が "999999999999999999999999999" っていうすごい値だったので、"1.0.0" という常識的な値にしています。要するに実際の gem のバージョンよりも新しいものにしてインストールされないようにするってことだと思うので、本物の(?) ruby2_keywords はこの先 1.0.0 には到達しないようにするってことですね。

[ff8c92359a] Yusuke Endoh 2021-01-19 04:34:07 UTC

1b89b99941548fdb65305dd9a412082e7fdba45a で追加した pattern match のテストで変数の未使用の警告除去のために自己代入の文を追加しています。

[f12320cd57] Yusuke Endoh 2021-01-19 04:40:39 UTC

9d1475c621af671494769dde5a09db4c86071474 で追加した MJIT のテストでの警告抑制のためテストメソッドで $VERBOSE を nil にセットするようにしています。

[4886535ab2] Takashi Kokubun 2021-01-19 04:44:47 UTC

f12320cd57982800d3a10a32bd357c9da239a53b の続きで警告抑制のため $VERBOSE をいじるかわりに単項演算子メソッドの Float#-@を呼び出すのに普通の呼びかたじゃなくて float.-@ のような呼びかたを使うようにしています。

[a7d933e502] Koichi Sasada 2021-01-18 17:47:04 UTC

954d6c743219c11c84dd107d059001752f186a27 で ISeq の mark 時に call cache が有効かどうか判定するために追加した vm_cc_invalidated_p() で条件の判定が反対になってた不具合を修正しています。これが反転すると mark されなくなって GC されちゃうので SEGV の原因になるやつ。

[82386f21b9] Takashi Kokubun 2021-01-19 06:28:54 UTC

標準添付ライブラリ irbIRB::ColorPrinter.pp で引数 width のデフォルト値を固定の 79 から Reline.get_screen_size を使って端末のサイズから取得するようにしています。

[b2159f7c38] Takashi Kokubun 2021-01-19 07:35:31 UTC

標準添付ライブラリ irb の色付けのテストで端末サイズが取得できない環境で stub の実装を追加してダミーの値を返させるようにしています。 82386f21b91383ac8074561ee563cb407fee16f9 の変更がテスト時に端末がない時に? 動くようにするためかと。

[4da4ad69bb] Takashi Kokubun 2021-01-19 07:48:33 UTC

標準添付ライブラリ irb のテストで一部標準出力が端末に紐付いてない時(tty? が false の時)に skip するようにしています。

[e6af81bde1] Takashi Kokubun 2021-01-19 08:14:12 UTC

b2159f7c38262f5d0746a3cfb9b33ea9d62ed813 で追加した irb のテストの setup と teardown で super を呼んでたのをやめています。また同様の Reline.get_screen_size の stub 追加を test/irb/test_context.rb でも行なっています。

[eeacdcb9a0] Nobuyoshi Nakada 2021-01-19 07:40:46 UTC

Module#ruby2_keywords で defined_method にブロックを渡して定義されたメソッドの時に早期に return しすぎて rest 引数の最後の Hash がキーワード引数として扱われる特別処理が行なわれなくなっていた不具合を修正しています。 [ruby-core:102153] [Bug #17558]