From: samuel@... Date: 2018-12-20T01:11:21+00:00 Subject: [ruby-core:90626] [Ruby trunk Feature#10344][Assigned] [PATCH] Implement Fiber#raise Issue #10344 has been updated by ioquatix (Samuel Williams). Status changed from Open to Assigned Assignee changed from ko1 (Koichi Sasada) to ioquatix (Samuel Williams) Target version set to next minor We will experiment and aim to merge this into 2.7 ---------------------------------------- Feature #10344: [PATCH] Implement Fiber#raise https://bugs.ruby-lang.org/issues/10344#change-75789 * Author: nome (Knut Franke) * Status: Assigned * Priority: Normal * Assignee: ioquatix (Samuel Williams) * Target version: next minor ---------------------------------------- While it is possible to implement this in pure Ruby (by wrapping Fiber.yield and Fiber#resume), this feels like a low-level feature that ought to be provided out of the box. Also, the C implementation is more straight-forward, and more efficient. Unfortunately, it is not quite possible to implement this as a C extension module (without resorting to wrappers again); cf. the change to make_passing_arg(). Example usage: ~~~ fib = Fiber.new do counter = 0 loop { counter += Fiber.yield } counter end fib.resume fib.resume 10 fib.resume 100 fib.raise StopIteration # => 110 ~~~ ---Files-------------------------------- 0001-Implement-Fiber-raise.patch (4.12 KB) 0001-Implement-Fiber-raise.patch (3.51 KB) 0001-Implement-Fiber-raise-in-ext-fiber.patch (3.6 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: