ruby-trunk-changes 2019-11-05

今日は Symbol#to_s の結果を freeze させる変更の revert や rb_method_basic_definition_p() の cache 追加の最適化、Windows 向け coroutine 実装の修正、GC.compact で空きがなくなった page が free list に残らないようにする修正などがありました。

[ba35c14325] Nobuyoshi Nakada 2019-11-04 12:23:11 UTC

スクリプトの行末に if や elsif があった時に警告を出すようにしています。たぶん typo だろうからってことですが golf (はそうでもないかも)とか quine 書いてる人は書くんじゃないかな。

[c303854e13] Yusuke Endoh 2019-11-04 13:27:37 UTC

ba35c14325ebbf1da8f200df83c45ee9937ff8a1 を revert しています。 quine 書くのにじゃまだから…ではなく ripper のテストがこけるようになったためらしい。

[26316cc350] Nobuyoshi Nakada 2019-11-04 12:23:11 UTC

ba35c14325ebbf1da8f200df83c45ee9937ff8a1 のリトライ。行末の if と elsif に警告を出すようにしています。

[e91e3274be] Nobuyoshi Nakada 2019-11-04 14:37:53 UTC

26316cc350109ba71d42f944f3b976985627c042 で追加した looking_at_eol_p() で pushback() を呼んで pcur が更新されないように修正しています。

[4e8336bae8] Nobuyoshi Nakada 2019-11-04 14:58:36 UTC

make test-bundled-gems-run のコマンドを template/Makefile.in と win32/Makefile.sub から common.mk に統合しています。

[bd3463ee35] git 2019-11-04 15:07:22 UTC

version.h の日付更新

[a087e027bf] Nobuyoshi Nakada 2019-11-04 16:32:26 UTC

26316cc350109ba71d42f944f3b976985627c042 で追加した WARN_EOL() の警告除去のため rb_warning() 呼び出しに (void) を付けて戻り値を明示的に捨てるようにしています。

[ec54261b01] Aaron Patterson 2019-10-30 23:28:21 UTC

e1bf29314feee6aaf535917da0178e868e7ff3fa でやろうとしていた GC.compact の結果 free slot がなくなった page が free list に残らないようにする変更のリトライ。前とは heap_eden の要素の初期化やリセットの漏れを修正しているみたいです。

[929a4aa722] Nobuyoshi Nakada 2019-11-04 17:02:14 UTC

拡張ライブラリ zlib の zlib_gzip_ensure() で rb_ensure() に渡す関数の signature をあわせるために wrapper 関数を1つ挟むように修正しています。

[c0c9a00f83] Nobuyoshi Nakada 2019-11-04 15:48:22 UTC

GitHub Actions の設定で bundled gems のテストの実行を別の step にして if: で特定の matrix の時だけ動かすようにしてたのを同一の step にまとめてオプションなどコマンドラインでなく env: で環境変数経由で渡すようにまとめています。

[9d04fa71fc] Nobuyoshi Nakada 2019-11-04 17:14:31 UTC

bundled gems の minitest のバージョンを 5.13.0 に更新しています。

[74bb8fb348] Burdette Lamar 2019-11-04 23:03:01 UTC

ENV の rdoc 用コメントに一般的な説明を追加しています。

[7c3bc0aa13] Nobuyoshi Nakada 2019-11-04 23:07:59 UTC

74bb8fb3480d0b0acaa6ef0bb93cc990cc7bf639 の rdoc 用コメントのセクション間に空行を追加。

[ebbe396d3c] John Hawthorn 2019-11-04 04:51:30 UTC

再帰的メソッド起動を検出するための rb_exec_recursive() や pp で ruby レベルで再実装されている同様の再帰チェックで使われる Hash オブジェクトを Hash#compare_by_identity でキーを同値チェックで判定するようにしたものを使うように変更しています。

[c7632fa80c] Nobuyoshi Nakada 2019-11-04 23:26:10 UTC

4e8336bae853e712eb884b87560621c2da4c4743 で common.mk に統合した test-bundled-gems-run のコマンドラインで tool/test-bundled-gems.rb の引数に $(XRUBY) の値を渡してたのをやめて、tool/test-bundled-gems.rb の内部で環境変数 RUBY か RbConfig.ruby を参照して ruby のファイルパスを得るようにしています。

