- Add support for PHP 8
- Drop support for PHP 7.0, 7.1, 7.2 and 7.3
- [FIX] Handle
fwrite()error conditions indicated by0return value (recoilphp/react#6)
This is the first stable release of recoil/recoil. There have been no changes
to the API since the 1.0.0-alpha.2 release.
- [NEW] Add
select()API operation
UPGRADE WITH CAUTION
As of this version, the recoil/recoil package only contains the
"reference kernel", which is an implementation of the kernel with no external
dependencies. As such, it can not be used to execute ReactPHP code.
The ReactPHP kernel is still available in the recoil/react package.
Libraries and applications should be developed against the interfaces and classes provided by recoil/api. The intent is to keep these interfaces as stable as possible across the various kernel implementations and versions.
- [BC] Moved the ReactPHP-based kernel to the recoil/react package
- [BC] Moved the public interfaces to the recoil/api package
- [BC] Moved kernel implementation details to the recoil/kernel package
- [BC] Revert addition of
Api::resume()andthrow()(added in 0.5.2) - [BC] Added
Strand::trace()andsetTrace()methods - [NEW]
Api::suspend()now accepts an optional terminator callback, which is invoked if the strand is terminated before it is resumed - [NEW] Added
StrandTraceinterface, a low-level strand observer to be used by debugging tools - [FIXED]
Strand::send()andthrow()no longer fail if the strand has already exited
- [NEW] Added
Api::resume()andthrow()to resume one strand from within another
- [NEW] Added a second callback parameter to
suspend()API method which is invoked when a suspended strand is terminated
UPGRADE WITH CAUTION
This is the first release that requires PHP 7. The internals have been rewritten from the ground up. Some features available in previous releases are no longer available as substitute functionality has not yet been added.
There are far too many changes to list here individually, however much of the kernel API remains the same.
- [BC] Channels and streams have been removed from the core package
- [BC]
Recoil::run()has been removed (seeReactKernel::start())
Kernel API changes:
- [BC]
kernel()has been removed - [BC]
eventLoop()is only available when usingReactKernel - [BC]
return_()has been removed, as generators can return values in PHP 7 - [BC]
throw_()has been removed - [BC]
finally_()has been removed - [BC]
noop()has been removed - [BC]
stop()has been removed - [BC]
select()now operates on PHP streams, rather than strands - [NEW] Added
read()andwrite() - [NEW] Added
callback() - [NEW] Added
link()andunlink() - [NEW] Added
adopt() - [NEW] Added
any(),some()andfirst()
This is the final release that will operate with PHP 5. In an effort to work towards a production ready 1.0 release, future releases will require PHP 7.
- [BC] Dropped
Interfacesuffix from interfaces - [BC] Renamed
ReadableStreamtoReadablePhpStream - [BC] Renamed
WritableStreamtoWritablePhpStream - [BC] Renamed
CoroutineAdaptortoStandardCoroutineAdaptor - [BC] Renamed
KernelApitoStandardKernelApi - [BC] Renamed
StrandtoStandardStrand - [BC] Renamed
StrandFactorytoStandardStrandFactory - [NEW] Added support for Guzzle promises
- [IMPROVED] The callback given to
Recoil::suspendis now optional
- [BC] Removed
StrandInterface::resume() - [NEW]
returnstatement can be used to return a value inside a coroutine (requires PHP 7) - [IMPROVED] Improved method documentation on
Recoilfacade (thanks @rjkip)
- [IMPROVED] Added support for cancellable promises
To faciliate several performance improvements the following backwards compatibility breaking changes have been introduced:
- [BC]
CoroutineInterfaceno longer implementsEventEmitterInterface- several unused events were fired every time a coroutine was called - [BC]
Recoil::finalize()now only works with generator based coroutines - this was previously implemented using the aforementioned events
- Initial release