ruby-trunk-changes 2019-10-03

今日は rb_method_entry_t などの構造体を極力書き換えないようにする変更の revert や class/module 直下のブロック内での return をエラーにする修正などがありました。

[ef697388be] Jeremy Evans 2019-10-02 14:56:28 UTC

メソッド内でない class/module 文のコンテキストにある proc や Proc.new のブロックなどからの return がエラーになってなかった(lambda のブロックの場合は return は break 相当なので OK)ので LocalJumpError にするように修正しています。 2.4 で top-level return を導入した影響でエラーにならなくなってたみたいです。これは不具合扱いでもいいような気もするけど rubyspec は一応 2.7 限定でテスト変更しています。てか rubyspec はこれを認識してたのか。 https://github.com/ruby/ruby/pull/2511

[eb92159d72] 卜部昌平 2019-10-03 03:26:41 UTC

dd883de5ba311c38818d0f638a94b4fbc63f5ee5 とそれに関連する rb_method_entry_t などの method 関連の構造体を極力書き換えないようにする変更(https://github.com/ruby/ruby/pull/2486)を revert しています。よくわかってませんが method の再定義が繰り返し行なわれた場合に、実際には cache が破棄されて GC で解放されているのに検索結果の method entry が同じものに戻っている場合に inline cache がまだ有効だと誤判定してしまって SEGV を引き起こすケースがあったようです。コミットログにサンプルがあります。だいぶ珍しい条件な気がするけどまあテストとかでメソッドを一時的に書き換えるとかではありそうですね。

[7e060d5018] git 2019-10-03 03:48:20 UTC

eb92159d72fc711387f7e17ffbaca1678f23fd47 のインデントのタブを空白に展開。

[a515e3f99e] git 2019-10-03 03:48:30 UTC

version.h の日付更新

[1c999952e7] Romain Tartière 2019-10-02 20:26:39 UTC

misc/lldb_cruby.py の lldb_inspect で T_ARRAY 型オブジェクトの表示で文字列への埋め込みを忘れてた変数があったのを修正しています。

[84fc1de512] 卜部昌平 2019-10-03 05:56:35 UTC

tool/lib/test/unit.rb に UnboundMethod に bind と call をチェインして呼んでたところを UnboundMethod#bind_call を使うようにリファクタリング

[3ffd98c5cd] 卜部昌平 2019-10-01 07:45:14 UTC

VM の debug counters に mc_miss_by_xxx といった method cache の cache miss を原因ごとにカウントするカウンタを追加しています。

[c14755e9ca] Hiroshi SHIBATA 2019-10-03 09:32:21 UTC

標準添付ライブラリ fileutils の Test::Unit::CoreAssertions::MiniTest という深いところにある module の Skip という例外クラスを同じ名前空間の Assertion という例外クラスを継承するようにしています。 minitest との互換性のためらしい。

[ad67adb5f9] Hiroshi SHIBATA 2019-10-03 05:47:18 UTC

標準添付ライブラリ fileutils のテストの skip を skip メソッドのかわりに pend というメソッドを使うようにしています。 pend っていうのもあるのか。

[b7ae26e2ee] Nobuyoshi Nakada 2019-10-03 07:47:05 UTC

tool/lib/vcs.rb で ChangeLog 生成のために revision の範囲を指定するのに HEAD を使うのをやめてブランチ名(やタグ名?)を明示的に指定するようにし、git-svnリポジトリでの整形を修正しています。 git-svn で作ることって今あるのかな。

[47d143be17] Nobuyoshi Nakada 2019-10-03 07:47:57 UTC

tool/make-snapshot で gem パッケージや Unicode 用データファイルの cache への symlink を生成していたところをやめて直接コピーするようにしています。またコピーしたファイルの mode を rwXr-Xr-X に設定しなおすようにしています。

[8142a9b43d] Nobuyoshi Nakada 2019-10-03 10:12:03 UTC

tool/make-snapshot の 5af2c8735a22e6b54acf4164b1f1f7bac98e7111 で system のエラーを検出するようにしたのを MAKE っていうクラスに分離して Process.spawn を使って make コマンドを実行するようにしています。これ ensure での Process.wait は Process.spawn で例外発生時にエラーになるんじゃないかな。どっちみちエラーではあるけど。

[8f7fca784a] Nobuyoshi Nakada 2019-10-03 10:13:05 UTC

5af2c8735a22e6b54acf4164b1f1f7bac98e7111 や 8142a9b43dfc3e141fd7cb3fc255fc102523f6df の続きで tool/make-snapshot で make prepare-package と make clean-cache を実行するのをファイルの更新時刻を調整する前に移動しています。