Skip to content

Tags: amphp/amp

Tags

Verified

This tag was signed with the committer’s verified signature.
trowski Aaron Piotrowski

Verified

This tag was signed with the committer’s verified signature.
trowski Aaron Piotrowski

Verified

This tag was signed with the committer’s verified signature.
trowski Aaron Piotrowski

Verified

This tag was signed with the committer’s verified signature.
kelunik Niklas Keller

Verified

This tag was signed with the committer’s verified signature.
kelunik Niklas Keller

v3.0.0

Verified

This tag was signed with the committer’s verified signature.
kelunik Niklas Keller
v3.0.0

Event Loop

Amp no longer ships its own event loop. It's now based on [Revolt](https://revolt.run). `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\Deferred` to `Amp\DeferredFuture`.
- Removed `Amp\Promise\wait()`: Use `Amp\Future::await()` instead, which can be called in any (nested) context unlike before.
- Removed `Amp\call()`: Remove the passed closure boilerplate and all `yield` keywords, interruption is handled via fibers now instead of generator coroutines.
- Removed `Amp\asyncCall()`: Replace invocations with `Amp\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 optional `Cancellation`, 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()`: Use `Future::finally()` instead.
- Renamed `Amp\getCurrentTime()` to `Amp\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 to `Amp\Future\awaitFirst()`
- `Amp\Promise\first()` has been renamed to `Amp\Future\awaitAny()`
- `Amp\Promise\some()` has been renamed to `Amp\Future\awaitAnyN()`
- `Amp\Promise\any()` has been renamed to `Amp\Future\awaitAll()`
- `Amp\Promise\all()` has been renamed to `Amp\Future\await()`

CancellationToken

- `CancellationToken` has been renamed to `Cancellation`.
- `CancellationTokenSource` has been renamed to `DeferredCancellation`.
- `NullCancellationToken` has been renamed to `NullCancellation`.
- `TimeoutCancellationToken` has been renamed to `TimeoutCancellation`.
- `CombinedCancellationToken` has been renamed to `CompositeCancellation`.
- `SignalCancellation` has 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`](https://github.com/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.

Verified

This tag was signed with the committer’s verified signature.
trowski Aaron Piotrowski

v3.0.0-beta.10

Verified

This tag was signed with the committer’s verified signature.
kelunik Niklas Keller
v3.0.0-beta.10

 - 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

v3.0.0-beta.9

Verified

This tag was signed with the committer’s verified signature.
kelunik Niklas Keller
v3.0.0-beta.9

 - Fixed circular reference in `async()` on exceptions (#394)
 - Removed deprecated combinator functions:
   - `Amp\Future\race` → `Amp\Future\awaitFirst`
   - `Amp\Future\any` → `Amp\Future\awaitAny`
   - `Amp\Future\some` → `Amp\Future\awaitAnyN`
   - `Amp\Future\settle` → `Amp\Future\awaitAll`
   - `Amp\Future\all` → `Amp\Future\await`

Verified

This tag was signed with the committer’s verified signature.
trowski Aaron Piotrowski