From 182fb73c40351f917bf44626c44c1adb6cb1aa5a Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Mon, 30 Nov 2020 16:18:43 +0900 Subject: rb_ext_ractor_safe() to declare ractor-safe ext C extensions can violate the ractor-safety, so only ractor-safe C extensions (C methods) can run on non-main ractors. rb_ext_ractor_safe(true) declares that the successive defined methods are ractor-safe. Otherwiwze, defined methods checked they are invoked in main ractor and raise an error if invoked at non-main ractors. [Feature #17307] --- include/ruby/internal/intern/load.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include') diff --git a/include/ruby/internal/intern/load.h b/include/ruby/internal/intern/load.h index b4c42a0f54..f9ba542ded 100644 --- a/include/ruby/internal/intern/load.h +++ b/include/ruby/internal/intern/load.h @@ -34,6 +34,10 @@ void rb_provide(const char*); VALUE rb_f_require(VALUE, VALUE); VALUE rb_require_string(VALUE); +// extension configuration +void rb_ext_ractor_safe(bool flag); +#define RB_EXT_RACTOR_SAFE(f) rb_ext_ractor_safe(f) + RBIMPL_SYMBOL_EXPORT_END() #endif /* RBIMPL_INTERN_LOAD_H */ -- cgit v1.2.3