From: nicholas.evans@...
Date: 2020-11-18T01:04:07+00:00
Subject: [ruby-core:100926] [Ruby master Feature#17331] Let Fiber#raise work with transferring fibers

Issue #17331 has been updated by nevans (Nicholas Evans).


We could also make this automatically determine whether the fiber is yielding or transferring and choose the appropriate fiber_switch approach. But transferring vs yielding makes a difference in where control is passed back to when the fiber exits. And this has a high likelihood of causing an immediate follow-up fiber switch (due to termination) back to--where??? return fiber??? last fiber in the root fiber resuming stack???--it feels like it makes at least as much sense to use an explicit arg here as it does to use different methods for resume and transfer. But I don't really mind making it implicit and automatic. :)

----------------------------------------
Feature #17331: Let Fiber#raise work with transferring fibers
https://bugs.ruby-lang.org/issues/17331#change-88576

* Author: nevans (Nicholas Evans)
* Status: Open
* Priority: Normal
----------------------------------------
This seems like a feature that would be just as useful for transferring fibers as it is for yielding fibers.

I'm using a kwarg, so this is not automatic; the caller must know how to handle the fiber.  If you call a yielding fiber with `transfer: true` or a transferring fiber without `transfer: true`, a `FiberError` will be raised.

```ruby
yielding_fiber.raise "message"
transferring_fiber.raise "message", transfer: true
```

Implementation: https://github.com/ruby/ruby/pull/3783



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>