All Versions
45
Latest Version
Avg Release Cycle
25 days
Latest Release
1227 days ago

Changelog History
Page 4

  • v4.4.8 Changes

    October 15, 2019

    ๐Ÿ—„ Deprecated

    • ๐Ÿšš Move async Swoole\Client to ext-async

    โœจ Enhancement

    ๐Ÿ›  Fixed

  • v4.4.7 Changes

    September 25, 2019

    โœจ Enhancement

    • ๐Ÿ‘Œ Support thread context (9214411) (@matyhtf)
    • โš  Generate a warning if the channel has producers or consumers when the program exits (b9f37d9) (@twose)

    ๐Ÿ›  Fixed

  • v4.4.6 Changes

    September 18, 2019

    โœจ Enhancement

    ๐Ÿ›  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

    ๐Ÿ›  Fixed

  • 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 of swoole_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

  • 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

  • v4.4.2 Changes

    July 26, 2019

    โœจ Enhancement

    ๐Ÿ›  Fixed

  • 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

  • v4.4.0 Changes

    July 06, 2019

    Backward incompatible changes

    • ๐Ÿ‘ Consistent with PHP official, no longer supports PHP7.0 (@matyhtf)
    • โœ‚ Remove the Serialize module, which is maintained in a separate ext-serialize extension. Reason: Due to frequent changes to the PHP 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 changes

      • Coroutine\MySQL->fetch/nextResult is optimized for on-demand reads, which will trigger IO scheduling
      • When the defer attribute is on, the request of statement needs to use statement->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 the IO 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 by PHP string or fopen("memory")
    • ๐Ÿ”’ The Lock module will be discarded. Reason for discarding: There may be problems with locking in the Coroutine. You can use Chan to implement the Lock of the Coroutine version
    • Since async stream_socket_pair is introduced, it is recommended to enable the hook by flag SWOOLE_HOOK_STREAM_FUNCTION instead of SWOOLE_HOOK_STREAM_SELECT

    ๐Ÿ†• New features

    • โž• Added Library, using pure PHP to write kernel functions instead of C/C++, providing the following features
      • Added high quality PHP module Coroutine\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 call Runtime::enableCoroutine(SWOOLE_HOOK_CURL) to open (@matyhtf) (@Yurunsoft)
      • Use PHP code to implement exec/shell_exec of Coroutine version (#2657) (@Yurunsoft)
      • When RuntimeHook is turned on, the function array_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 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 by php.ini. For details, see preemptive_scheduler (@shiguangqi)
    • โž• Added Timer::list() to get Timer\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 and setOption for Coroutine\Socket (9d13c29) (@matyhtf)
    • โž• Added $master_pid property and shutdown method to Process\Pool (a1d6eaa) (@matyhtf)
    • โž• Added the 4th parameter of the constructor of Process\Pool, when true, the underlying layer will automatically create the Coroutine in the onWorkerStart callback (8ceb32c) (@matyhtf)
    • Support non-blocking stream_socket_pair in Runtime hook (#2546) (@matyhtf)
    • ๐Ÿ– Added static_handler_locations setting of Http\Server to set static file path (@matyhtf)
    • โž• Added Coroutine\Http\Client->setBasciAuth method to automatically send Authorization 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 (now fetch 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
    • Coroutine\Redis compatibility mode, enabled by $redis->set(['compatibility_mode' => true]), which can make the result of hmGet/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 friendly 400/404/503 when error occurred (@matyhtf) (f3f2be9)
    • Server enable reload_async and send_yield by default (#2555) (9d4a4c4) (@matyhtf)
    • Server->onFinish callback is in Coroutine (@twose)
    • 0๏ธโƒฃ Coroutine\Http\Client enable websocket_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 when uid is more than UINT32_MAX
    • ๐Ÿ‘Œ Support PHP7.4 (#2506) (@twose)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed getProcess of Process\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 the cli script, replacing go() + Swoole\Event::wait()
    • โž• Added Swoole\Coroutine\Run function to provide wrapper for Swoole\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 and Coroutine\Http\Server in 5.0
  • v4.4.0-beta

    June 22, 2019