Ractor-safe
Ractor-unsafeは「そもそもnon main Ractorでは動かない」のでcompatible/incompatibleのほうが感覚的には正しい?
Ractor専用のアサーションを独自で用意していた
test-unitへ移行した
assert_ractor
別プロセスでRubyを立ち上げてその中でRactorを使ったコードを実行してその結果をアサートする なぜ?
Ractorを使うとRubyインタプリター内の実行モードが変わってRactorがいなくなってもそのモードは元に戻らず他のテストに影響があるから (3.0.0時点)
例
ractor def test_foo; end
Ractor関連のテストを最後に実行する機構
Ruby本体にはあまりない
Ractor対応のパッチ一覧(rm155が頑張っていた)
rb_ext_ractor_safe()で宣言でき、Ractor-safeであると示されたC拡張のみがnon main Ractorで実行できる
対応事例