1
0
mirror of https://github.com/danog/amp.git synced 2024-12-02 17:37:50 +01:00
amp/CHANGELOG.md

75 lines
3.6 KiB
Markdown
Raw Normal View History

2021-12-02 23:16:14 +01:00
## 3.x
2020-07-14 23:44:02 +02:00
2022-12-18 17:41:45 +01:00
### 3.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.
2020-07-14 23:44:02 +02:00
2021-12-02 23:16:14 +01:00
## 2.x
2020-07-14 23:44:02 +02:00
2021-12-02 23:16:14 +01:00
Under maintenance, see corresponding branch.
2020-07-14 23:44:02 +02:00
2021-12-02 23:16:14 +01:00
## 1.x
2020-04-19 17:54:21 +02:00
2021-12-02 23:16:14 +01:00
No longer maintained.
2020-04-19 17:54:21 +02:00
2021-12-02 23:16:14 +01:00
## 0.x
2020-04-19 17:54:21 +02:00
2021-12-02 23:16:14 +01:00
No longer maintained.