ruby-trunk-changes 2020-08-02

今日は GC の不具合修正やパターンマッチのための NODE でのメモリ管理の実装の変更などがありました。

[fcdbdff631] Kazuki Tsujimoto 2020-08-01 16:03:43 UTC

8f096226e1b76f95f4d853d3dea2bc75eeeb5244 の NODE のうち NODE_ARYPTN と NODE_ARGS の一時バッファ用の imemo を mark 対象にしてたのを、そもそも struct rb_ary_pattern_info::imemo と struct rb_fnd_pattern_info::imemo メンバーを削除して他の種類と同じく NODE の子ノードへのポインタを利用して保持するように変更しています。

[d5bed28889] git 2020-08-01 16:07:29 UTC

version.h の日付更新

[f7cf600c8b] Koichi Sasada 2020-08-01 18:23:16 UTC

gc.c の gc_page_sweep() で mark を bitmap で管理している bits というの末尾の余り部分を 1 で埋める処理で、余りがない場合が考慮されておらず必ず最後の bit_t 1つぶんが mark bit が立ってしまっていたのを修正しています。

[b4f58ea300] Koichi Sasada 2020-08-01 19:24:47 UTC

8655c2e69041cc812d30c2e951a8ac9ea7a60c47 で導入されたデバッグメッセージ出力の RUBY_DEBUG_LOG() というマクロの出力をフィルタリングする RUBY_DEBUG_LOG_FILTER という環境変数にカンマ区切りで複数のフィルタ設定できるようにしています。

[a1246270c5] Koichi Sasada 2020-08-01 19:51:15 UTC

b4f58ea3008e3e86bdc931407c68c6e0497ef078 の変更でうっかり開発中のデバッグ用の unsetenv(3) が残ってしまっていたので削除しています。

[ac69849e49] Alan Wu 2020-08-02 03:05:19 UTC

CI でのエラーのデバッグのため clear_method_cache_by_id_in_class() に klass の型をチェックして想定した T_CLASS/T_ICLASS でなかったら rb_bug() で異常終了させるようにしています。