Swow Versions Save

Coroutine-based cross-platform concurrent I/O engine.

v1.4.1

4 months ago

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

🐛 What's Fixed

  • 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)

v1.4.0

4 months ago

「不要盯着时钟看,要做时钟所做的事情,继续前进。」 - 萨姆·莱文森

"Don't watch the clock; do what it does. Keep going." - Sam Levenson

🐣 What's New

  • 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 apln_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)

✨ What's Enhanced

  • 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)

🐛 What's Fixed

  • 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)

👻 What's Removed

  • Remove interface dependencies from psr7-plus (a990bf2) (@twose)

v1.3.1

10 months ago

「成就伟大的唯一途径是热爱自己的工作。」 - 史蒂夫·乔布斯

"The only way to do great work is to love what you do." - Steve Jobs

🐛 What's Fixed

  • Fix memory error due to call destructor in scheduler (#198) (@twose)

Hashes and notes

File name Size (in bytes) SHA256 sum Build log
php_swow-php8.0-x64-nts-VS16.dll 1249280 70DF2221A554AC6074C32E71D11FE8EACB4F3A2F220B60D5A023EC1B833C2469 link
php_swow-php8.0-x64-ts-VS16.dll 1275904 C3C9226B7830CC95D31F4DD32916F47166A3F2E9F670ECD59141A6193C7AF9AA link
php_swow-php8.1-x64-nts-VS16.dll 1248256 90FAC639F8F4863AB7A1F079D89054E532728FF322769628205EDD2C2B1C37B8 link
php_swow-php8.1-x64-ts-VS16.dll 1276416 588A938356F48652FCB9CABF4436C267FA7F8E3A7E1FDBFFB94DC4D23B0FF80C link
php_swow-php8.2-x64-nts-VS16.dll 1259520 29A676B893F92377E58C80E03FF1ADF98B1EB28A8CE3D5D16430A72B903C089C link
php_swow-php8.2-x64-ts-VS16.dll 1287680 F82693E9557156D8C1E9AD4A39FDB9D513983F917FB6317E25FCB03A8EB42CAF link

v1.3.0

10 months ago

差距并不可怕,可怕的是因为差距而放弃。

The gap is not terrible. What's terrible is giving up because of it.

🐣 What's New

  • 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)

✨ What's Enhanced

  • 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)

🐛 What's Fixed

  • 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)

👻 What's Removed

  • Nothing removed

Hashes and notes

File name Size (in bytes) SHA256 sum Build log
php_swow-php8.0-x64-nts-VS16.dll 1248768 31EDF549877A7F9165999AAAF9DE74180CF45CEAA67E75A5C9A01C658255A1B9 link
php_swow-php8.0-x64-ts-VS16.dll 1274880 E5AEBE03981D88AE2D5BDBBCC7ACA358648DAE377885621847329837BCE082DB link
php_swow-php8.1-x64-nts-VS16.dll 1247232 8C074D718BFB9F8C5C7542914AE5F9A4DBB2AAFA9D98786762A9505FDCDAA414 link
php_swow-php8.1-x64-ts-VS16.dll 1275904 45AF9523D3912EF8DAE9FFD716DA9F3079C6F8C12551FBB29B22BAD8C621C226 link
php_swow-php8.2-x64-nts-VS16.dll 1259008 E988FEC21102FFB4152BC0753059469AB83695F2C7EBB1D7953A3E64D572F8A5 link
php_swow-php8.2-x64-ts-VS16.dll 1287168 63733C28F6D2F56410FD8A4FEE743B87933DB4933CD87ADD3117D0E8B2EBE542 link

v1.2.0

1 year ago

🐣 What's New

  • New API: Socket->sendFile() (da2397fba8ae6d8bd7bfd17f6c9bb4d1c8650932)
  • New APIs: Coroutine->getStartTime(), Coroutine->getEndTime() (64f516e06515898134a161ce7ff29552884eab52)
  • New Constant: WebSocket::DEFAULT_MASKING_KEY (72f1920175672a0a652397ac5dff155afd8e3166)
  • New Config: Introduce autoUnmask config for specific requirements (56088cc8b961a12dc8e161c440c96bb28cf0122a)
  • 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) (0d94d1a09e568c7f100978844016ce38b263f202)

