Repository navigation
Update the embedded library to swoole/library 6.2.x (3892f45) - #6257
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## 6.2 #6257 +/- ##
==========================================
+ Coverage 85.48% 85.57% +0.08%
==========================================
Files 112 112
Lines 17549 17566 +17
Branches 3094 3095 +1
==========================================
+ Hits 15002 15032 +30
+ Misses 2547 2534 -13 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
matyhtf
approved these changes
Sep 29, 2026
matyhtf
left a comment
Member
There was a problem hiding this comment.
Verified against swoole/library@3892f45: rebuilding with tools/build-library.php leaves the PR worktree completely clean, all embedded PHP sources pass the generator's syntax checks, and git diff --check is clean. The generated update is reproducible and appropriately scoped to the 6.2 library branch.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuild
ext-src/php_swoole_library.hviatools/build-library.phpfrom branch6.2.xof swoole/library (swoole/library@26e2e98 → swoole/library@3892f45).Library changes included
From the
6.2.4 (unreleased)section of swoole/library's CHANGELOG.md:Added:
\Swoole\Coroutine\Http2\MultiplexClient, an HTTP/2 client that multiplexes requests from many coroutines over one shared connection, reconnects on demand, and closes an idle connection after a configurable period (optionsheartbeat_check_intervalandheartbeat_idle_time) (by @tw2066).\Swoole\Database\RedisConfig::withAuth()now also accepts a[username, password]array for Redis ACL authentication (by @catchem88). A class extendingRedisConfigthat overrideswithAuth()or redeclares$authhas to widen itsstringtype tostring|array.CURLOPT_PREREQFUNCTIONoption in the coroutine curl handler; on PHP versions without the native constants, use\Swoole\Curl\CURLOPT_PREREQFUNCTION,\Swoole\Curl\CURL_PREREQFUNC_OKand\Swoole\Curl\CURL_PREREQFUNC_ABORT(by @lazerg).http2_max_headersserver option, with the constant\Swoole\Constant::OPTION_HTTP2_MAX_HEADERS; it takes effect on Swoole 6.3.0 and later (by @NathanFreeman).\Swoole\Database\MysqliProxy::inTransaction()andreset(), which report and forget the transaction state the proxy tracks.\Swoole\Database\MysqliPool::get()hands out a connection with that state reset.\Swoole\RemoteObject\Exception::getRemoteClass()andgetRemoteCode(), which give the class and the code of an exception thrown on the server.Changed:
\Swoole\Server\Helperuses the\Swoole\Constant::OPTION_*constants instead of string literals in its option tables and lookups.Paramsrecord encodes and decodes its parameters in linear time, about 2.5 and 8 times faster than before; the bytes produced and the parameters read are the same.\Swoole\ArrayObject::lastIndexOf()andremove()with$loopfind their keys in onearray_keys()call instead of walking the array in PHP, with the same results.\Swoole\StringObject::endsWith()usesstr_ends_with()and no longer scans the whole string, with the same results.Removed:
Fixed:
\Swoole\Coroutine\Serveraccept failures throughstart()anderrCode(by @binaryfire).\Swoole\RemoteObject\Client, present since 6.2.0, where every client was kept alive for the lifetime of the process (issue Every hooked dns_get_record()/network function leaks a Swoole\RemoteObject\Client (swoole_get_default_remote_object_client never memoises) #6191).\Swoole\RemoteObject\Client::getInstance()now returnsnullfor a client that is gone, and a client can no longer be cloned.false(commit).\Swoole\RemoteObject\Clientnow throws a\Swoole\RemoteObject\Exceptionon a response that does not unserialize.502 Invalid FastCGI Response.\Swoole\RemoteObject\Clientused from several coroutines at once ended the process with a fatal "Socket has already been bound to another coroutine"; calls through one client are now serialized.swoole_container_cpu_num()ignored the CPU quota of cgroup v2 containers.\mysqli_sql_exception.store_result(), where they returnedfalse.\Swoole\Database\MysqliStatementProxydid not re-bind thebind_result()variables correctly after a reconnect, and retriedfetch()on a statement that was prepared again but never executed.\Swoole\Database\MysqliStatementProxydid not recover from a second lost connection on the same statement.\Swoole\Database\PDOStatementProxyturned a connection lost while reading rows into an empty result, and did not recover from a second lost connection on the same statement. It now retriesexecute()only, and reports a lost connection in any other method.canceling statement due to conflict with recovery, and the PlanetScale PostgreSQL / pg_bouncer messages, in line with Laravel's list.\Swoole\Database\RedisPoolpassed theconnect()arguments in the wrong positions when only some of the connect timeout, retry interval and read timeout were configured.\Swoole\Coroutine\Servernever backed off when a coroutine could not be created for an accepted connection."0"was dropped as empty.TypeErroron the client when its code was not an integer, as with a\PDOException, and so did the server's own errors such as an invalid API key. Both now arrive as a\Swoole\RemoteObject\Exception.\Swoole\NameResolver\Nacos::getCluster()threw aTypeError, because Nacos reports the weight of a node as a float.\Swoole\ConnectionPool::close()failed with anErrorwhen called twice, andfill()on a closed pool made connections only to drop them.\Swoole\Database\PDOProxy:query()andprepare()failed with aTypeErroroutside the exception error mode.\Swoole\ArrayObjectandswoole_array_default_value()raised a deprecation on PHP 8.5 when given anullkey, which still stands for the empty string.prepare(query: ...), with the query passed by name, and could not prepare that statement again after a reconnect.\Swoole\Database\PDOStatementProxy: after a reconnect, a statement used the value a variable had whenbindParam()was called, not its present one, and no longer filled the variables ofbindColumn().\Swoole\Database\PDOStatementProxy::bindColumn()threw aTypeErrorwhen called without a type.Testing
6.2of swoole-src, on PHP 8.2 to 8.5, and runs the library's unit tests against the embedded copy on PHP 8.2 and 8.5.phpswoole/swooleimages of Swoole 6.2 with branch6.2of swoole-src compiled on top.🤖 Generated with Claude Code