ruby-trunk-changes 2022-05-15

今日は autoload の排他処理の race condition の修正などがありました。

[48002ff187] Burdette Lamar 2022-05-14 13:38:09 UTC

標準添付ライブラリ fileutils の FileUtils#ln の rdoc 用コメントにサンプル多く使うように説明を追記しています。

[32de6097b2] Samuel Williams 2022-05-15 04:07:12 UTC

fd6cef79f54bebab1a49256034687dcc01a09eab で Module#autoload 用の排他処理を Thread::Mutex オブジェクトを使うように変更したものにやはり race condition があったらしく、さらにグローバル変数(正確には static 変数)として mutex を追加して Init_var_tables() で初期化するようにして struct autoload_state のリストを操作する時に排他処理するようにしています。また同じく static 変数の autoload_featuremap の初期化(rb_ident_hash_new() の呼び出し)を rb_autoload_str() の呼び出しにまで遅延していたのも Init_var_tables() でプロセス起動時に済ませておくようにしています。しかし他にも細かく const_tbl_update() に autoload 時用のフラグを引数に追加して定数のキャッシュ操作を変更してたりデバッグ用と思われるマクロが有効になってたりするので性能への影響はないか気になりますね。 https://github.com/ruby/ruby/pull/5898 [ruby-core:108552] [Bug #18782]

[105609d382] git 2022-05-15 04:07:36 UTC

version.h の日付更新