✨ What's Enhanced

  • 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() (3d07a94a1bb07296a4763ce8dd1747da9ee3f576)
  • Skip NULL values when pack headers (977c54cf848e7445c048aacd5882e783b0a105f0)
  • Add HTTP event-stream case for mixed server example (923e69ef38f770606f4f1212ebc5ed02465b1852)

🐛 What's Fixed

  • Fix stream_select() hangs on server for all platforms (#162)
  • Fix missing SSL module init (90ea96c4ef7bd7365d0a18e3451bb569c75bf9df)
  • Fix test-extension.php can not run without composer (329d49d3516a0f2178e5b611d77c4cb1e117a1c0)
  • Fix callable memory leak when coroutine allocation failed (25be04199c52844168ebf51f473b5edd831d3337)
  • Some fixes for Debugger: Fix p and vars does not work; Fix missing step_in command (63a9c84989b33a658c64e5c1b1fc3897ee8fed44)
  • Fix PHP rename() did not work for cross devices (9903049f068f4646ba5e1e8584878544870c68f8)
  • Fix WebSocket payloadData buffer size (ee8bc7c8827758b02f8c8a2e54033debb091904f)
  • Fix Message->addHeader() and add a test for it (2e51848601ebb5e5f77055d9a1e1b49e6d2d9acc)

👻 What's Removed

  • Remove API: Socket->setTcpAcceptBalance() (72e7c44a5f3179b2fffd39ccd5c7a2dd9e4ba719)

Full Changelog: https://github.com/swow/swow/compare/v1.1.0...v1.2.0


Hashes and notes

File name Size (in bytes) SHA256 sum Build log Tests result
php_swow-php8.0-x64-nts-VS16.dll 1201664 E0D0D92A9E529B7DC3972BC5CC8E0B5770F23A926FE10E2D448083A2E3919CE2 link success
php_swow-php8.0-x64-ts-VS16.dll 1227776 7C2316CA0A8BAE8597A19496DB73C129771EE2082B6F080561909888D9A031A8 link success
php_swow-php8.1-x64-nts-VS16.dll 1200640 AA77CAFEB9C8300DBBD7FD40A92DD4A0ED32100296D7FAAE426BF569A43A51B5 link success
php_swow-php8.1-x64-ts-VS16.dll 1228800 7A3A318A7866AD2D450C09B48EE18BECCC8FE2FF6892A4EF5EC5DDA611D0E2D6 link success
php_swow-php8.2-x64-nts-VS16.dll 1212416 6A4A71AE0FE04531C507F9878368E2F4D1D0CBAFA5AE5AC16F67602FDC95C0D4 link success
php_swow-php8.2-x64-ts-VS16.dll 1240576 C70D4738258D2D88B669749540E54F2F008AECAA1C04977854BE4A79E6588B62 link success

v1.1.0

1 year ago

永远不要熄灭心中的火,哪怕别人只看见烟。 Never extinguish the fire in your heart, even if others can only see smoke.

🐣 What's New

  • New README (b121caa2530cb950f4d2f05e98ede9d63b18c135)
  • New PHP API: Coroutine->getSwitches(), Coroutine::getGlobalSwitches() (2ef2ac3752b6dbdf5e3bb35b78bf1eb9c9c1d621)
  • Add HttpParser errno (3365aaa6da8e0e7c190fe74f3caae8a9245dc134) (0a8c96b4b8c0d9a2f15b11b2cff43a00d2b3c99e)
  • New C APIs: version getters (f0ce087517127d8a73dc0e14e5f8d70eefe4cce0)

✨ What's Enhanced

  • Do not always close all connections when closing Server (graceful shutdown)] (dd003727dd5e504d78388f00911435b3e743e9b5)
  • Optimizations for swow-builder (2ed5f6058d2790256630bc585d271491248de9e7)

🐛 What's Fixed

  • Fix bad arg name of Signal methods (6041422d8b816f3009a252fa1425db24acb4f2dc)

🐞 What's Fixed in Dependencies

  • Fix va_args memory error (libcat/libcat@6d08909b7fe48d07dabeaa5fde148a32473262b3)
  • Fix bad usage of buffer value (libcat/libcat@6c20f9e87f9167dabf7fe9488250f4b51fa21006)
  • Fix curl easy handle exec dead loop with SSL connection (libcat/libcat@6f5865de631d4c7aa5d5a93ff81c26270941b04c)
  • Full cURL workaround solution for SSL connection (libcat/libcat@1e8d1764ec30b9655b2eb52027a26e737d3ca96a)

