ruby-trunk-changes 2020-11-11

今日は Win32API の削除や Ractor#close メソッドの削除、timer thread からの割り込みの処理の変更などがありました。

[5a19b492da] Hiroshi SHIBATA 2020-11-10 12:00:49 UTC

標準添付ライブラリ racc のヘッダコメントのライセンスの記述を Ruby 本体のライセンスに揃えています。 https://github.com/ruby/ruby/pull/134

[4a03df4507] Hiroshi SHIBATA 2020-11-10 12:12:35 UTC

標準添付ライブラリ racc のテストで JRuby で失敗するテストを skip するようにしています。

[0b19f33480] Hiroshi SHIBATA 2020-11-10 12:26:45 UTC

標準添付ライブラリ racc のバージョンを 1.5.1 に更新しています。

[6ddde16234] git 2020-11-10 18:24:28 UTC

version.h の日付更新

[ff67aac193] Hiroshi SHIBATA 2020-11-10 04:56:13 UTC

拡張ライブラリ win32 内の Win32API.rb を削除しています。確かこれ日本科学未来館のインターネット物理モデルの制御に使われてたんですよねぇ。

[5081bd9675] Hiroshi SHIBATA 2020-11-10 06:39:12 UTC

拡張ライブラリ win32 内の ext/win32/lib/win32/resolv9x.rb というファイルを削除しています。存在を知らなかったけど古い Windows での名前解決のための wrapper みたいですね。

[dd07354f27] Hiroshi SHIBATA 2020-11-10 07:59:59 UTC

拡張ライブラリ win32 の Win32::Importer が既に fiddle の Fiddle::Importer の別名になっているのを削除して ext/win32/lib/win32/resolv9x.rb 内で Win32::Importer を使っていたところも直接 Fiddle::Importer を参照するように変更しています。

[1e8abe5d03] Koichi Sasada 2020-11-11 05:37:31 UTC

rb_vm_t::clock というインタプリタ全体の clock を格納するメンバーを追加して、timer thread の定期的な割り込みでインクリメントしていって、各 Thread は rb_execute_context_t::checked_clock にこの値をコピーしてこれが変化したのを検出することで time slice のための割り込み検知とするようにしています。timer thread の定期的な処理で全 Ractor への割り込みをするのが排他処理も必要で重いので変更したということでしょうか。Windows では逆にオーバーヘッドが増えるそうです。そういえば timer thread と Ractor の関係ってどうなってるんだろう。この記述からすると timer thread は VM に 1つかな。

[db31ace934] Koichi Sasada 2020-11-10 09:21:11 UTC

Ractor の(main Thread の)終了時にまだ実行中の子 Thread があったらそれらを終了させるようにしています。 https://github.com/ruby/ruby/pull/3754

[deed21bb08] Koichi Sasada 2020-11-10 16:55:28 UTC

Ractor のブロックの終端まで到達した時に既に Ractor#close_outgoing でオブジェクトの出力側を閉じている時に Ractor.yield が例外を発生して Ractor の終了処理が阻害されてたので、close 済みだったら yield の処理をしないようにしています。 [ruby-core:100744] [Bug #17310]

[fa3670e6e4] Koichi Sasada 2020-11-11 07:15:04 UTC

Ractor#close は適切なユースケースがないということで削除しています。 https://github.com/ruby/ruby/pull/3759