Swoole PHP 4.6.5 released: full support of CURL native in coroutines, bug fixes and more

Swoole v4.6.5 is released with multiple enhancements and bug fixes.

Full support of CURL native

Before v4.6.5, curl_multi is not supported within the coroutine context. Start from v4.6.5, CURL native is fully supported within coroutine context.

You can execute multiple CURL clients concurrently with fibers within one process.

This is a major improvement, the libraries such as Guzzle HTTP client fully comply with Swoole coroutines. You can use Guzzle with Swoole coroutines without any change. All the downstream libraries such as AWS SDK for PHP and Laravel HTTP Client which are relying on Guzzle are also compliant with Swoole coroutines.

Other enhancements

Added method Swoole\Coroutine\WaitGroup->count().

List of changes in v4.6.5

New APIs
---
* Add count method to WaitGroup (swoole/library#100) (@sy-records) (@deminy)

Enhancement
---
* Supported native curl multi (#4093) (#4099) (#4101) (#4105) (#4113) (#4121) (swoole/[email protected]) (@matyhtf) (@sy-records) (@huanghantao)
* Allow array HTTP/2 headers, Bug fixed for #4133 (#4140)

Fixed
---
* Fixed NetBSD build (#4080) (@devnexen)
* Fixed OpenBSD build. (#4108) (@devnexen)
* Fixed illumos/solaris build, member aliases only (#4109) (@devnexen)
* Fixed heartbeat detection of SSL connection does not take effect when handshake is not completed (#4114) (@matyhtf)
* Fixed httpclient proxy with host and port (#4124) (@Yurunsoft)
* Fixed Swoole\Coroutine\Http::request, correct array to the client setting (swoole/library#103) (@leocavalcante) (@deminy)

Kernel
---
* Supported asm context on BSD (#4082) (@devnexen)
* Used arc4random_buf to implement getrandom under FreeBSD (#4096) (@devnexen)
* Make context darwin arm64: removes workaround and uses the label (#4127) (@devnexen)

Test
---
* Added build job for alpine (#4104) (@limingxinleo)

You can upgrade to Swoole v4.6.5 now:

pecl install openswoole