All Versions
45
Latest Version
Avg Release Cycle
25 days
Latest Release
1228 days ago
Changelog History
Page 4
Changelog History
Page 4
-
v4.4.8 Changes
October 15, 2019๐ Deprecated
- ๐ Move async Swoole\Client to ext-async
โจ Enhancement
- ๐ Support Http\Response close (#2861) (@matyhtf)
๐ Support Process::daemon() redirection of IO (#2871) (@matyhtf)
๐ Fixed
- ๐ Fixed random bytes added to response status code (#2856) (@twose)
- ๐ Fixed naming conflicts with php gdbinit (2a2447e) (@shiguangqi)
- ๐ Fixed build without PCRE JIT on OSX (2a4c447) (@twose)
- ๐ Fixed Websocket\Server class entry of property declaration (1f197da) (@twose)
- ๐ Fixed coroutine bound error checker of Co\Http\Client (2619cdd) (@twose)
- ๐ Fixed gdb debugger in docker (ec81528) (@twose)
- ๐ Fixed MySQL close error (#2869) (@twose)
- ๐ Fixed Cygwin with process (#2868) (#2876) (@matyhtf)
- Fixed tls_host_name not found (d1968c2) (@twose)
- ๐ Fixed SSL renegotiation (#2847) (d8b87eb) (@matyhtf)
- ๐ Fixed HTTP2 client empty data (37b12d7) (775aefe) (@twose)
- ๐ Fixed send yield hang (#2885) (@matyhtf) (@twose)
- ๐ Fixed null fci_cache (#2881) (@twose)
- ๐ Fixed server mode on CYGWIN (#2868) (@matyhtf)
- ๐ Fixed select null (5e23dd9) (@twose)
- ๐ Fixed #2643 #2868 (#2888) (@matyhtf)
-
v4.4.7 Changes
September 25, 2019 -
v4.4.6 Changes
September 18, 2019โจ Enhancement
- Support max_request_grace (#2784) (#2808) (#2809) (@sshymko)
- โ Add SameSite Cookie (@2815) (@Yurunsoft)
- Support curl_multi_getcontent, CURLOPT_AUTOREFERER for curl hook, add ignore options (#2817) (@2818) (@2819) (@limingxinleo)
- Support CURLOPT_SSLVERSION and CURLINFO_HEADER_OUT (f2b4c93) (@matyhtf)
- AIO thread safe (@matyhtf)
- โก๏ธ Optimize numeric type conversion (aa20913) (@twose)
- Compatibly with diseval extension for library (8b7eb16) (@GXhua)
๐ Fixed
- ๐ Fixed missing http headers (#2786) (@doubaokun)
- ๐ฆ Defensive programming for signal callback (@twose)
- ๐ Fixed getProcess memory error (#2801) (@matyhtf)
- ๐ Fixed compilation on MacOS (@matyhtf)
- ๐ Fixed Coroutine\System methods (97c1444) (@twose)
- ๐ Fixed AIO thread task stuck (@matyhtf)
- Fixed HTTP2 HEADER_TABLE_SIZE (@twose)
- ๐ Fixed spurious waking of socket (d0b659a) (@matyhtf)
-
v4.4.5 Changes
August 30, 2019โจ Enhancement
- ๐ Better Reactor (@matyhtf)
- ๐ Better AIO (@twose)
- ๐ Better Redis (3608f4c) (@twose)
- ๐ Handle Empty upload files (#2779) (@sshymko)
- โ Add File uploads array parser (#2773) (@sshymko)
- ๐ Support PURGE (#2754) (#2764) (@sshymko)
- ๐ Allow HTTP methods like GETX POSTX PUTX etc (#2772) (@doubaokun)
- Reduce the default max_wait_time to 3 (ed5c838) (@twose)
๐ Fixed
- ๐ Fixed AIO memory error (@twose)
- ๐ Fixed compilation without zlib (f5a0336) (@twose)
- ๐ Fixed timeout param of stream (c827598) (@twose)
- ๐ Fixed missing http headers (#2789) (@doubaokun)
- ๐ Fixed client type (#2771) (@doubaokun)
-
v4.4.4 Changes
August 18, 2019โจ Enhancement
- Perfect array_walk for coroutine (#2740) (@twose)
- โ Add
Swoole\Constant
to replace string (@matyhtf) (@twose) - Add alias
Co::dnsLookup
ofswoole_async_dns_lookup_coro
(42293ef) (@matyhtf) - Expend default HTTP_FORM_KEYLEN to 512 (#2734) (@sshymko)
- ๐ Better dns resolver (c6deff1) (@matyhtf)
- ๐ Support HTTP PURGE (#2462) (@sshymko)
- Response 400 for bad request (#2751) (@twose)
- Decoupling sockets and reactor (internal) (@twose)
- โ Add Timer::set / Process->set / Process\Pool->set (@twose)
- ๐ Optional hugepage feature support for FreeBSD (#2757) (@devnexen)
๐ Fixed
- ๐ Fixed macOS not support extern thread_local () (@matyhtf)
- ๐ Fixed SSL dispatch (#2736) (@matyhtf)
- ๐ Fixed aio thread num (#2745) (@matyhtf)
- ๐ Fixed async_thread (#2747) (@matyhtf)
- ๐ Fixed Swoole\Client::select timeout (#2758) (@LeiZhang-Hunter)
- ๐ Fixed empty timer (#2749) (@twose)
- ๐ Fixed zlib decompression (#2762) (@twose)
-
v4.4.3 Changes
August 02, 2019โจ Enhancement
- ๐ Continue to maintain the Lock module (@matyhtf)
- โ Add zpopmin and zpopmax for Redis 5 (#2684) (@ruesin)
- โ Remove Http\Client global buffer in kernel (@twose)
- ๐ Support ppc arch (#2692) (@matyhtf)
- ๐ Support SSL context options for php_stream (#2717) (@twose)
- ๐ Support multi-threading (libswoole) (@matyhtf)
- ๐ Support SSL shutdown (#2717) (@twose)
๐ Fixed
- ๐ Fixed bug: call Request->rawContent/getData after Response->end (b989ba9) (@twose)
- ๐ Fixed OpenSSL protocol version check (c89e56f) (@twose)
- ๐ Fixed bug: MySQL double free when io error occurred (d62d543) (@twose)
- ๐ Fixed Http2 Client null pointer (537557d) (@twose)
- ๐ Fixed HTTP2 SSL settings (#2725) (@twose)
- ๐ Fixed DNS errno (@matyhtf)
- ๐ Fixed mem invalid read with fgets (5dc0670) (@matyhtf)
-
v4.4.2 Changes
July 26, 2019 -
v4.4.1 Changes
July 16, 2019โจ Enhancement
- ๐ Support send response with non-zero Content-length without body for HEAD request (#2690) (@matyhtf)
- ๐ Support
Coroutine::getPcid
by a random cid (#2669) (@huanghantao)
๐ Fixed
- Fixed
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER
(#2667) (@twose) - ๐ Fixed signal listener (#2675) (@matyhtf)
- ๐ Fixed MySQL incompatibility changes (#2674) (@twose)
- ๐ Fixed add event after server start (#2673) (@matyhtf)
- ๐ Fixed
static_handler
can not decode url (#2676) (@twose) - ๐ Fixed task worker warning (#2689) (@Yurunsoft)
- ๐ Fixed
Http\Request->rawContent
(#2682) (@twose) - ๐ Fixed invalid read when
Timer::clearAll
(6b0263b) (@matyhtf) - ๐ Fixed
Coroutine\Http\Client
send failed (432259d) (@twose)
-
v4.4.0 Changes
July 06, 2019Backward incompatible changes
- ๐ Consistent with
PHP
official, no longer supportsPHP7.0
(@matyhtf) - โ Remove the
Serialize
module, which is maintained in a separate ext-serialize extension. Reason: Due to frequent changes to thePHP
kernel, stability cannot be guaranteed - โ Remove the
PostgreSQL
module and maintain it in a separate ext-postgresql extension. Reason:PostgreSQL
uses asynchronous ways in the kernel and lacks the necessary unit tests to guarantee quality Runtime::enableCoroutine
is no longer automatically compatible with the internal and external environment of the Coroutine. Once enabled, all blocking operations must be called in the Coroutine (@matyhtf)Due to the introduction of the new
Coroutine\MySQL
client driver, the underlying design is more standardized, but there are some small downward incompatible changesCoroutine\MySQL->fetch/nextResult
is optimized for on-demand reads, which will trigger IO scheduling- When the
defer
attribute is on, the request ofstatement
needs to usestatement->recv
to receive the response - When the
defer/fetch_mode
feature is enabled, if there is unreceived data, a new request will be banned - Unlike asynchronous, the
connected
attribute is no longer updated based on events in real-time (It's not reliable) but is updated after theIO
operation fails
Coroutine\Http\Client->set_cookie_headers
no longer have key names (#2664) (@twose)
๐ Deprecated content
- The
Buffer
module will be discarded. Reason: It is highly replaceable and has low usage. It can be replaced byPHP
string orfopen("memory")
- ๐ The
Lock
module will be discarded. Reason for discarding: There may be problems with locking in the Coroutine. You can useChan
to implement the Lock of the Coroutine version - Since async
stream_socket_pair
is introduced, it is recommended to enable the hook by flagSWOOLE_HOOK_STREAM_FUNCTION
instead ofSWOOLE_HOOK_STREAM_SELECT
๐ New features
- โ Added Library, using pure
PHP
to write kernel functions instead ofC/C++
, providing the following features- Added high quality
PHP
moduleCoroutine\WaitGroup
(@twose) - Use the
PHP
code to implement the CURL hook, one-click to make the CURL non-blocking, currently the experimental feature, you need to callRuntime::enableCoroutine(SWOOLE_HOOK_CURL)
to open (@matyhtf) (@Yurunsoft) - Use
PHP
code to implementexec
/shell_exec
of Coroutine version (#2657) (@Yurunsoft) - When
RuntimeHook
is turned on, the functionarray_walk
,array_walk_recursive
will be replaced by the version of Swoole, which will solve the problem that the native function cannot be reentrant, but it will not be able to traverse object (@matyhtf) (@twose)
- Added high quality
- Added a new Coroutine Preemptive Scheduler to prevent the Coroutine from taking too long CPU time to cause other Coroutine to starve. Open the
swoole.enable_preemptive_scheduler = On
byphp.ini
. For details, see preemptive_scheduler (@shiguangqi) - โ Added
Timer::list()
to getTimer\Iterator
, which can traverse all timers,Timer\clearAll
clears all timers,Timer\info(int $id)
gets timer information,Timer::stats()
gets the global timer status (#2498) (@twose) - โ Added two methods
getOption
andsetOption
forCoroutine\Socket
(9d13c29) (@matyhtf) - โ Added
$master_pid
property andshutdown
method toProcess\Pool
(a1d6eaa) (@matyhtf) - โ Added the 4th parameter of the constructor of
Process\Pool
, when true, the underlying layer will automatically create the Coroutine in theonWorkerStart
callback (8ceb32c) (@matyhtf) - Support non-blocking
stream_socket_pair
in Runtime hook (#2546) (@matyhtf) - ๐ Added
static_handler_locations
setting ofHttp\Server
to set static file path (@matyhtf) - โ Added
Coroutine\Http\Client->setBasciAuth
method to automatically sendAuthorization
header (#2542) (@hongbshi) - โ Added
Coroutine\Http2\Client->ping
method (40041f6) (@shiguangqi) - ๐ Added
task_use_object
(#2659) (aa01317) (@twose)
โจ Enhancement
- ๐ New
Coroutine\MySQL\Client
driver (#2538) (@twose)- The underlying programming mode using
C++
and Coroutine (sync writing, async performance) - Support SSL connection (configure
['ssl' => true]
when connect) - Support request with large data (unlimited)
- Support response with large data (unlimited)
- Support
fetch
to read by line (nowfetch
is read on demand, data without fetch does not consume user memory) (#2106) - Support
nextResult
read on demand (ibid) - Optimized protocol parser
date
related type decimal precision support- Error code and information are consistent with
PDO
/mysqli
- The underlying programming mode using
Coroutine\Redis
compatibility mode, enabled by$redis->set(['compatibility_mode' => true])
, which can make the result ofhmGet/hGetAll/zRange/zRevRange/zRangeByScore/zRevRangeByScore
consistent with phpredis (#2529) (@caohao-php)- 0๏ธโฃ Now
100K
Coroutine are allowed to exist at the same time by default (c69d320) (@twose) - ๐ Support
bailout
(can exit the process correctly when a fatal error occurs in the Coroutine) (#2579) (@twose) Server
can display a friendly400/404/503
when error occurred (@matyhtf) (f3f2be9)Server
enablereload_async
andsend_yield
by default (#2555) (9d4a4c4) (@matyhtf)Server->onFinish
callback is in Coroutine (@twose)- 0๏ธโฃ
Coroutine\Http\Client
enablewebsocket_mask
by default
(c02f4f8) (@twose) - โฑ Scheduling operation of
Channel
outside the Coroutine is no longer allowed (519b604) (@twose) WebSocket\Server
will close the connection when the handshake fails (#2510) (@twose)- ๐ง Under the
Linux
, the dead parent process will automatically send a signal to kill the child process (4b833a3) (@matyhtf) - Memory optimization of
Socket->recv
(642a355) (@twose) - Floating point calculation optimization (#2572) (@tangl163)
- All built-in classes prohibit cloning/serializing/unseting-declared-properties (f9c974b) (@twose)
- โ
Server->bind
will generate a warning and return false whenuid
is more thanUINT32_MAX
- ๐ Support
PHP7.4
(#2506) (@twose)
๐ Fixed
- ๐ Fixed
getProcess
ofProcess\Pool
(#2522) (@matyhtf) - ๐ Fixed a bug that exceptions were ignored in some special cases (@twose)
- ๐ Fixed memory leak by timer after
fork
process (8f3abee) (@twose) - ๐ Fixed timezone on non-Linux systems (#2584) (@devnexen)
- Fixed
enable_coroutine=false
+task_enable_coroutine=true
(#2585) (@matyhtf) - ๐ Fixed Http2's trailer method can not output a empty value header (#2578) (@twose)
- ๐ Fixed
Coroutine\Http\Client->setCookies
memory error in special cases (#2644) (@Yurunsoft) - ๐ Fixed #2639 (#2656) (@mabu233)
- Fixed
arginfo_swoole_process_pool_getProcess
(#2658) (@mabu233) - ๐ Fixed
static_handler
does not support soft links (@matyhtf) - ๐ Fixed a bug (I don't know how to describe it) (22504dd) (@matyhtf)
- ๐ Fixed
Server->getClientInfo
error (#2639) (@matyhtf) - ๐ Fixed an illegal operation of the same Socket with multiple Coroutine operations (#2661) (@twose)
- ๐ Fixed swoole_table iterator coredump (#2663) (@mabu233)
โฑ Coroutine scheduler ?
- โ Added
Swoole\Coroutine\Scheduler
class as the entry for thecli
script, replacinggo() + Swoole\Event::wait()
โ Added
Swoole\Coroutine\Run
function to provide wrapper forSwoole\Coroutine\Scheduler
๐
go() + Swoole\Event::wait()
may be deprecated
Internal
- Continuous underlying code quality optimization work (@swoole)
- โ More unit tests, and use the assertion library swoole/assert based on webmozart/assert secondary development (@twose)
- ๐ Completely abolish the
Windows
support plan - ๐จ
Coroutine\Http2\Client
refactor (f64874c) (@matyhtf) - The faster callback function caller (@twose)
Experimental content
- May add
Coroutine\Server
andCoroutine\Http\Server
in5.0
- ๐ Consistent with
-
v4.4.0-beta
June 22, 2019