ruby-trunk-changes 2019-06-17

今日は bison 3 の対応や共有文字列操作の一部でのメモリリーク修正などがありました。

[44caca11cf] Yuki Yugui Sonoda 2019-06-16 13:28:34 UTC

compile.c で定数への代入で名前空間の途中の式によって VM スタックの調整を入れるようにしています。テストをみるとこれは評価順序を確認するためのテストみたいなので、先に左辺値の評価をしてから右辺値を評価するようにするための修正で JIS X の規格にあわせるためとのことですが、CI がこけてて後に revert されています。

[11f8c89171] git 2019-06-16 13:48:23 UTC

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

[1ff26dc4c7] Yusuke Endoh 2019-06-16 14:00:05 UTC

44caca11cfa6bea01a1ef738846183f1a56d5658 で CI がエラーになったそうで revert しています。

[d4929f5185] git 2019-06-16 14:01:46 UTC

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

[53e9908d8a] Nobuyoshi Nakada 2019-06-16 14:41:06 UTC

string.c の str_replace_shared_without_enc() で str2 のほうの文字列が GC で管理されてないものだった時に解放処理を忘れてたのを修正しています。また parse.y の gettable() で __FILE__ が返す文字列を rb_fstring() を通したものにしておくようにして struct parser_params のほうの内容が変更されないようにしています。けどこの 2つの変更は関係あるのかな。 [ruby-core:93071] [Bug #15916]

[a064e46762] Nobuyoshi Nakada 2019-06-16 18:09:52 UTC

Bison 3 対応とのことで parse.y の %pure-parser を %define api.pure と変更しています。ひえー、こんな非互換が入るとは。 で古い Bison だと逆に動かなくなるみたいなので tool/pure_parser.rb というツールを追加して bison --version の出力をみて古いやつだったらこの directive を %pure-parser に書き換えるようにしています。

[09a846085c] git 2019-06-17 10:56:35 UTC

version.h の日付更新