ruby-trunk-changes 2019-09-11

今日は NODE の Write Barrier 挿入の不具合修正や mark 処理の追加対応などがありました。

[414a80d242] Aaron Patterson 2019-09-10 17:44:49 UTC

node.c の rb_ast_newnode() および mark_ast_value() で NODE の NODE_MATCH タイプへの対応を追加しています。

[721cab4706] git 2019-09-10 17:45:56 UTC

version.h の日付更新

[139510238b] Aaron Patterson 2019-09-10 18:27:40 UTC

d8a4af47a5e5f72be2cd2897712d1718013b2e4c と同様の RGenGC のための Write Barrier の入れかたの問題で、NEW_NODE() の前に RB_OBJ_WRITTEN() を呼ぶと実際にオブジェクトから参照される前に読んでその後 GC が走るポイントがあるという問題があり順序を修正しています。また NEW_SCOPE() はマクロ定義内に RB_OBJ_WRITTEN() の呼び出しを組み込んでいます。これは今までは単に Write Barrier 漏れてたってことかな。

[91ee9584f9] Aaron Patterson 2019-09-10 21:00:48 UTC

139510238bcbb8d7fd8022c23a603c51d2acbe2e の再修正で NEW_SCOPE() マクロの実体を node_newnode_with_locals() という関数にしています。マクロで式文が書けるのは GCC の拡張なので他のコンパイラでビルドできるようにということのようです。

[489676bd20] Kazuhiro NISHIYAMA 2019-09-11 00:35:06 UTC

GitHub Actions の coverage と doxygen 用のジョブで aws s3 によるファイルアップロードに --no-progress オプションをつけて進捗の出力を抑制しています。

[655c65d65b] 卜部昌平 2019-09-10 07:41:34 UTC

d8a4af47a5e5f72be2cd2897712d1718013b2e4c の修正で負の数値リテラルや "key": value みたいな部分のアクション部で RB_OBJ_WRITTEN() の引数で代入を行なっていたのがまずかったようなので代入も込みの RB_OBJ_WRITE() を使うように修正しています。 コミットログを読むと &$$->nd_list という参照が未初期化になるってあるんですが RB_OBJ_WRITE() に同じ &$$->nd_lit を渡してはいるのでこれがどういう意味なのかちょっとよくわからず。

[343b0a281d] Nobuyoshi Nakada 2019-09-11 07:17:04 UTC

91ee9584f9a3e8b8e5e0e9c2f1f2b229ca10323e で追加した関数 node_newnode_with_locals() で && を使って条件分岐を書いてたのを普通に if 文を使って書くようにリファクタリングしています。