ruby-trunk-changes 2021-06-09

今日は ENV.dup や ENV.clone がそれぞれ例外や警告を出すようにする変更などがありました。

[117310bdc0] Jeremy Evans 2021-06-08 17:19:08 UTC

環境変数へアクセスする ENV は Hash っぽいけど実はただのオブジェクトで、特異メソッドで機能が提供されているため、ENV.dup はただのオブジェクトを返す(ENV の機能はなくなる)ので ENV.dup は例外を発生させるようにしています。また ENV.clone も clone したオブジェクトの操作した結果は元の ENV にも影響するので(環境変数なのでそりゃそうだ) deprecated 警告を出すようにしています。 [ruby-core:103132] [Bug #17767]

[f9e13cda04] git 2021-06-08 17:19:27 UTC

version.h の日付更新

[9f110ced57] Peter Zhu 2021-06-08 14:45:18 UTC

gc.c の gc_marks_wb_unprotected_objects() という関数でスキャンする heap page を生きてるオブジェクトが存在する eden heap だけにしてたのを、引数に rb_heap_t を受け取って指定できるようにしています。現状では引数に別の heap は渡してないので挙動は変更されてなさそう。

[73f9831a57] Nobuyoshi Nakada 2021-06-09 03:32:18 UTC

timer thread のかわりにタイマー割り込みに使うようになった POSIX timer が fork(3) した子プロセスでは有効じゃないということで ubf_timer_disarm() で timer 解除する時に timer_posix.owner に保存してある pid と現在の pid を比較して使えなかったら処理をスキップするようにしています。 [ruby-core:104199] [Bug #17941]

[9ba335e2eb] Nobuyoshi Nakada 2021-06-09 09:49:14 UTC

win32/Makefile.sub で古い x86系の CPU でPACKED_STRUCT_UNALIGNED マクロの定義のための分岐の条件が間違ってたらしいのを修正しています。

[e03bf76b31] Nobuyoshi Nakada 2021-06-09 10:15:57 UTC

定数の inline cache 用の構造体 struct iseq_inline_constant_cache_entry のレイアウトを変更して、環境に応じて padding を追加する対応をしています。