- [FIX] Handle
fwrite()
error conditions indicated by0
return 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
StrandTrace
interface, 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
Interface
suffix from interfaces - [BC] Renamed
ReadableStream
toReadablePhpStream
- [BC] Renamed
WritableStream
toWritablePhpStream
- [BC] Renamed
CoroutineAdaptor
toStandardCoroutineAdaptor
- [BC] Renamed
KernelApi
toStandardKernelApi
- [BC] Renamed
Strand
toStandardStrand
- [BC] Renamed
StrandFactory
toStandardStrandFactory
- [NEW] Added support for Guzzle promises
- [IMPROVED] The callback given to
Recoil::suspend
is now optional
- [BC] Removed
StrandInterface::resume()
- [NEW]
return
statement can be used to return a value inside a coroutine (requires PHP 7) - [IMPROVED] Improved method documentation on
Recoil
facade (thanks @rjkip)
- [IMPROVED] Added support for cancellable promises
To faciliate several performance improvements the following backwards compatibility breaking changes have been introduced:
- [BC]
CoroutineInterface
no 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