👻 What's Removed

  • Remove Coroutine->getRound(), Coroutine::getCurrentRound() (2ef2ac3752b6dbdf5e3bb35b78bf1eb9c9c1d621)

Full Changelog: https://github.com/swow/swow/compare/v1.0.0...v1.1.0


Hashes and notes

File name Size (in bytes) SHA256 sum Build log Tests result
php_swow-php8.0-x64-nts-VS16.dll 1188352 E577D7695BFBA5E4C5520050754C947BA96A8A09CA1705B12254019BC83F0DA3 link failure
php_swow-php8.0-x64-ts-VS16.dll 1214464 D9A25C6C8B8663B8A3A576473ED40FD12E9EBBF6C86E2447723CC78A4814B14C link failure
php_swow-php8.1-x64-nts-VS16.dll 1187328 EAAD0AC051B3C946ADE463F20EDC75D9622233B271887FC042B5B75108D0B2AF link failure
php_swow-php8.1-x64-ts-VS16.dll 1215488 D47556CBBECAC5394B3F59853A70E93292E8170C402284425AA1C286109CA648 link failure
php_swow-php8.2-x64-nts-VS16.dll 1199616 F3F8066B7C97BFB8DAE3C8A0E833BE3B58866070AE26BE61CD32E780D11106C2 link failure
php_swow-php8.2-x64-ts-VS16.dll 1226240 2C6FFCA02F27BF51E57CAA4FD0FF9515D73D270F77DE39DF096C68016DA6F69B link failure

v1.0.0

1 year ago

🚀 Swow 是一个专注于并发 I/O 的跨平台协程引擎,它致力于使用最小 C 核心及多数 PHP 代码以支持 PHP 高性能网络编程,具有极佳的扩展性与强大的调试能力,最大化开发者的编程效率。

🚀 Swow is a high-performance pure coroutine network communication engine. 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.

Blog Post about v1.0.0 | Related Disscussion

Hashes and notes

*.pdb是调试符号,仅使用Swow不需要下载 *.pdb is debug symbols, not necessary for using Swow

File name Size (in bytes) SHA256 sum Build log
php_swow-php8.0-x64-nts-VS16.dll 1182208 45EBCC981ABBB41983944F0DF6D27B2CBA107D475751548B4F4BBA647BC1A7B8 link
php_swow-php8.0-x64-ts-VS16.dll 1208320 61D00D3D53F7F514F01CA756F1F92E2CD9FA8284D638A03CE7627F6810A5BC02 link
php_swow-php8.1-x64-nts-VS16.dll 1180672 812FFDB1D9B964E02D7B1D1BC3EE01624CE35F993A7C530577EBCBC9EFE7F1AC link
php_swow-php8.1-x64-ts-VS16.dll 1208832 FF01B2FFA9A794A5A9912FE8027D9ED506D1856359BB1A3BAA8ED77F2A2F68CB link
php_swow-php8.2-x64-nts-VS16.dll (broken) 1198592 E2C129EB2DA08F5FA0EAC5045ACCC3B77D128C13019CD144FE7D6BB13E463212 link
php_swow-php8.2-x64-ts-VS16.dll (broken) 1226752 12134B13B518D2E5A30A652F0D3D59D792D52B8FE686BEE7F401FE3BAC694C0B link

Note: 8.2 windows binaries are broken, see #149, this may fix in next release

v0.3.1-alpha

1 year ago

Fixes

Optimizations

New Contributors

Full Changelog: https://github.com/swow/swow/compare/v0.3.0-alpha...v0.3.1-alpha

v0.3.0-alpha

1 year ago

TL;DR

API向下不兼容变更:

  • maskKey 重命名为 maskingKey (与RFC保持一致)

修复:

  • 修复builder由于找不到autoload.php而无法使用的问题 (#138)
  • WebSocket Frame 没有自动unmask的问题

优化:

  • 完善了一些注释
  • sync-extension 命令重命名为语义更明确的 sync-dependencies (仅内核开发者使用)
  • 新增一个版本信息更新脚本用于快速替换版本号定义