ruby-trunk-changes 2019-05-16

今日は Transient Heap と Lazy Sweep の相性がよくなかったのを修正する変更などがありました。

[e970ab3339] Nobuyoshi Nakada 2019-05-15 23:17:18 +0900

gc.c の gc_verify_compaction_references() で ASAN が無効な時に利用されないローカル変数になって警告が出ているのがあったので preprocessor の分岐で (void) つきで参照して警告除去しています。

[fadab0f9fb] git 2019-05-16 14:43:49 +0900

version.h の日付更新。

[18e43e8231] Nobuyoshi Nakada 2019-05-16 14:58:57 +0900

rubygems のテストでファイルを open しっぱなしになっているところがあったので File.write を利用するように修正。

[82332c7d8b] Takashi Kokubun 2019-05-15 23:14:07 -0700

mjit.c の関数 mjit_gc_finish_hook() を mjit_gc_exit_hook() と改名しています。

[973431c059] Nobuyoshi Nakada 2019-05-16 15:41:33 +0900

c70ceb59928aa2c37befd6b03d73657ba5ece61c で追加した GC.compact で移動する page を決めるための比較関数など内部利用の関数に修飾子 static を追加しています。

[7069f64c41] Nobuyoshi Nakada 2019-05-16 15:43:16 +0900

symbol.c の global_symbols という変数は extern するようになったので ruby_global_symbols と prefix を追加しています。

[a160b2f567] Nobuyoshi Nakada 2019-05-16 15:52:09 +0900

アーキテクチャ毎の coroutine 実装の coroutine/*/Context.h で定義している定数 COROUTINE_REGISTERS を enum 型の定数として定義するように変更しています。変数として残らないようにするためらしい。

[88449100bc] Koichi Sasada 2019-05-16 17:18:50 +0900

Transient Heap の機能追加時に一時的に確保したバッファから通常のヒープにコピーする時に GC を一時的に無効化していましたが、rb_gc_disable() は Lazy Sweep 中だった時は最後まで sweep を完了させてから disable するので、Lazy Sweep はやめないで GC の開始のみ止めるために rb_gc_disable_no_rest() というのを新規追加してこっちを使うようにしています。

[0ed9bdfc13] Nobuyoshi Nakada 2019-05-16 18:25:16 +0900

parse.y の構造体 struct rb_strterm_heredoc_struct のメンバー length の bit field のサイズに応じて、32bit 環境でうまく収まるなら quote と func も bit field を使い、おさまらなかったら uint8_t を使ってアライメントされるようにしています。