Replies: 7 comments 1 reply
-
终于等到你正式版了。现在就差文档了。。期待中。 |
Beta Was this translation helpful? Give feedback.
0 replies
-
优秀的项目,加油🚀🚀🚀🚀 |
Beta Was this translation helpful? Give feedback.
0 replies
-
期待文档和大家的分享,祝愿越来越好! |
Beta Was this translation helpful? Give feedback.
0 replies
-
终于还是年前发版了,不枉我每天上来看一遍,虽然没做啥贡献。可以改部分业务逻辑试试看了。 |
Beta Was this translation helpful? Give feedback.
1 reply
-
Nice nice!!期待越来越好。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Swow v1.0.0 发布
Swow 是一个使用 PHP 和 C 编写的高性能纯协程网络通信引擎,它致力于使用最小 C 核心及多数 PHP 代码以支持 PHP 高性能网络编程,具有极佳的扩展性与强大的调试能力,最大化开发者的编程效率。
项目初衷
尽管现在 PHP 协程生态已经有了非常多样的选择,但所有的协程框架、库都存在着一个非常致命的问题,即它们都是从异步框架演变而来,并非开始就自底向上为协程而设计,且出于一些兼容性方面的考量,往往会牺牲掉很多本应具备的能力,又或是囿于历史包袱而无法做出合理的设计改变。
因此,Swow 项目致力于打造一个自底向上专为协程设计的高性能、高可控、易兼容的引擎,依托架构设计优势,全面释放协程技术的真正实力。此为 Swow 及其团队成员的初衷,我们将持续投入并为此付出努力,也欢迎你加入我们参与开源建设。
设计理念
Swow 的最小 C 核心设计决定了它在保障关键性能之外,更多的是追求二次开发能力与可调试性。
Swow 内核与 PHP 代码的无缝融合运作使得开发者的编程效率与灵活性能得到极大的提升。
Swow 提供了丰富多样的调试机制与强大且低门槛的调试能力,最大程度地确保开发者免受BUG困扰,普通开发者也能通过工具的加持具备接近专家级别的DEBUG能力。
致谢
写在能力介绍之前:PHP 高性能协程网络通信引擎开发之路曲高和寡,这是一项高处不胜寒的开源工作,非常感谢以下小伙伴对于 Swow 项目的代码贡献,没有大家就没有现在的 Swow。其中重点感谢团队核心成员 @dixyes 的付出,将 Swow 各方面的能力与稳定性提升到了一个全新的高度。
支持的操作系统
协程
C栈协程实现
协程模型
协程操控能力
协程调试器
协程调试器能力
通道
同步
事件
信号
网络编程
同步阻塞协程化
该技术带来的好处:
CPU调度
Watchdog 为 PHP 提供了 CPU 调度能力,其核心原理是 Watchdog 线程会定期检查其它线程中协程的活跃度情况,若发现工作线程中的协程不再活跃,则通过 ZendVM 的中断机制对其进行状态确认,若 VM 中断失败,则表明工作线程陷入了系统调用阻塞,触发告警;若 VM 中断成功,则表明工作线程陷入了 CPU 密集运算或死循环,则立即触发用户设定的调度规则进行调度。
现代化
其它调试能力
构建系统
更多
以上的能力枚举只是让 Swow 初露峥嵘,Swow 内核还包含了大量的细节设计以及部分未正式披露的实验性功能。
总的来说,Swow 的未来充满了想象空间,它为 PHP 提供了远超以往的可能性,我们可以藉由 Swow 的能力去想、去做更多未曾深思过的事情。
后续我们将通过「大量发布短篇文章」的方式与大家分享各个能力项的详细描述与最佳实践,并披露大量内部实现细节与生产应用情况,敬请期待!
Footnotes
其它系统支持情况取决于libuv支持情况与社区需求 ↩
一等支持指 Swow 开发团队成员会通过向 boost-context 提交代码贡献的方式来使其更好地支持 Swow 所需的应用场景。 ↩
相当于 GDB 的 print 指令,动态执行调试者给出的 expression,并打印其返回值。 ↩
libcat 是协程版本的 libuv,由 Swow 团队独立自主维护,可供所有基于C的项目使用,如:你可以使用 libcat 写一个C++协程项目,或为 Python、Node.js 提供 C 栈协程能力等。 ↩
libuv 异步事件驱动提供主流全平台支持,经过 Node.js、Julia 等语言广泛且严苛的生产验证,达到了工业级水准。Swow 团队会通过向 libuv 提交代码贡献的方式来使其更好地支持 Swow 所需的应用场景。 ↩
暂不支持即代表未来会支持,或已在实现计划中 ↩ ↩2 ↩3 ↩4
Hyperf Box 提供了开箱即用的 Swow 项目一键打包二进制工具,也欢迎更多的开源社区小伙伴基于 micro 技术二次开发出更多开箱即用的打包工具造福社区。 ↩
Beta Was this translation helpful? Give feedback.
All reactions