[30a74aaef0] Kazuhiro NISHIYAMA 2019-11-05 01:09:44 UTC

26316cc350109ba71d42f944f3b976985627c042 で行末の elsif を警告する時のメッセージ内容が elisif になってたので修正。

[8869384367] Nobuyoshi Nakada 2019-11-05 01:28:01 UTC

encoding.c の Init_encodings() の定義位置を移動しています。たぶん Encoding の rdoc 用コメントが Init_Encoding() の前になるようにってことでどっちかというと Init_Encoding() を前に移動したってことですね。 [ruby-core:95674] [Bug #16292]

[1390d56ecf] Nobuyoshi Nakada 2019-11-05 01:28:44 UTC

GitHub Actions の macOSUbuntu でテスト時の make コマンドに $JOB の指定(並列ビルドの -j オプションと思われる)を渡すようにしています。

[6ff1250739] 卜部昌平 2019-10-29 02:37:25 UTC

rb_method_basic_definition_p() の使われかたを調べたところ固定の引数を渡すケースが多いので呼び出し元に cache を持たせた rb_method_basic_definition_p_with_cc() という関数を追加して、rb_method_basic_definition_p() をマクロにして ruby 本体ではこちらが使われるようにして高速化を図っています。

[7c07300491] 卜部昌平 2019-11-05 04:46:08 UTC

6ff1250739c57ce7f234a2148d3f6214da01b7e5 の再修正。 call cache つきのマクロ rb_method_basic_definition_p() や、先に追加されてた rb_funcallv() でも static 変数の初期化子を使った初期化を消しています。static 領域はゼロ初期化されるので明示的な初期化は不要なため。

[853d91a04a] Lars Kanis 2019-11-04 10:00:13 UTC

Windows 版の coroutine 実装の coroutine/win32/Context.h でマシンスタックに積む値を変更しています。SEH のなんからしい。 SEH とは Windows の例外処理機構で…前もなんか調べたような気がしてきたけど、とにかく mingw でのエラー修正とのこと。 https://github.com/ruby/ruby/pull/2279#issuecomment-509508810

[bea322a352] "NARUSE, Yui" 2019-11-05 08:30:54 UTC

Symbol#to_s が返す文字列を freeze しておく 6ffc045a817fbdf04a6945d3c260b55b0fa1fd1e の変更を revert しています。rails 周辺でこの変更の影響で動かなくなるところがあるなど影響が大きそうなので 2.7 では見送るようです。 [ruby-core:94815] [Feature #16150]

[dfb3322d27] Nobuyoshi Nakada 2019-11-05 06:47:25 UTC

spec/mspec のあちこちの after メソッドの引数 state を省略可能にしています。

[19f91f7880] Nobuyoshi Nakada 2019-11-05 06:50:28 UTC

同様に spec/mspec の finish メソッドで引数の数が異なるものを削除しています。たぶんこれも arity をそろえるため。

[fa52a924aa] Nobuyoshi Nakada 2019-11-05 07:14:03 UTC

spec/mspec の -f オプションで指定する formatter の実装のリファクタリングのようです。

[c6a52cffd1] Nobuyoshi Nakada 2019-11-05 08:08:51 UTC

同じく spec/mspec の MultiFormatter のインスタンス変数 @tally と @counter が同じもの(Tally)を格納してたのを @tally には TallyAction というクラスのインスタンスを格納するようにしています。コメントによると -j オプションで並列化できるようにするためらしいです。

[652800cc09] Jeremy Evans 2019-10-18 16:50:07 UTC

標準添付ライブラリ irb で String#taint を呼んでるところを 2.7 以降では呼ばないように分岐を追加しています。

[c4b627e2da] Jeremy Evans 2019-10-18 16:53:59 UTC

同じく標準添付ライブラリ reline でも String#taint を呼んでるところを 2.7 以降では呼ばないようにしています。

[6aacef4948] aycabta 2019-11-05 12:06:29 UTC

c4b627e2daf76e2f8922c62c8e0a6c2a10c8b435 に対応して readline のテストで String#taint の影響を確認する assertion を 2.7 以降で実行しないようにしています。