Cirru Project in 2015

看到 Vue 总结过去, 因而也想梳理下 Cirru 过去一年的进展
相对来讲, Cirru 几乎是无人问津的项目, 只有我在坚守
然而不管怎样, 我都以为 Cirru 依然是很是有趣的项目
2015 年相对从前收获的也算是更多, 由于终于投入实践当中了
细节能够看 Twitter 上的记录, 我正文发散梳理一下
https://twitter.com/cirrulanggit

Logo

Cirru 的 Logo 通过了从新设计, 更简单了, 联想一下 Cr
辨识度也许未必高, 但我想这个 Logo 是更加明确的github


编辑器

编辑器支持有了一些增长, 一个是 Vim, 另外一个是 LightTable
另外因为 Atom 基于 Webkit, 我尝试了一次很是夸张的主题
让语法高亮从文字颜色移开, 而是高亮背景, 瞬间风格就不一样了后端

Parser

Parser 扩展到了更多的语言, 虽然没有本质的变化
如今大概有十种语言了, 基本都是函数式语言和脚本语言
目前的 Parser 是须要递归支持的, 因此底层语言实现起来有压力
另外一方面我尝试了 Parser Combinators 方案解析
虽然目前没有完美, 但进展也还不错, 至少简单缩进是能运行的编辑器

Sepal

Sepal 是编译 Cirru 语法树到已有语言 AST 的方案
目前支持的是一些动态语言, 主要是 JavaScript, Clojure
另外 Elixir, Ruby, Lua 我仅仅是作了简单的尝试, 验证可行性
其实精力足够的话, 更多有定义 AST 的语言都能跟上
而编译到 LLVM 的方案失败了, WebAssembly 还在进行中函数

CirruScript

http://script.cirru.org/工具

CirruScript 本来是手写的, 生成了 Source Maps
后来以为效果不佳, 后端改为用 Babel 生成 ES5 代码
中间一段时间其实很是顺手, AST 的效果也不错
相应的生态, CLI, Gulp, Webpack, 算是都支持了
直到 Babel 6 发布的一次, 发生了较大的更改, AST 改变了
我纠结了挺久最后还好完成了兼容, 只是性能有些损失
整体看来 CirruScript 仍是可靠的, 能够在我的项目继续用性能

Sepal.clj

https://github.com/Cirru/sepal.clj/atom

下半年上手了 Clojure 和 lein 环境, 因而尝试 Cirru 语法
幸运的是, Clojure 版本得益于 Macro 的强大, 很容易就完成了
只是 Sepal.clj 不支持生成 Macro, 由于本分经过 Macro 实现
即使这样, 使用 Sepal.clj 已经能够书写经常使用的代码, 实践下来也舒服
另外相关的编译, REPL 工具链也初步实现, 玩得起来了spa

WebAssembly

Cirru 中期目标是编译到 WebAssembly, 做为其中活跃的语言
我在观察 WebAssembly 的 AST 后发现 Cirru 很是合适
这里还只是用 Cirru 语法手写 WebAssembly 文本格式而已
因而我实现了基本的 Cirru 语法生成 S 表达式的方案
另外借助 indutny 的 wasm-jit 实现, 还能用 Cirru 运行最简单的代码
https://github.com/Cirru/cirru-wasm-cli设计

结尾

其余比较有意思的进展是 Twitter 上引发了一些人的注意
我也在 Medium 上放了简单的文章介绍 Cirru 的细节
https://medium.com/cirru-project/如今 Cirru 的首页天天都会有一两个访问量, 总比没有要好期待随着 WebAssembly 进展, 我能进一步推广 Cirru

相关文章
相关标签/搜索