ruby-trunk-changes 2019-10-20

今日は主に標準添付ライブラリ monitor の拡張ライブラリ化の変更がありました。

[f2ed8466d3] Nobuyoshi Nakada 2019-10-19 17:58:24 UTC

spec/ruby/optional/capi/thread_spec.rb の spec 名(っていうのかな)の typo 修正。

[434966bffd] git 2019-10-19 17:58:58 UTC

version.h の日付更新

[caac5f777a] Koichi Sasada 2019-10-19 19:52:20 UTC

標準添付ライブラリ monitor で f91879a7b548284c93743168acfd11e3d2aeefac で不具合修正のために Thread.handle_interrupt での割り込みからの保護を追加したところ遅くなってしまったということで、この対策として C 拡張ライブラリで Monitor を実装して monitor.rb はこの wrapper のようにしています。なるほどなぁ、拡張ライブラリは極力書かず ruby で書いて高速に動かすような方向性(MJIT など)だったけど ruby レベルで書くと割り込みの制御などは難しいので Monitor みたいなのはさすがに C 実装のほうがいいのか。 https://github.com/ruby/ruby/pull/2576 [ruby-core:95349] [Feature #16255]

[a0a3c70181] Koichi Sasada 2019-10-20 05:21:04 UTC

caac5f777ae288b5982708b8690e712e1cae0cf6 の続きで拡張ライブラリの wrapper としての monitor.rb の MonitorMixin#mon_syncronize でブロック引数をそのまま委譲するかたちで Monitor#syncronize を呼ぶようにリファクタリングしています。

[a236eaa762] Koichi Sasada 2019-10-20 06:45:30 UTC

caac5f777ae288b5982708b8690e712e1cae0cf6 のさらに続きで MonitorMixin::ConditionVariable#wait の実装も C 拡張ライブラリのほうに移植しています。これも割り込み制御のため。

[9e07dfd253] Koichi Sasada 2019-10-20 07:16:54 UTC

configure の最後に利用した BASERUBY のバージョンを表示させるようにしています。