Releases: amphp/amp
Releases · amphp/amp
2.2.1
2.2.0
2.1.2
- Fixed issue where the loop time in
NativeDriver
was not refreshed after waiting for I/O streams (#256) - Fixed compatibility issue of
NativeDriver
withpcntl_async_signals()
(#264) - A custom queue is now used for timers in
NativeDriver
to allow cancelled timers to be garbage collected immediately instead of after their original expiration time (#220) - Resolving a promise with an object that throws when destructed will now forward that exception to the event loop error handler (#271)
- Fixed loop time to support 32-bit systems (#252, #273)
2.1.1
2.1.0
2.0.7
- Fixed recording of stack traces for double resolution in case
AMP_DEBUG
was not set as environment variable, defaulting to0
now. (#217) Loop::unreference()
is ignored on invalid watchers now.- Invoke UV watchers in case no events or
UV_DISCONNECT
is indicated. - Ignore
Loop::$driver
not being set during shutdown, which might happen due to the unreliable shutdown order. (#212)
2.0.6
- Resolution methods are now hidden in the
Promise
returned fromDeferred::promise()
. Their exposure was an implementation detail and never promised by the return type ofDeferred::promise()
. - A named class is now used for promises, so you don't end up with an anonymous class in
var_dump()
and stack traces, which can be confusing.
2.0.5
- Fixed possible notices in
formatStacktrace()
. This is an internal API, but the notices might appear on certain stack traces when running withAMP_DEBUG=true
. - Fixed segfault with
ev
, see amphp/parallel-functions#3. - Dropped multiple definitions of
Deferred
andEmitter
. These were introduced as performance hack, but relied onzend.assertions
being disabled to change behavior, which is bad. The performance impact is believed to be rather low, because coroutines are used a lot more thanDeferred
in Amp v2.
2.0.4
2.0.3
Loop::set()
replaces the current driver with a dummy driver for the time ofgc_collect_cycles()
now. This allows cyclic references to be cleaned up properly before the new driver is set. Without such a fix, cyclic references might have been cleaned up later, e.g. cancelling their watcher IDs on the new loop, thereby cancelling the wrong watchers.- Promise combinator functions (
all()
,any()
,first()
,some()
) now preserve order of the given$promises
array argument.