rfc:fiber
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:fiber [2018/04/13 00:11] – lvht | rfc:fiber [2018/04/17 23:00] – lvht | ||
---|---|---|---|
Line 2: | Line 2: | ||
* Version: 0.1 | * Version: 0.1 | ||
* Date: 2017-09-13 | * Date: 2017-09-13 | ||
- | * Author: Haitao Lv, i@lvht.net | + | * Author: Haitao Lv<i@lvht.net>, Dmitry Stogov< |
* Status: Under Discussion | * Status: Under Discussion | ||
* First Published at: http:// | * First Published at: http:// | ||
Line 16: | Line 16: | ||
===== Proposal ===== | ===== Proposal ===== | ||
==== Why not make it as a Extension? ==== | ==== Why not make it as a Extension? ==== | ||
+ | Fiber is a major language feature, that allows significant benefits for asynchronous frameworks. Providing it as an optional extension, just doesn' | ||
+ | |||
==== Implementation ==== | ==== Implementation ==== | ||
+ | === Proposed API === | ||
<code php> | <code php> | ||
final class Fiber { | final class Fiber { | ||
Line 38: | Line 41: | ||
| | ||
/** | /** | ||
- | | + | |
| | ||
* If the fiber is not started, call resume will init | * If the fiber is not started, call resume will init | ||
Line 49: | Line 52: | ||
| | ||
/** | /** | ||
- | | + | |
+ | * | ||
+ | * You code can use try/catch to process error in the | ||
+ | * top level function call. Some framework make heavy | ||
+ | * usage of this feature. | ||
*/ | */ | ||
public function throw(Throwable $e) {} | public function throw(Throwable $e) {} | ||
- | |||
- | /** @throws \UnexpectedValueException */ | ||
- | public function __wakeup(): void {} | ||
- | |||
- | /** @throws \Error */ | ||
- | private function __clone() {} | ||
} | } | ||
</ | </ | ||
+ | === Usage Demo === | ||
+ | Here is the usage demo, | ||
<code php> | <code php> | ||
function sub1() | function sub1() | ||
Line 77: | Line 80: | ||
echo $fiber-> | echo $fiber-> | ||
</ | </ | ||
+ | |||
+ | === Implementation Detail === | ||
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== | ||
Line 138: | Line 143: | ||
===== Proposed Voting Choices ===== | ===== Proposed Voting Choices ===== | ||
- | Simple 50%+1 majority | + | 2/3+1 voting |
===== Patches and Tests ===== | ===== Patches and Tests ===== | ||
Line 160: | Line 165: | ||
===== Rejected Features ===== | ===== Rejected Features ===== | ||
- | * await/async keyword | ||
- | * dedicated Fiber::init API |
rfc/fiber.txt · Last modified: 2018/06/12 07:40 by krakjoe