summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2024-07-06 11:16:44 +0900
committernagachika <nagachika@ruby-lang.org>2024-07-06 11:16:44 +0900
commit2f8f17e842666abb05ca522d6072c957fab0e12e (patch)
tree7717c3f08d115b76edf2d57226b8822ade526118
parent5141d72fde2528721663ddbc0554ac81ddc0656f (diff)
merge revision(s) 5d1702e01a36e11b183fe29ce10780a9b1a41cf0: [Backport #20414]
Enumerator should use a non-blocking fiber, change `rb_fiber_new` to be non-blocking by default. (#10481)
-rw-r--r--cont.c2
-rw-r--r--test/fiber/test_enumerator.rb8
-rw-r--r--version.h2
3 files changed, 10 insertions, 2 deletions
diff --git a/cont.c b/cont.c
index 68a8581c41..5375d1945b 100644
--- a/cont.c
+++ b/cont.c
@@ -2339,7 +2339,7 @@ rb_fiber_initialize(int argc, VALUE* argv, VALUE self)
VALUE
rb_fiber_new_storage(rb_block_call_func_t func, VALUE obj, VALUE storage)
{
- return fiber_initialize(fiber_alloc(rb_cFiber), rb_proc_new(func, obj), rb_fiber_pool_default(Qnil), 1, storage);
+ return fiber_initialize(fiber_alloc(rb_cFiber), rb_proc_new(func, obj), rb_fiber_pool_default(Qnil), 0, storage);
}
VALUE
diff --git a/test/fiber/test_enumerator.rb b/test/fiber/test_enumerator.rb
index 40f7d01725..e9410f925c 100644
--- a/test/fiber/test_enumerator.rb
+++ b/test/fiber/test_enumerator.rb
@@ -42,4 +42,12 @@ class TestFiberEnumerator < Test::Unit::TestCase
assert_predicate(i, :closed?)
assert_predicate(o, :closed?)
end
+
+ def enumerator_fiber_is_nonblocking
+ enumerator = Enumerator.new do |yielder|
+ yielder << Fiber.current.blocking?
+ end
+
+ assert_equal(false, enumerator.next)
+ end
end
diff --git a/version.h b/version.h
index 8b34b41fd9..3cf5906d33 100644
--- a/version.h
+++ b/version.h
@@ -11,7 +11,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 4
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 178
+#define RUBY_PATCHLEVEL 179
#include "ruby/version.h"
#include "ruby/internal/abi.h"