-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
80 additions
and
51 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -36,10 +36,10 @@ | |
<email>[email protected]</email> | ||
<active>yes</active> | ||
</developer> | ||
<date>2019-02-27</date> | ||
<time>18:00:00</time> | ||
<date>2019-03-05</date> | ||
<time>22:00:00</time> | ||
<version> | ||
<release>4.2.13</release> | ||
<release>4.3.0</release> | ||
<api>4.0</api> | ||
</version> | ||
<stability> | ||
|
@@ -48,59 +48,78 @@ | |
</stability> | ||
<license uri="http://www.apache.org/licenses/LICENSE-2.0.html">Apache2.0</license> | ||
<notes> | ||
Fixed (incompatible changes to be noted) | ||
New Features | ||
--- | ||
* Fixed a problem with Redis subscribe API design issues that caused duplicate subscriptions and subscription messages to be lost (see: [Subscription Mode Documentation](https://wiki.swoole.com/wiki/page/1041.html)) (#2305) (@windrunner414) | ||
* After using coroutine, you can no longer use the traditional connection multiplexing method such as `pconnect`, otherwise it will generate the problem of multi-coroutine handle the same Socket at the same time (7b1e786) (@shiguangqi) | ||
+ `Co::getContext` to get the coroutine context object ([RFC-1018](https://github.com/swoole/rfc-chinese/issues/45)) (@twose) | ||
+ `Co::getPcid` to get the parent coroutine ID ([RFC-1017](https://github.com/swoole/rfc-chinese/issues/41)) (@twose) | ||
+ `Co::exists` to know if a coroutine exists (@twose) | ||
+ Runtime Coroutine Hook supports `stream_select` (#2358) (@matyhtf) | ||
+ `max_wait_time` configuration support in BASE mode (#2282) (@shiguangqi) | ||
+ Support for one-way delivery tasks in the `Master/Manager/User` process ([RFC-1015](https://github.com/swoole/rfc-chinese/issues/38)) (@matyhtf) | ||
+ `Co\Socket` has two new APIs `recvAll` and `sendAll` to ensure complete receive/send data until completion or error (3700cbb) (@twose) | ||
+ `Process` supports the coroutine mode, please refer to ([Use Coroutine in Process](https://wiki.swoole.com/wiki/page/p-process_coro.html)) | ||
+ `Process->exportSocket` to export `Co\Socket` object (91d3621) (@matyhtf) | ||
+ Added `Server->getCallback` method to get the callback function of the specified name of the Server (@matyhtf) | ||
|
||
Enhancement | ||
--- | ||
+ Coroutine client re-supports full duplex (#2350) (@twosee) | ||
+ Support for secure cross-coroutine socket close (#2327) (@twosee) | ||
+ [RFC-1015](https://github.com/swoole/rfc-chinese/issues/38): Non-Worker Process Allows One-Way Delivery Task (222043a) (@matyhtf) | ||
+ `swoole_strerror` supports automatic convert system error code and Swoole error code to text, no need to specify parameters (c92f444) (@twosee) | ||
+ GDB trace tool supports viewing timer and reactor and hashmap information (2beb563) (@shiguangqi) | ||
+ When MOVED and ASK errors occurred when using Redis cluster, it will be automatically transferred to the corresponding server (#2299) (@windrunner414) | ||
+ Underlying code optimization, reducing memory copy when receiving packages (@matyhtf) | ||
+ Now calling `Co\Socket->close()` will immediately close the fd instead of waiting for the object to be destructed, after closed, use any other API will return a BADF error (consistent with the system API) (7a61963) (@Twosee) | ||
+ Some illegal parameters no longer cause fatal errors but generate a warning, because external parameters are sometimes uncontrollable and there is a certain risk (cd432d3) (@twosee) | ||
+ API compatibility enhancement after use coroutine mode (consistent with sync mode) (36687e8) (@matyhtf) | ||
+ Now swoole\src can be used as a C\C++ library at the same time (libswoole) | ||
* The default max number of connections is 100K (instead of 10K) now. If the system configuration is less than this number, use the system configuration first (3d2e387) (@twose) | ||
* Optimize the code for the `Timer` module, which now runs faster and accepts any number of arguments (#2347) (@twose) | ||
* `Co::stats` will show more information such as the number of events, the number of registered signals, the number of AIO tasks, etc. (@matyhtf) | ||
* `Co::getBackTrace` with no params is equivalent to `debug_backtrace` (@twose) | ||
* `Co::listCoroutines` is renamed to `Co::list`, but the original name is still reserved as an alias (Backward compatibility) (@twose) | ||
* `Table::exist`, `Server::exist` are renamed to `exists`, but the original name is still reserved as aliases (Backward compatibility) (@twose) | ||
* Redis will automatically authenticate and select the corresponding database when it is automatically reconnected. Add API: `getOptions`, `getAuth`, `getDBNum` (#2303) (fdac8a3) (@windrunner414 & @twose) | ||
* The default Socket buffer size on FreeBSD should be 2M (750a29c) (@twose) | ||
* `Server->stats` will show `worker_dispatch_count` which can get the number of requests submitted by the master to the current process. The number of requests in the queue can be got by `worker_dispatch_count - worker_request_count` (a353808) (@matyhtf) | ||
* Remove `Nghttp2` dependencies, no longer need to install it, configuring compilation parameters to open | ||
* Coroutines now have no max nesting level limitation (there are no real nesting relations between coroutines) (5458cbc) (@twose) | ||
* When the coroutine reaches the max limitation, the HTTP server will return a 503 error indicating that the service is temporarily unavailable (ebd377f) (@twose) | ||
* `defer` will now accept a parameter whose value is the return value at the end of the coroutine ([example](https://github.com/swoole/swoole-src/commit/ef978b3b432615b0f392958145d999f4e66584eb)) (@twose) | ||
|
||
Fixed | ||
--- | ||
* Fixed a possible coredump problem when there were a large number of objects before the extension load (4ddeedb) (@twosee) | ||
* Fixed coredump caused by attempting to clear the uninitialized DNS cache (#2288) (@mabu233) | ||
* When `task_enable_coroutine` is enabled, incorrectly calling `Server->finish` will trigger a fatal error (156ede6) (@twosee) | ||
* The php.ini configuration now displays `On` and `Off` correctly (instead of 0 and 1) (fe25982) (@twosee) | ||
* Fixed the `Co::getaddrinfo` parameter parser bug (#2273) (@mabu233) | ||
* Fixed fd error when using dispatch_func in UDP mode (#2306) (@mabu233) | ||
* Fixed the bug that dispatch_func does not work when specifying the function name, optimization for reducing memory copy (2bc49e4) (@twosee) | ||
* PHP warnings will no longer be triggered when the task expires (but the underlying log warning of swoole) (54eee5e) (@matyhtf) | ||
* Fixed enable coroutine states after process restarts (#2310) | ||
* Fixed the user process id property (#2313) (@junwei-qu) | ||
* Fixed the bug caused by incorrectly using the asynchronous API in the onStart callback in BASE mode (#2308) (@matyhtf) | ||
* Fixed incorrect manager_id in BASE mode (e18e013) (@matyhtf) | ||
* Fixed mmap using SEEK_END offset error (#2314) (@junwei-qu) | ||
* Fixed getSocket memory leak (ec8c4b2) (@twosee) | ||
* Optimized stream mode (47e0e9e) (@matyhtf) | ||
* Fixed BUG caused by connection multiplexing in sync client with KEEP mode under certain conditions (4c5728b) (@matyhtf) | ||
* Fixed an issue with `Atomic` multiple `wait` and `wakeup` overflows on MacOS (fbccb25) (@twosee) | ||
* Fixed the problem of opening the static_handler directory traversal attack risk, this is a convenient debugging feature, please do not use for production (#2323) (@windrunner414) | ||
* Fixed unchecked return value of futex_wait system call (#2351) (@junwei-qu) | ||
* Fixed bugs in Redis::ZAdd API parsing parameters, and fix other potential type conversion problems (#2321) (21e0497) (a0e612f) (00134cf) (f5a331e) (5f87f17) (a15f094) (67f3285) (808f578) (d118fe3) (5294473) (48f6790) (0105c7f) (ba6c8b4) (@matyhtf) | ||
* Fixed a third-party hook failure that could result from not using function pointers when sending data (89ba2da) (@matyhtf) | ||
* Fixed a memory leak in the Timer::tick method when passing arguments (7e15141) (@mabu233) | ||
* Fixed user process does not exit automatically (2901ce0) (@matyhtf) | ||
* Fixed read operation timeout config (a990540) (@shiguangqi) | ||
* Fixed the problem that the parameter timeout time does not take effect after the `Co\Client` open the package length check (#2346) (@twosee) | ||
* Server is no longer in the control of `buffer_output_size` in BASE mode, only limited by `socket_buffer_size` (#2326) (@matyhtf) | ||
* Fixed compilation error under FREEBSD (#2325) (@matyhtf) | ||
* Compatibility: When the Mysql escape method fails, it will return an empty string instead of FALSE | ||
* Fixed error when the task method passed a null argument (#2366) (@twose) | ||
* Fixed Http client send big data incomplete (#2360) (@twose) | ||
* Fixed the bug that unprocessed data in the buffer was lost when the TCP client used the eof protocol (a59ae39) (@twose) | ||
* Fixed async security of Server Reload (022f859) (@matyhtf) | ||
* Fixed the index value of the connection iterator (b066146) (@twose) | ||
* Fixed the bug that Set-Cookie special characters are too long to be outputed (#2368) (@mabu233 & @twose) | ||
* Fixed the bug that Http client did not decode the cookie (duplicated encode when sent) (069ca5d) (@twose) | ||
* Fixed Http client download with timeout lead to coredump (#2377) (@matyhtf & @twose) | ||
* Fixed `__call` and `call_user_func*` lead to coredump when calling MySQL client method (#2387) (@matyhtf) | ||
* Fixed coredump when Http2 client header name passed in a number (#2375) (@mabu233) | ||
* Fixed `Swoole\Event::dispatch` behavior not as expected (#2390) (@matyhtf) | ||
* Fixed `Socks5` proxy handshake failed (94ef96c) (@twose) | ||
* Fixed a memory read error caused by a connection failure in a low-version Linux kernel (5adf625) (@matyhtf & @twose) | ||
* Fixed the bug that the server used the timer in the BASE single-process mode not work (82eca13) (@twose) | ||
* Fixed compilation failure due to unstable ZendAPI in low-version (768b8a7) (@shiguangqi) | ||
* Fixed `EINVAL` when calling `sendto` (#2395) (@junwei) | ||
|
||
Others | ||
Unsupported | ||
--- | ||
* Swoole\Serialize is now supported for PHP73, but it is still marked as a deprecated feature | ||
- Create server or customs process after using async file IO are not allowed | ||
- Create server or customs process in coroutine are not allowed | ||
|
||
Removed | ||
--- | ||
- `Websocket\Server->exists` only shows if the connection exists. Please use the `isEstablished` method to get if it is a Websocket client. | ||
- Remove the `swoole.fast_serialize` configuration item | ||
- Removed the PHP Warning when the `Co\Client` method return failed | ||
- Remove the `Server->gzip` method | ||
- Remove `PicoHttpParser` support | ||
|
||
Remove async modules | ||
--- | ||
Remove all async modules, separate asynchronous extensions to [async-ext](https://github.com/swoole/async-ext): | ||
|
||
- Async functions | ||
- MySQL | ||
- Redis | ||
- Http\Client | ||
- Memory\Pool | ||
- MsgQueue | ||
- RingQueue | ||
</notes> | ||
<contents> | ||
<dir name="/"> | ||
|
@@ -798,7 +817,6 @@ | |
<file role="test" name="tests/swoole_coroutine/co_with_args.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/coro_stats.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/current.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/deep.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/defer/defer.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/defer/defer_close.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/defer/defer_exception.phpt" /> | ||
|
@@ -820,6 +838,7 @@ | |
<file role="test" name="tests/swoole_coroutine/forbidden_case/array_map.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/forbidden_case/call_user.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/forbidden_case/invoke.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/getContext.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/getPcid.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/gethostbyname.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/list_and_backtrace.phpt" /> | ||
|
@@ -829,6 +848,8 @@ | |
<file role="test" name="tests/swoole_coroutine/nested3.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/nested_empty.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/nested_uid.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/new_process.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/new_server.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/no_inline_func.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/output/create.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/output/in_nested_co.phpt" /> | ||
|
@@ -839,6 +860,7 @@ | |
<file role="test" name="tests/swoole_coroutine/parallel3.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/pdo_error_handing.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/private_access.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/resume_loop.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/scheduler.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/swoole_async_dns_lookup_coro.phpt" /> | ||
<file role="test" name="tests/swoole_coroutine/use_process.phpt" /> | ||
|
@@ -1011,6 +1033,7 @@ | |
<file role="test" name="tests/swoole_http_server/form_data_with_charset.phpt" /> | ||
<file role="test" name="tests/swoole_http_server/issue_2360.phpt" /> | ||
<file role="test" name="tests/swoole_http_server/large_url.phpt" /> | ||
<file role="test" name="tests/swoole_http_server/max_coro_num.phpt" /> | ||
<file role="test" name="tests/swoole_http_server/mixed_server.phpt" /> | ||
<file role="test" name="tests/swoole_http_server/no_compression.phpt" /> | ||
<file role="test" name="tests/swoole_http_server/pipeline.phpt" /> | ||
|
@@ -1203,6 +1226,7 @@ | |
<file role="test" name="tests/swoole_server/bug_1864.phpt" /> | ||
<file role="test" name="tests/swoole_server/bug_2308.phpt" /> | ||
<file role="test" name="tests/swoole_server/bug_2313.phpt" /> | ||
<file role="test" name="tests/swoole_server/bug_aio.phpt" /> | ||
<file role="test" name="tests/swoole_server/connections.phpt" /> | ||
<file role="test" name="tests/swoole_server/dispatch_by_stream.phpt" /> | ||
<file role="test" name="tests/swoole_server/dispatch_func.phpt" /> | ||
|
@@ -1224,6 +1248,7 @@ | |
<file role="test" name="tests/swoole_server/heartbeat.phpt" /> | ||
<file role="test" name="tests/swoole_server/heartbeat_true.phpt" /> | ||
<file role="test" name="tests/swoole_server/heartbeat_with_base.phpt" /> | ||
<file role="test" name="tests/swoole_server/invalid_fd.phpt" /> | ||
<file role="test" name="tests/swoole_server/kill_user_process_01.phpt" /> | ||
<file role="test" name="tests/swoole_server/kill_user_process_02.phpt" /> | ||
<file role="test" name="tests/swoole_server/kill_worker_01.phpt" /> | ||
|
@@ -1265,6 +1290,7 @@ | |
<file role="test" name="tests/swoole_server/task/task_callback.phpt" /> | ||
<file role="test" name="tests/swoole_server/task/task_co.phpt" /> | ||
<file role="test" name="tests/swoole_server/task/task_enable_coroutine.phpt" /> | ||
<file role="test" name="tests/swoole_server/task/task_enable_coroutine_return.phpt" /> | ||
<file role="test" name="tests/swoole_server/task/task_in_manager.phpt" /> | ||
<file role="test" name="tests/swoole_server/task/task_in_master.phpt" /> | ||
<file role="test" name="tests/swoole_server/task/task_in_task_worker.phpt" /> | ||
|
@@ -1291,9 +1317,11 @@ | |
<file role="test" name="tests/swoole_server_port/sub_handshake.phpt" /> | ||
<file role="test" name="tests/swoole_server_port/tcp_eof.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/accept.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/all.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/closed.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/complete_test.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/concurrency.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/fd.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/getSocket.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/getsockname.phpt" /> | ||
<file role="test" name="tests/swoole_socket_coro/recv_timeout.phpt" /> | ||
|
@@ -1315,6 +1343,7 @@ | |
<file role="test" name="tests/swoole_timer/greater_than_0.phpt" /> | ||
<file role="test" name="tests/swoole_timer/manager.phpt" /> | ||
<file role="test" name="tests/swoole_timer/master.phpt" /> | ||
<file role="test" name="tests/swoole_timer/master_base.phpt" /> | ||
<file role="test" name="tests/swoole_timer/next_round.phpt" /> | ||
<file role="test" name="tests/swoole_timer/swoole_timer_after.phpt" /> | ||
<file role="test" name="tests/swoole_timer/task_worker.phpt" /> | ||
|