The combined changelog for all ReactPHP components.
This is a SECURITY release for the 1.x series of ReactPHP's HTTP component.
Security fix: This release fixes a high severity security issue in ReactPHP's HTTP client and server components
that affects all versions between v0.6.0 and v1.11.0. All users are encouraged to upgrade immediately.
(GHSA-x424-64qh-5j54 reported by @jsifuentes and @raiFork and fixed by @jsifuentes and @clue)
Security fix: This release fixes a high severity security issue in ReactPHP's HTTP client component
that affects all versions between v1.0.0 and v1.11.0. All users are encouraged to upgrade immediately.
(GHSA-g4f2-2pf3-2pwj reported by @EQSTLab and fixed by @WyriHaximus)
Improve test suite PHP 8.4 and 8.5 compatibility.
(#546, #547 and #551 by @WyriHaximus)
Just in time for the holidays, we are happy to announce the release of v0.6.7! 🎄🎉
This is a compatibility release that contains backported features from the 0.7.x branch.
Once v0.7 is released, it will be the way forward for this project.
Feature: Improve PHP 8.5+ support by avoiding deprecated setAccessible() calls.
(#325 by @W0rma and #330 by @WyriHaximus)
Improve test suite and update test environment.
(#326 and #330 by @WyriHaximus)
Feature: Improve PHP 8.5+ support by avoiding deprecated setAccessible() calls.
(#238 by @W0rma and #243 by @WyriHaximus)
Improve test suite, update test environment and increase query count in excessive TCP query tests.
(#239 and #240 by @WyriHaximus)
Feature: Improve PHP 8.5+ support by avoiding deprecated switch case syntax.
(#264 by @theodorejb)
Feature: Run tests on PHP 8.4 and update test environment.
(#271 by @clue)
This is a compatibility release that contains backported features from the 0.7.x branch.
Once v0.7 is released, it will be the way forward for this project.
Feature: Improve PHP 8.4+ support by avoiding implicitly nullable types.
(#114 by @clue)
Improve test suite to run tests on latest PHP versions and report failed assertions.
(#113 by @clue)
Feature: Improve PHP 8.4+ support by avoiding implicitly nullable types.
(#537 by @clue)
Feature: Allow underscore character in Uri host.
(#524 by @lulhum)
Improve test suite to fix expected error code when ext-sockets is not enabled.
(#539 by @WyriHaximus)
Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations.
(#179 by @clue)
Fix: Fix drain event of ThroughStream to handle potential race condition.
(#171 by @clue)
Feature: Improve performance by avoiding unneeded references in FiberMap.
(#88 by @clue)
Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations.
(#87 by @clue)
Improve type safety for test environment.
(#86 by @SimonFrings)
Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations.
(#260 by @Ayesh)
Feature: Include previous exceptions when reporting unhandled promise rejections.
(#262 by @clue)
Update test suite to improve PHP 8.4+ support.
(#261 by @SimonFrings)
Feature: Add new PSR-7 implementation and remove dated RingCentral PSR-7 dependency.
(#518, #519, #520 and #522 by @clue)
This changeset allows us to maintain our own PSR-7 implementation and reduce
dependencies on external projects. It also improves performance slightly and
does not otherwise affect our public API. If you want to explicitly install
the old RingCentral PSR-7 dependency, you can still install it like this:
composer require ringcentral/psr7Feature: Add new Uri class for new PSR-7 implementation.
(#521 by @clue)
Feature: Validate outgoing HTTP message headers and reject invalid messages.
(#523 by @clue)
Fix: Fix HTTP client to omit Transfer-Encoding: chunked when streaming empty request body.
(#516 by @clue)
Fix: Ensure connection close handler is cleaned up for each request.
(#515 by @WyriHaximus)
Update test suite and avoid unhandled promise rejections.
(#501 and #502 by @clue)
Feature: Full PHP 8.3 compatibility.
(#217 by @sergiy-petrov)
Update test environment and avoid unhandled promise rejections.
(#215, #216 and #218 by @clue)
Feature: Add Promise v3 template types for all public functions.
(#40 by @WyriHaximus and @clue)
All our public APIs now use Promise v3 template types to guide IDEs and static
analysis tools (like PHPStan), helping with proper type usage and improving
code quality:
assertType('bool', await(resolve(true)));
assertType('PromiseInterface<bool>', async(fn(): bool => true)());
assertType('PromiseInterface<bool>', coroutine(fn(): bool => true));Update test suite to avoid unhandled promise rejections.
(#79 by @clue)
This release contains backported features from the Async v4.2.0 release for those
not yet on PHP 8.1+. Async v3 provides a compatible API, but may not take advantage
of newer language features. We encourage upgrading to the latest version when possible.
Feature: Add Promise v3 template types for all public functions.
(#82 by @WyriHaximus and @clue)
All our public APIs now use Promise v3 template types to guide IDEs and static
analysis tools (like PHPStan), helping with proper type usage and improving
code quality:
assertType('bool', await(resolve(true)));
assertType('PromiseInterface<bool>', coroutine(fn(): bool => true));Update test suite to avoid unhandled promise rejections.
(#80 by @clue)
This is a compatibility release to ensure a smooth upgrade path for those not yet
on Async v4 or v3. We encourage upgrading to the latest version when possible, as
Async v4 will be the way forward for this project.
Feature: Describe all callable arguments with types for Promise and Deferred.
(#253 by @clue)
Update test suite and minor documentation improvements.
(#251 by @ondrejmirtes and #250 by @SQKo)
This is a compatibility release to ensure a smooth upgrade path for those not yet
on Promise v3. We encourage upgrading to the latest version when possible, as
Promise v3 will be the way forward for this project.
This is a compatibility release to ensure a smooth upgrade path for those not
yet on Promise v3. We encourage upgrading to the latest version when possible,
as Promise v3 will be the way forward for this project.
Improve test suite, use GitHub actions for continuous integration (CI) and
report failed assertions.
(#242 by @clue and #175, #184, #187, #216 and #218 by @SimonFrings)
Feature: Improve performance by using spl_object_id() on PHP 7.2+.
(#267 by @samsonasik)
Update tests for ext-uv on PHP 8+ and legacy PHP.
(#270 by @clue and #268 by @SimonFrings)
Feature: Improve Promise v3 support and use template types.
(#307 and #309 by @clue)
Improve test suite and update to collect all garbage cycles.
(#308 by @clue)
Feature: Use Promise v3 template types.
(#67 by @clue and #63 and #64 by @WyriHaximus)
Improve test suite, avoid unhandled promise rejections and report failed assertions.
(#66 and #62 by @clue and #61 by @WyriHaximus)
A major new feature release, see release announcement.
We'd like to emphasize that this component is production ready and battle-tested.
We plan to support all long-term support (LTS) releases for at least 24 months,
so you have a rock-solid foundation to build on top of.
The v3 release will be the way forward for this package. However, we will still
actively support v2 and v1 to provide a smooth upgrade path for those not yet
on the latest versions.
This update involves some major new features and a minor BC break over the
v2.0.0 release. We've tried hard to avoid BC breaks where possible and
minimize impact otherwise. We expect that most consumers of this package will be
affected by BC breaks, but updating should take no longer than a few minutes.
See below for more details:
BC break: PHP 8.1+ recommended, PHP 7.1+ required.
(#138 and #149 by @WyriHaximus)
Feature / BC break: The PromiseInterface now includes the functionality of the old and ExtendedPromiseInterface.CancellablePromiseInterface
Each promise now always includes the then(), catch(), finally() and cancel() methods.
The new catch() and finally() methods replace the deprecated and otherwise() methods which continue to exist for BC reasons.always()
The old and ExtendedPromiseInterface are no longer needed and have been removed as a consequence.CancellablePromiseInterface
(#75 by @jsor and #208 by @clue and @WyriHaximus)
// old (multiple interfaces may or may not be implemented)
assert($promise instanceof PromiseInterface);
assert(method_exists($promise, 'then'));
if ($promise instanceof ExtendedPromiseInterface) { assert(method_exists($promise, 'otherwise')); }
if ($promise instanceof ExtendedPromiseInterface) { assert(method_exists($promise, 'always')); }
if ($promise instanceof CancellablePromiseInterface) { assert(method_exists($promise, 'cancel')); }
// new (single PromiseInterface with all methods)
assert($promise instanceof PromiseInterface);
assert(method_exists($promise, 'then'));
assert(method_exists($promise, 'catch'));