release-date: 2024-07-22
「成功的关键在于我们对失败的反应。」 - ChatGPT
"The key to success is how we respond to failure." - ChatGPT
该版本主要修复了 cURL 在特定条件下会死循环的问题,并新增了日语版本的 README。
This version mainly fixes the issue of cURL getting stuck in an infinite loop under certain conditions, and adds a Japanese version of the README.
- Add FileSystem::scanDirRecursive() (b238947) (@twose)
- Japanese README (#252) (@eltociear)
- Fix cURL dead loop bug (libcat/libcat@0d68189e) (@twose)
- Fix strange hard code in builder (0fcf143) (@twose)
- Nothing removed
- Update swow_fs (44621bb) (@dixyes)
release-date: 2024-05-13
真正的快乐不是没有痛苦,而是能在痛苦中找到乐趣。 - ChatGPT
True joy is not about being without pain, but about finding pleasure in pain. - ChatGPT
这是一个修复版本。
- Nothing new
- Nothing enhanced
- Callable curl options should be nullable (682b4be) (@twose)
- Nothing removed
release-date: 2024-05-13
「没有最终的成功,也没有致命的失败,最可贵的是继续前进的勇气。」 - 温斯顿·丘吉尔
"Success is not final, failure is not fatal. It is the courage to continue that counts." - Winston Churchill
这是一个修复版本。
- Nothing new
- Nothing enhanced
- Fix flock on Windows (e1121c0) (@dixyes)
- Fix missing CURLM_RECURSIVE_API_CALL on curl < 7.59.0 (a92d70c) (@dixyes)
- Fix wrong parameter position of recvMessage() call (#240) (@assert6)
- Fix FCC implementation compatibility (46e7d3d) (@twose)
- Fix slow cURL when composer install (libcat/libcat@55959bf) (@twose)
- Fix incorrect nNumUsed of functions table (07cea2b) (@twose)
- Nothing removed
release-date: 2024-05-05
「优秀的项目获取 star,伟大的项目赢得人心。」 - Swow
"Excellent projects earn stars, great projects win hearts and minds." - Swow
版本亮点:
1、全新的 cURL 协程化支持,底层重构实现,覆盖各种边缘 cases;
2、完整包含 PHP cURL 实现,不再依赖 cURL 扩展,因此可适配所有运行环境;
3、Debugger 支持远程 telnet 调试、Psr7 Server 支持 HTTP chunked response。
- Brand new cURL full support!!! (9a44716) (@twose)
- Debugger support EOF Stream now! (2710c0e) (@twose)
- Support send HTTP chunked response (b185524) (@twose)
- Add Context and CoroutineContext (a16429d) (@twose)
- Support PHP 8.3 and PHP 8.4-dev (@twose)
- Add EventDriver example for HTTP Server (8521677) (@twose)
- Show server url in mixed server example (0520690) (@twose)
- Introduce polyfill file to fix PHP-8.4-dev deprecations (bf47c99) (@twose)
- Fix WebSocket parsing bug and add a test for it (bd9b93d) (@twose)
- Fix missing socket crypto options (99c502b) (@twose)
- Fix #235 (SSLv3 compilation error) (9e2c0fb) (@twose)
- Fix builder error when php-config is not configured (93fd794) (@twose)
- Fix example code (41da6e8) (@twose)
- Use maxHeaderLength for Buffer size and Fix construction order (9ac0e70) (@twose)
- Fix errors in tools (6243bb3) (@twose)
- We are no longer rely on cURL extension (e462ce2) (@twose)
- Remove unused clean_module_class_callback (a53184d) (@twose)
- Remove unused maxBufferSize things (d38ddce) (@twose)
- Some SSL fixes in libcat (@dixyes)
- Update swow_fs from php (b5c9654) (@dixyes)
- Update swow_fs rev anchors (49a91cc) (@dixyes)
- Update artifact actions (de65d57) (@dixyes)
- Support PHPUnit 11 (@twose)
- Support hook constants and cleanup modules (34ad07c) (@twose)
- Make blank-fixer smarter (177cbd0) (@twose)
- Fix -ssl not found error on macOS CI (57a0baa) (ccd28c2) (@twose)
release-date: 2023-12-10
「生活并不是等待暴风雨过去,而是学会如何在雨中跳舞。」- 维维安·格林
"Life isn't about waiting for the storm to pass. It's about learning how to dance in the rain." - Vivian Greene
- Fix SSL context not work (fb15f29) (libcat/libcat@bc6ec0a8) (@twose)
- Initialize in_autoload in runtime init (8fcdbd0) (@dixyes)
- Fix missing stream error info (232b509) (@twose)
release-date: 2023-12-03
「不要盯着时钟看,要做时钟所做的事情,继续前进。」 - 萨姆·莱文森
"Don't watch the clock; do what it does. Keep going." - Sam Levenson
- Add EventDriver for Psr7 Server (54cd3ab) (@twose)
- New API: Socket->open() (6bbcd89) (@twose)
- New API: stream_select_unlimited (231f580) (@twose)
- Support SSL security_level and alpn_protocols (8fdda59) (@twose)
- Support serialization for Buffer (206fb1b) (@twose)
- Support coroutine switch in autoload (f49445b) (@twose)
- Add lo_lseek64 weak symbol (f7cefee) (@dixyes)
- Add --enable-debug-log to the compilation options (ce6fb89) (@twose)
- Support disable Swow by
swow.enable=0
(7f46b5e) (@twose)
- Enhance showExecutedSourceLines() (addd0de) (@twose)
- Show SSL info in stream metadata (c12d1c9) (@twose)
- Improve
php --ri swow
output (393304f) (@twose) - Make parsedBody nullable (#202) (@limingxinleo)
- Support v2.0 for
psr/http-message
(#199) (@limingxinleo) - Handle SIGHUP signal in dontdie (#225) (@AuroraYolo)
- Add return type to recvMessage method (#224) (@AuroraYolo)
- Update namespace in stream tests (#226) (@AuroraYolo)
- Make php-wrapper smarter (5e8fc64) (@twose)
- Use GPT to generate CHANGELOG (4f250e7) (@twose)
- Workaround for mysql_handle_closer() (56d6ffe) (@twose)
- Fix socket_export_stream() hook (f6e6b28) (f94d381) (@twose)
- Fix cURL on PHP-8.3 (76a5bcc) (@twose)
- Fix #208 (ipv6_v6only compatibility) (d2059ad) (@twose)
- Fix return value of stream_socket_sendto() (e1f6a7f) (@twose)
- Fix weak dep symbols (b97bd1e) (@dixyes)
- Remove interface dependencies from psr7-plus (a990bf2) (@twose)
release-date: 2023-06-15
「成就伟大的唯一途径是热爱自己的工作。」 - 史蒂夫·乔布斯
"The only way to do great work is to love what you do." - Steve Jobs
- Fix memory error due to call destructor in scheduler (#198) (@twose)
release-date: 2023-06-09
差距并不可怕,可怕的是因为差距而放弃。
The gap is not terrible. What's terrible is giving up because of it.
- Support PDO PostgreSQL (#137) (@huanghantao)
- Weak dependency for PDO (#171) (@dixyes)
- Support ServerConnection->sendHttpFile() (#168) (@PandaLIU-1111)
- Support remove temp file automatically (#172) (@PandaLIU-1111)
- Support simple HTTP recvMessage timeout (dd615e9) (@twose)
- Server config connection recvMessage timeout (#194) (@xuanyanwow)
- Provides psr7-plus in an independent composer package (6142114) (2667931) (@twose)
- Introduce dontdie as an independent composer package (6ce662e) (@twose)
- Use psr/http-message v1.1 (e6743e5) (@twose)
- Rename swow.async_stdio to swow.async_tty (7283708) (@twose)
- Remove extra export ignores (2e5abe9) (@dixyes)
- Support resolve path list of autoload in composer.json (90e0d39) (@twose)
- Support maxExecutionTime for dontDie() (ddfe1ad) (@twose)
- Support nickname option for dontdie (8f347af) (@twose)
- Add a test for empty Content-Type (e6a7ce1) (@twose)
- Added ServerConnection SendHttpFile test case (#170) (@PandaLIU-1111)
- Add comments for some Buffer methods (57b2121) (@twose)
- Fix "Doc tag without variable name" (ea620d9) (@twose)
- Fix Psr7 BufferStream implementation and add tests for it (#192) (@twose)
- Fix setParsedBody params type (#174) (@duxphp)
- Fix PHP stream create TLS server error (#187) (f758a40) (@twose)
- Fix incorrect parsedOffset (94b689c) (@twose)
- Fix preserveBodyData not work (4fb20dd) (@twose)
- Fix incorrect error code of try APIs (572278b) (@twose)
- Fix require package name (c9a5dea) (@twose)
- Fix pdo header check (255ac36) (@dixyes)
- Fix ulimit typo (a628513) (@dixyes)
- Fix MODULES_CHECK_PRE memory error (90bb701) (@twose)
- Fix exdev copy logic (70cb109) (@dixyes)
- Fix Socket->sendFile() behaviour with length 0 (aad9911) (@twose)
- Always backup native ops/wrapper (efc2f80) (@twose)
- Defensive programming for ENOTCONN when call getpeername() on accepted socket (32c1fa5) (@twose)
- Defensive programming for preserve body data case (0e2cb0f) (@twose)
- Workaround for test-extension unexpected exit (70c1744) (@twose)
- Nothing removed
release-date: 2023-02-26
成功的秘诀是开始行动。
The secret of getting ahead is getting started.
- New API: Socket->sendFile() (da2397f)
- New APIs:
Coroutine->getStartTime()
,Coroutine->getEndTime()
(64f516e) - New Constant: WebSocket::DEFAULT_MASKING_KEY (72f1920)
- New Config: Introduce autoUnmask config for specific requirements (56088cc)
- Support use PHP ini to configure async stdio/file hook and async threads (swow.async_threads=4, swow.async_file=1, swow.async_stdio=1 by default) (0d94d1a)
- Support get php binary files via php-config (#158) (@sy-records)
- Run update docs ci under swow organization only (#159) (@sy-records)
- Handle empty maskingKey and empty data for WebSocket::unmask() (3d07a94)
- Skip NULL values when pack headers (977c54c)
- Add HTTP event-stream case for mixed server example (923e69e)
- Fix stream_select() hangs on server for all platforms (#162)
- Fix missing SSL module init (90ea96c)
- Fix test-extension.php can not run without composer (329d49d)
- Fix callable memory leak when coroutine allocation failed (25be041)
- Some fixes for Debugger: Fix
p
andvars
does not work; Fix missing step_in command (63a9c84) - Fix PHP rename() did not work for cross devices (9903049)
- Fix WebSocket payloadData buffer size (ee8bc7c)
- Fix Message->addHeader() and add a test for it (2e51848)
- Remove API: Socket->setTcpAcceptBalance() (72e7c44)
release-date: 2023-01-18
永远不要熄灭心中的火,哪怕别人只看见烟。 Never extinguish the fire in your heart, even if others can only see smoke.
- New README (b121caa)
- New PHP API:
Coroutine->getSwitches()
,Coroutine::getGlobalSwitches()
(2ef2ac3) - Add
HttpParser
errno (3365aaa) (0a8c96b) - New C APIs: version getters (f0ce087)
- Do not always close all connections when closing Server (graceful shutdown)] (dd00372)
- Optimizations for swow-builder (2ed5f60)
- Fix bad arg name of Signal methods (6041422)
- Fix va_args memory error (libcat/libcat@6d08909)
- Fix bad usage of buffer value (libcat/libcat@6c20f9e)
- Fix curl easy handle exec dead loop with SSL connection (libcat/libcat@6f5865d)
- Full cURL workaround solution for SSL connection (libcat/libcat@1e8d176)
- Remove
Coroutine->getRound()
,Coroutine::getCurrentRound()
(2ef2ac3)
release-date: 2023-01-03
Swow 是一个专注于并发 I/O 的跨平台协程引擎,它致力于使用最小 C 核心及多数 PHP 代码以支持 PHP 高性能网络编程,具有极佳的扩展性与强大的调试能力,最大化开发者的编程效率。
Swow is a high-performance pure coroutine network communication engine, which is based on PHP and C. It is committed to using the smallest C core and most of the PHP code to support PHP high-performance network programming. Furthermore, it has excellent scalability and powerful debugging capabilities to maximize the programming efficiency of developers.