1
0
mirror of https://github.com/danog/amp.git synced 2024-11-27 04:24:42 +01:00
amp/CHANGELOG.md
2014-08-01 15:37:02 -04:00

126 lines
3.6 KiB
Markdown

### master
- none
v0.10.0
-------
- Added *functions.php* API for reactor use in procedural and functional code.
- `ReactoryFactory::select()` is now a static singleton method. Single-threaded code should never
use multiple event loops. This change is made to ease `Reactor` procurement and minimize bugs
from the existence of multiple `Reactor` instances in the same thread. It is *NOT*, however, an
excuse to forego dependency injection. Do not abuse the global nature of the event loop. Lazy
injection is fine, but laziness on your part as a programmer is not.
> **BC BREAKS:**
- The `ReactorFactory::__invoke()` magic method has been removed. Any code relying on it must migrate
references to `ReactoryFactory::select()`
v0.9.0
------
- Reactor instance now passed to optional $onStart callbacks when `Reactor::run()` is called.
- Add new libuv reactor support (`UvReactor`) via the [php-uv extension](https://github.com/chobie/php-uv).
The php-uv extension must be built [against commit 75fd2ff591](https://github.com/chobie/php-uv/commit/75fd2ff591de2d3571985437de4465dfe8687753) or newer.
- Add `Reactor::watchStream()` alternative for IO watching. The `$flags` bitmask
paves the way for additional option specs in the libuv reactor without needlessly complicating the
interface.
- Internal watcher IDs now increment from zero instead of PHP_INT_MAX*-1
> **NO BC BREAKS**
#### v0.8.1
- Fix bug preventing `NativeReactor` from relinquishing control when no timers or
stream watchers exist.
- Fix broken `Reactor::at` millisecond resolution.
v0.8.0
------
- Add new `SignalReactor` for capturing and reacting to POSIX signals
- `LibeventReactor` now implements `SignalReactor`
- Remove all concurrency primitives (moved to new After repo)
> **BC BREAKS**:
- Any existing code relying on the Future/Promise/etc concurrency primitives must
now use the separate After repo as things files are no longer included with Alert.
#### v0.7.1
- `PromiseGroup` now transparently succeeds instead of throwing on empty futures array
- `stream_select()` errors suppressed in `NativeReactor` to silence errors on signal interrupts
v0.7.0
------
- `Future` is now an interface
- Add `Unresolved` as the default pending `Future` (`Promise->getFuture()`)
- Add immutable resolved `Failure` and `Success` futures
v0.6.0
------
- Time intervals are now expected in milliseconds and not seconds.
- Cleaned up unit tests
> **BC BREAKS**:
- Existing interval and delay times must be multiplied x 1000 to retain the same behavior.
v0.5.0
------
- Pare down the Promise/Future APIs
- Minor performance improvements
> **BC BREAKS**:
- Removed `Future::isPending()`
- Removed `Future::failed()`
- Removed `Future::onSuccess()`
- Removed `Future::onFailure()`
v0.4.0
------
- Altered watcher ID generation to avoid potential collisions
- Added optional $onStart callback parameter to Reactor::run() implementations
- Added Scala-like Future\Promise implementation
- Remove `Forkable` things originally added in v0.2.0 (unnecessary)
> **BC BREAKS**: *none*
v0.3.0
------
- Timed event callbacks now passed the reactor instance at param 2 upon invocation
- IO callbacks now passed the reactor instance at param 3 upon invocation
- Minor bugfixes/improvements
> **BC BREAKS**: *none*
v0.2.0
------
- Added `Alert\Forkable` interface for safely forking event reactors without resource corruption
- `Alert\LibeventReactor` now implements `Alert\Forkable`
> **BC BREAKS**: *none*
#### v0.1.2
- Addressed execution time drift in repeating native reactor alarms
#### v0.1.1
- Addressed infinite recursion in repeating callbacks
v0.1.0
------
- Initial tagged release