Releases: swoole/swoole-src
Releases Β· swoole/swoole-src
v4.5.3-alpha
feat: add http 1.1 trailer (#3485)
v4.5.2
Enhancement
- Support
Server->set(['log_rotation' => SWOOLE_LOG_ROTATION_DAILY])
to generate log file by date (#3311) (@matyhtf) - Support
swoole_async_set(['wait_signal' => true])
, reactor will not exit if there is signal listener (#3314) (@matyhtf) - Support
Server->sendfile
to send empty file (#3318) (@twose) - Improve worker idle warning (#3328) (@huanghantao)
- Improve configuration parser about Host (for HTTPS proxy) (#3343) (@twose)
- SSL use ecdh auto (#3316) (@matyhtf)
- SSL quiet shutdown when client close (#3342) (@huanghantao)
Fixed
- Fixed
Server->taskWait
on OSX (#3330) (@matyhtf) - Fixed MQTT protocol bug (8dbf506) (@guoxinhua) (2ae8eb3) (@twose)
- Fixed Content-Length int overflow (#3346) (@twose)
- Fixed packet length checker of PRI (#3348) (@twose)
- Fixed CURLOPT_POSTFIELDS (swoole/library@ed192f64) (@twose)
- Fixed the latest connection can not be released before accept new one (swoole/library@1ef79339) (@twose)
Kernel
v4.4.19
v4.5.1
Enhancement
- Support socket context bindto in hook (#3275) (#3278) (@CodingHuang)
- Support dns resolve in client::sendto (#3292) (@CodingHuang)
- Process->exit(0) will call os.exit directly (a732fe5) (@matyhtf)
- Support
log_date_format
to change format of log date,log_date_with_microseconds
to show micro-time in log (baf895b) (@matyhtf) - Support CURLOPT_CAINFO and CURLOPT_CAPATH (swoole/library#32) (@sy-records)
- Support CURLOPT_FORBID_REUSE (swoole/library#33) (@sy-records)
Fixed
- Fixed 32-bit build (#3276) (#3277) (@remicollet) (@twose)
- Fixed missing error info (#3280) (@CodingHuang)
- Fixed potential bugs in Table (d7b87b6) (@matyhtf)
- Fixed null ptr error in Server (defensive programming) (#3304) (#3305) (@twose)
- Fixed heartbeat timeout null ptr error (#3307) (@twose)
- Fixed mysqli options error (swoole/library#35) (@sy-records)
- Fixed response header parsing when there is no space after the colon in the response header (swoole/library#27) (@Yurunsoft)
Deprecated
- Mark Coroutine\System::(fread/fgets/fwrite) as deprecated, please use runtime hook instead (it should have been included in v4.5.0) (c7c9bb4) (@twose)
Kernel
v4.5.0
New APIs
- DTLS supports, we can build WebRTC applications now (#3188) (@matyhtf)
- Built-in
FastCGI
client, we can proxy HTTP request to FPM with one line of code now (swoole/library#17) (@twose) Co::wait
,Co::waitPid
,Co::waitSignal
(#3158) (@twose)Co::waitEvent
(#3197) (@twose)Co::set(['exit_condition' => $callable])
to exit condition of reactor (#2918) (#3012) (@twose)Co::getElapsed
to get the coroutine elapsed time (#3162) (@doubaokun)Socket::checkLiveness
,Socket::peek
(#3057) (@twose)Socket->setProtocol(['open_fastcgi_protocol' => $bool])
(#3103) (@twose)Server::get(Master|Manager|Worker)Pid
,Server::getWorkerId
(#2793) (#3019) (@matyhtf)Server::getWorkerStatus
(SWOOLE_WORKER_BUSY, SWOOLE_WORKER_IDLE) (#3225) (@matyhtf)Server->on('beforeReload', $callable)
andServer->on('afterReload', $callable)
(Server reload event on manager process) (#3130) (@huanghantao)Http\Server
supporthttp_index_files
andhttp_autoindex
with static handler (#3171) (@huanghantao)Http2\Client->read(float $timeout = -1)
, support Coroutine\HTTP2\Client read more than once (#3011) (#3117) (@twose)Http\Request->getContent
(alias of rawContent) (#3128) (@huanghantao)swoole_mime_type_(add|set|delete|get|exists)
(mime APIs) (#3134) (@twose)
Enhancement
- Optimize memory-copy between master and worker (4x faster) (#3075) (#3087) (@huanghantao)
- Optimize websocket dispatch (1x faster) (#3076) (@matyhtf)
- Optimize memory-copy in websocket_construct_frame (1x faster) (#3097) (@matyhtf)
- Optimize SSL validation (#3226) (@matyhtf)
- Separate SSL accept and SSL handshake (#3214) (@twose)
- Support MIPS (#3196) (@ekongyun)
- Resolve the domain name when use udp coroutine client (#3236) (#3239) (@huanghantao)
- Do not close stdout and stderr (show error logs after shutdown) (#3249) (@twose)
- Support some common options for Coroutine\Http\Server (#3257) (@twose)
- Support set cookies when websocket handshake (#3270) (#3272) (@twose)
- Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
- Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
- Support CURLOPT_SSLCERTTYPE, CURLOPT_SSLCERT, CURLOPT_SSLKEYTYPE, CURLOPT_SSLKEY (swoole/library#22) (@sy-records)
- Support CURLOPT_HTTPGET (swoole/library@d730bd08) (@shiguangqi)
Remove
Kernel
- New C++ API:
coroutine::async
with lambda (#3127) (@matyhtf) - Refactor event API and reactor fd to swSocket (#3030) (@matyhtf)
- Convert all source files to C++ (#3030) (71f987f) (@matyhtf)
- Code optimizations (#3063) (#3067) (#3115) (#3135) (#3138) (#3139) (#3151) (#3168) (@huanghantao)
- Code optimization for header files (#3051) (@matyhtf)
- Refactor
enable_reuse_port
option (#3192) (@matyhtf) - Reactor Socket API (#3193) (@matyhtf)
- Reduce one system call (3b5aa85) (@matyhtf)
- Remove swServerGS::now (#3152) (@huanghantao)
- Improve protocol setter (#3108) (@twose)
- Use the Better way to init C object on stack (#3069) (@twose)
- Use type
uchar
for bit field (#3071) (@twose) - Support parallel test (#3215) (@twose)
Fixed
v4.4.18
Enhancement
- Resolve the domain name when use udp coroutine client (#3236) (#3239) (@huanghantao)
- Do not close stdout and stderr (show error logs after shutdown) (#3249) (@twose)
- Support some common options for Coroutine\Http\Server (#3257) (@twose)
- Support set cookies when websocket handshake (#3270) (#3272) (@twose)
- Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
- Support CURLOPT_SSLCERTTYPE, CURLOPT_SSLCERT, CURLOPT_SSLKEYTYPE, CURLOPT_SSLKEY (swoole/library#22) (@sy-records)
- Support CURLOPT_HTTPGET (swoole/library@d730bd08) (@shiguangqi)
- Compatible with different versions of Redis extension as much as possible (swoole/library#24) (@twose)
- Disable Cloning of Database Proxy Objects (swoole/library#23) (@deminy)
Fixed
- Fixed SSL handshake failure (dc5ac29) (@twose)
- Fixed memory error when generate error message (#3229) (@twose)
- Fixed empty proxy authorization info (#3243) (@twose)
- Fixed channel unreal memory leak (#3260) (@twose)
- Fixed memory leak of Co\Http\Server (#3271) (@twose)
- Fixed
ConnectionPool->fill
(swoole/library#18) (@NHZEX) - Fixed use new client for the redirection requests (swoole/library#21) (@doubaokun)
- Fixed null socket error in ioException (swoole/library@4d15a4c3) (@twose)
- Fixed ConnectionPool@put when error happens (swoole/library#25) (@sinute)
- Fixed mysqli write_property error (swoole/library#26) (@twose)
v4.5.0RC1
New APIs
DTLS
supports, we can build WebRTC applications now (#3188) (@matyhtf)- Built-in
FastCGI
client, we can proxy HTTP request to FPM with one line of code now (swoole/library#17) (@twose) Co::wait
,Co::waitPid
,Co::waitSignal
(#3158) (@twose)Co::waitEvent
(#3197) (@twose)Co::set(['exit_condition' => $callable])
to set exit condition of reactor (#2918) (#3012) (@twose)Co::getElapsed
to get the coroutine elapsed time (#3162) (@doubaokun)Socket::checkLiveness
,Socket::peek
(#3057) (@twose)Socket->setProtocol(['open_fastcgi_protocol' => $bool])
(#3103) (@twose)Server::getInstance
,Server::get(Master|Manager|Worker)Pid
,Server::getWorkerId
(#2793) (#3019) (@matyhtf)Server::getWorkerStatus
(SWOOLE_WORKER_BUSY, SWOOLE_WORKER_IDLE) (#3225) (@matyhtf)Server->on('beforeReload', $callable)
andServer->on('afterReload', $callable)
(Server reload event on manager process) (#3130) (@huanghantao)Http\Server
supporthttp_index_files
andhttp_autoindex
with static handler (#3171) (@huanghantao)Http2\Client->read(float $timeout = -1)
, support Coroutine\HTTP2\Client read more than once (#3011) (#3117) (@twose)Http\Request->getContent
(alias of rawContent) (#3128) (@huanghantao)swoole_mime_type_(add|set|delete|get|exists)
(mime APIs) (#3134) (@twose)
Enhancement
- Optimize memory-copy between master and worker (4x faster) (#3075) (#3087) (@huanghantao)
- Optimize websocket dispatch (1x faster) (#3076) (@matyhtf)
- Optimize memory-copy in websocket_construct_frame (1x faster) (#3097) (@matyhtf)
- Optimize SSL validation (#3226) (@matyhtf)
- Separate SSL accept and SSL handshake (#3214) (@twose)
- Support MIPS (#3196) (@ekongyun)
- Support CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
Remove
Kernel
- New C++ API:
coroutine::async
with lambda (#3127) (@matyhtf) - Refactor event API and reactor fd to swSocket (#3030) (@matyhtf)
- Convert all source files to C++ (#3030) (71f987f) (@matyhtf)
- Code optimizations (#3063) (#3067) (#3115) (#3135) (#3138) (#3139) (#3151) (#3168) (@huanghantao)
- Code optimization for header files (#3051) (@matyhtf)
- Refactor
enable_reuse_port
option (#3192) (@matyhtf) - Reactor Socket API (#3193) (@matyhtf)
- Reduce one system call (3b5aa85) (@matyhtf)
- Remove swServerGS::now (#3152) (@huanghantao)
- Improve protocol setter (#3108) (@twose)
- Use the Better way to init C object on stack (#3069) (@twose)
- Use type
uchar
for bit field (#3071) (@twose) - Support parallel test (#3215) (@twose)
Fixed
- Fixed
enable_delay_receive
(#3221) (#3224) (@matyhtf) - Fixed
ConnectionPool->fill
(swoole/library#18) (@NHZEX) - All other bug fix patches have already been merged into the v4.4.x branch, we will not reiterate them here
v4.4.17
Enhancement
- Improve SSL Server performance (#3077) (85a9a59) (@matyhtf)
- Remove SW_HTTP_HEADER_VALUE_SIZE, SW_HTTP_HEADER_BUFFER_SIZE (#3187) limitation (@twose)
- Support MIPS (#3196) (@ekongyun)
- Support CURLOPT_HTTPAUTH (swoole/library@570318be) (@twose)
Fixed
- Fixed behavior of package_length_func and memory leak (#3111) (@twose)
- Fixed HTTP 304 error (#3118) (#3120) (@twose)
- Fixed incorrect macro expansion (#3142) (@twose)
- Fixed OpenSSL function signature (#3154) (#3155) (@twose)
- Fixed SSL error msg (#3172) (@matyhtf) (@twose)
- Fixed PHP-7.4 compatibility (@twose) (@matyhtf)
- Fixed HTTP chunk length parser (19a1c71) (@twose)
- Fixed chunked multipart parser (3692d9d) (@twose)
- Fixed ZEND_ASSUME failed (fc0982b) (@twose)
- Fixed Socket address error (d72c5e3) (@twose)
- Fixed Socket get name (#3177) (#3179) (@matyhtf)
- Fixed static handler with empty file (#3182) (@twose)
- Fixed upload file handler on Coroutine\Http\Server (#3189) (#3191) (@twose)
- Fixed possible memory error on shutdown (44aef60) (@matyhtf)
- Fixed Server->heartbeat (#3203) (@matyhtf)
- Fixed reactor defer task (only tasks of the current round will be called) (#3207) (@twose)
- Fixed invalid write on immutable array (#3212) (@twose)
- Fixed double wait, improve error message (swoole/library@537a82e1) (@twose)
- Fixed empty header (keep same with cURL) (swoole/library@7c92ed5a) (@twose)
- Fixed non-IO methods error handler (swoole/library@f6997394) (@twose)
- Fixed wrong proxy header (swoole/library@5e94e5da) (@twose)
v4.4.16
Enhancement
- Now you can get Supported Versions of Swoole
- More friendly error messages (0412f44) (09a4883) (@twose)
- Prevent endless loops that may occur in some special systems (069a009) (@matyhtf)
- Add driver in PDOConfig (swoole/library#8) (@jcheron)
Fixed
- Fixed http2_session.default_ctx double free (bddbb9b) (@twose)
- Fixed uninitialized http_context (ce77c64) (@twose)
- Fixed typo in Table (may lead to memory errors) (db4eec1) (@twose)
- Fixed status error when kill USR2 and no set task_num (e437827) (@GXhua)
- Fixed incomplete raw-content of HTTP request (#3079) (#3085) (@hantaohuang)
- Fixed static handler (when the file content is empty, server should not respond 404) (#3084) (@Yurunsoft)
- Fixed http_compression_level not work (16f9274) (@twose)
- Fixed null pointer error of Coroutine HTTP2 Server caused by no handle (ed68098) (@twose)
- Fixed option socket_dontwait not work (2758937) (@matyhtf)
- Fixed double zend::eval (#3099) (@GXhua)
- Fixed HTTP2 Server null pointer error (respond after connection is closed) (#3110) (@twose)
- Fixed PDOStatementProxy::setFetchMode missing arguments (swoole/library#13) (@jcheron)
v4.4.15
Enhancement
- Bad websocket handshake request will respond 400 (fdc1cb6) (@twose)
- Disable accept when have too many connections (dd9fbf2) (@matyhtf)
- Binary security of package_eof (#3054) (@twose)
- Support HTTP chunked request (#3055) (@twose)
- Unified naming style and improve accessibility of Curl\Handler properties (library/curl) (@twose)
Fixed
- Fixed Http\Response->close (d30e326) (@twose)
- Fixed possible memory overflow (2212e09) (@twose)
- Fixed memory error when MSHUTDOWN (undestroyed reactor) (78d6dd7) (@twose)
- Fixed handler of event HUP (#3046) (@matyhtf) (@twose)
- Fixed exit code 1 (f982b81) (@matyhtf) (@twose) (@qiqizjl)
- Fixed missing "unhook curl_multi_getcontent" (7b2e960) (@twose)
- Fixed Coroutine HTTP2 Server memory error (d90eebe) (@twose)
- Fixed http_context_send_data (#3059) (@twose)
- Fixed send_yield in BASE mode (edbb654) (1b8096e) (@twose)
- Refactor HTTP2 Server to fix some bugs (#3061) (@twose)
- Fixed behaviour of CURLOPT_POSTFIELDS, CURLOPT_HTTPHEADER, curl_close (library/curl) (@twose)