ruby-trunk-changes 2020-10-30

今日は Proc を Ractor 間で共有可能にするためのメソッドの追加や win32ole の default gem 化などがありました。

[07c03bc309] Koichi Sasada 2020-10-23 04:27:21 UTC

構造体 struct iseq_compile_data のメンバーに isolated_depth というのを追加して、rb_iseq_new_with_opt() や prepare_iseq_build() の引数で指定し Proc.new のブロック外のローカル変数へのアクセスの禁止のチェックを強化しているようですが、Proc#isolate 自体がまだ入ってないので実効性はないのかな。

[c0aeb98aa9] Jeremy Evans 2020-10-28 22:17:49 UTC

ENV.replace で複数の環境変数をまとめて消せるようにしています。ENV の key は環境によって大文字小文字が無視されるので重複している可能性があるので置換時に両方消す必要があるからとのこと。チケットのほうをみると大文字小文字だけでなくても重複した状態になることがあるみたいですが、なんでだろ。 [ruby-core:100343] [Bug #17254]

[502d6d8459] git 2020-10-29 15:09:12 UTC

version.h の日付更新

[5d97bdc2dc] Koichi Sasada 2020-10-29 15:32:53 UTC

Ractor.make_shareable で Proc オブジェクトを Ractor 間で共有可能にしています。 Proc オブジェクトのブロック内から外側の変数への代入があるかどうかチェックしてある場合は例外を発生させるようにしています。 [ruby-core:100534] [Feature #17284]

[799253dc46] Nobuyoshi Nakada 2020-10-30 03:26:59 UTC

compile.c と iseq.c の行末の空白除去。

[a1828a1ff4] Hiroshi SHIBATA 2020-10-30 05:34:25 UTC

拡張ライブラリ win32ole を default gem にしています。

[08ddc335ea] Koichi Sasada 2020-10-30 07:47:08 UTC

rb_thread_wait_for_single_fd() で待ち行列からの要素削除が Ractor 間の競合がありえたので RB_VM_LOCK_ENTER()/RB_VM_LOCK_LEAVE() での排他を追加しています。

[89c8ca32d0] Koichi Sasada 2020-10-30 07:48:42 UTC

bootstraptest/test_ractor.rb に Ractor 間で Proc オブジェクトを共有するテストを追加しています。