今日は 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 の行末の空白除去。
[17c6b6b16e] Kazuhiro NISHIYAMA 2020-10-30 03:30:45 UTC
5d97bdc2dcb835c877010daa033cc2b1dfeb86d6 の例外メッセージの typo 修正。
[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 オブジェクトを共有するテストを追加しています。