Releases: amphp/amp
2.6.5
What's Changed
- Use
str_increment()to fix PHP 8.5 deprecation by @nicolas-grekas in #457
Full Changelog: v2.6.4...v2.6.5
3.1.1
What's Changed
- Improve
weakClosure()signature by @vudaltsov in #452 - Use
str_increment()to fix PHP 8.5 deprecation by @nicolas-grekas in #456
New Contributors
- @vudaltsov made their first contribution in #452
Full Changelog: v3.1.0...v3.1.1
3.1.0
What's Changed
- Add
Intervalby @trowski in #441 - Added a throwing
__unserializemethod toForbidSerializationto guard against malicious payloads unserializing to forbidden class instances.
New Contributors
- @gauthier-scano made their first contribution in #446
Full Changelog: v3.0.2...v3.1.0
3.0.2
What's Changed
- Changed
Closure(mixed...)annotation toClosure(...)to support PHPStan.
Full Changelog: v3.0.1...v3.0.2
3.0.1
What's Changed
- Fixed compatibility of
Amp\weakClosure()with changes made to closure names in PHP 8.4.
Full Changelog: v3.0.0...v3.0.1
2.6.4
2.6.3
What's Changed
- Fix typos by @krsriq in #396
- Make implicit nullable types explicit by @nicolas-grekas in #431
New Contributors
- @krsriq made their first contribution in #396
- @nicolas-grekas made their first contribution in #431
Full Changelog: v2.6.2...v2.6.3
3.0.0
Event Loop
Amp no longer ships its own event loop. It's now based on Revolt. Revolt\EventLoop is quite similar to Amp's previous Amp\Loop. A very important difference is using float $seconds instead of int $milliseconds for timers though!
Promises
Future is a replacement for the previous Promise.
There's no need for callbacks or yield anymore!
Its await() method is based on fibers and replaces generator based coroutines / Amp\Promise\wait().
- Renamed
Amp\DeferredtoAmp\DeferredFuture. - Removed
Amp\Promise\wait(): UseAmp\Future::await()instead, which can be called in any (nested) context unlike before. - Removed
Amp\call(): Remove the passed closure boilerplate and allyieldkeywords, interruption is handled via fibers now instead of generator coroutines. - Removed
Amp\asyncCall(): Replace invocations withAmp\async(), which starts a new fiber instead of using generators. - Removed
Amp\coroutine(): There's no direct replacement. - Removed
Amp\asyncCoroutine(): There's no direct replacement. - Removed
Amp\Promise\timeout():Future::await()accepts an optionalCancellation, which can be used as a replacement. - Removed
Amp\Promise\rethrow(): Unhandled errors are now automatically thrown into the event loop, so there's no need for that function anymore. - Unhandled errors can be ignored using
Future::ignore()if needed, but should usually be handled in some way. - Removed
Amp\Promise\wrap(): UseFuture::finally()instead. - Renamed
Amp\getCurrentTime()toAmp\now()returning the time in seconds instead of milliseconds. - Changed
Amp\delay()to accept the delay in seconds now instead of milliseconds. - Added
Amp\weakClosure()to allow a class to hold a self-referencing Closure without creating a circular reference that prevents automatic garbage collection. - Added
Amp\trapSignal()to await one or multiple signals.
Promise Combinators
Promise combinators have been renamed:
Amp\Promise\race()has been renamed toAmp\Future\awaitFirst()Amp\Promise\first()has been renamed toAmp\Future\awaitAny()Amp\Promise\some()has been renamed toAmp\Future\awaitAnyN()Amp\Promise\any()has been renamed toAmp\Future\awaitAll()Amp\Promise\all()has been renamed toAmp\Future\await()
CancellationToken
CancellationTokenhas been renamed toCancellation.CancellationTokenSourcehas been renamed toDeferredCancellation.NullCancellationTokenhas been renamed toNullCancellation.TimeoutCancellationTokenhas been renamed toTimeoutCancellation.CombinedCancellationTokenhas been renamed toCompositeCancellation.SignalCancellationhas been added.
Iterators
Iterators have been removed from amphp/amp as normal PHP iterators can be used with fibers now and there's no need for a separate API.
However, there's still some need for concurrent iterators, which is covered by the new amphp/pipeline library now.
Closable
Amp\Closable has been added as a new basic interface for closable resources such as streams or sockets.
Strict Types
Strict types now declared in all library files.
This will affect callbacks invoked within this library's code which use scalar types as parameters.
Functions used with Amp\async() are the most likely to be affected by this change — these functions will now be invoked within a strict-types context.
3.0.0 Beta 11
- Removed circular dependency on
amphp/phpunit-util(#408). - Added stack-trace of Future creation to
UnhandledFutureErrorwhich is defined only when assertions are enabled (#405). - Strict types now declared in all library files. This will affect callbacks invoked within this library's code which use scalar types as parameters. Functions used with
Amp\async()are the most likely to be affected by this change — these functions will now be invoked within a strict-types context.
3.0.0 Beta 10
What's Changed
- Allow GC of arguments during
async()closure execution (#395) - Support revolt 1.x, declare incompatibility with revolt 0.1.x
- Change
Future::ignore()to be a fluent interface (#403) - Improve template types
Full Changelog: v3.0.0-beta.9...v3.0.0-beta.10