距离 skynet 开源项目的公布 已经有 20 月+ 了,如果从闭源阶段算起,已经超过了 30 个月。在我们公司内部有五个项目使用 skynet 开发,据有限的了解,在我们公司之外,至少有两个正式项目使用了相当长的时间。是时候发布一个正式版了。

今天 skynet 的第一个正式版本 v0.1.0 发布了。

在发布之前,我花了几天时间帮助公司内部的项目合并代码。最后全部统一使用这个版本。而在此之前,每个项目都是由一个负责人 fork 出一份,根据项目需要自己修改。merge 工作总是做的痛苦不堪。

通过这次发布,希望未来可以统一维护基础框架部分。

我推荐的项目组织形式是,把 skynet 作为一个 submodule 引用,不要自行修改任何其中的代码。在项目目录中编写自己的 Makefile 调用 skynet 的 Makefile 编译出 skynet 的二进制文件。如果需要修改编译目标地址,可以在 make 调用时传入。skynet 的编译目标地址都是用宏指定的,覆盖比较容易。

如果要修改 skynet 自带的模块,可以在自己的项目中编写同名的模块,通过项目的 config 文件指定模块搜索次序来优先加载。或者复制一份换一个名字。目前 skynet 自带的模块极少,不太会对项目具体需求造成影响。


为了这次 release ,我删除了之前在 skynet 中遗留的很多目前我们项目已经不再使用(或不会对现有项目造成影响)的特性。比如组播模块、性能分析模块等。这样可以使 skynet 核心更加精简。

增加了一组新的 api snax 方便快速开发。

性能分析模块重新独立实现了,这次以一个 lua module (profile) 的形式注入 lua 原生的 coroutine 库。在 snax 里做了演示。

接下来,skynet github 的 master 分支在 v0.2 版发布之前,不再增加新特性。只会定期合并 bugfix ,这些小版本将被命名为 v0.1.x 。新的版本将在 dev 分支上进行。

暂时的开发计划是重新以上层模块的形式重新支持广播和组播特性。


关于文档、例子和 demo

由于精力有限,虽然一直有这个计划,但是未能实施。目前只能看我的 blog 来理清 skynet 的脉络了。我也会逐步把一些文档性质的 blog 整理到 github 的 wiki 上。

同时、使用 skynet 的人越来越多,我相信社区的力量会越来越大。

如果有问题,可以在 github 上提 Issue ,更欢迎提交 Pull-request 。skynet 项目发展到现在,已经合并过来至于 14 个不同同学的 PR 了,相信以后会更多。

最后,来个有中国特色的:

有热心的同学为 skynet 建立了 qq 交流群:340504014 。群内已经有许多有 skynet 使用经验的同学热心解答问题。当然,我也为此重新安装了 qq 。



新闻来源:开源并发框架 Skynet 发布第一个正式版 v0.1.0