CoroC 语言开源了

CoroC 是什么?

CoroC 是 “Coroutine-C” 的简称,顾名思义,就是在 C 语言的基础上,增加了对 “协程” 的原生支持,从而简化了在纯 C 下开发轻量并发系统的难度。

CoroC 实现了哪些功能?

在设计上,CoroC 借鉴了大量 Go 语言的元素,包括 channelselect, netpolling 等,当然,为了很好的实现并发,我们也在 C 中加入了并发的 “智能指针” 。 同时增加了一些新的探索性功能,比如 “Actor 模型”、“Fork-Join 模型”、“优先级调度”、“分时抢占” 等,当然其中一些还处于实验阶段。

在实现上,CoroC 分成两个主要部分,运行时库编和译器前端。

  • 运行时库是一个用纯 C 编写的静态库,可以直接用在 C 语言项目中
  • 编译器前端是一个基于 clang-3.5 开发的 “源-源变换” 工具,通过它可以将一个包含扩展语法的 CoroC 程序转化为一个含 C 库调用的纯 C 程序

如何获取 CoroC 代码和文档?

目前,我已将 CoroC 运行时和编译器的代码分别发布在 bitbucket.org 上,

编写 CoroC 的目的

编写 CoroC 的动机,一方面是想通过实际开发,理解 Go 语言并发设计的原理,另一方面是学习基于 clang / llvm 的二次开发方法。

联系我们

当然,目前的 CoroC 还处在一个玩具级别的状态,其中不免会有很多错误,希望大家多多指教!

如果您对于 CoroC 有什么建议,可以直接在 bitbucket 上给我发 pull request,当然也可以发邮件到我的邮箱 amalcaowei@gmail.com.

Comments