From 29509f30df1c59782f883a28cc862366959da5f4 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Sun, 12 Jul 2026 09:03:10 +0200 Subject: [PATCH] Declare TypedData with RUBY_TYPED_THREAD_SAFE_FREE Available on Ruby 4.1: [Feature #22067] Ref: https://bugs.ruby-lang.org/issues/22067 When available this flag superseed RUBY_TYPED_FREE_IMMEDIATELY and allow parallel sweeping of the type. --- ext/stringio/stringio.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index 926c867..0829e10 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -116,6 +116,10 @@ strio_memsize(const void *p) return sizeof(struct StringIO); } +#ifndef RUBY_TYPED_THREAD_SAFE_FREE +#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY +#endif + static const rb_data_type_t strio_data_type = { "strio", { @@ -123,7 +127,7 @@ static const rb_data_type_t strio_data_type = { strio_free, strio_memsize, }, - 0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED + 0, 0, RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED }; #define check_strio(self) ((struct StringIO*)rb_check_typeddata((self), &strio_data_type))