使用llvm实现一门语言 —— cava
背景
cava 产生的背景,是由于ha3业务方对插件定制及版本兼容需求,要求我们基于llvm开发一种性能与c++相当的类java脚本语言。
经过我们的调查发现:
可备选项由例如sp上的lua,elasticsearch上的groovy等,但最终得出的结论是现有的脚本语言都不能很好的满足ha3的需求。
groovy是jvm语言,它和用java开发的elasticsearch比较配。ha3是用c++开发的,ha3上插件的内存管理模式很固定,插件中的内存分配可以和请求session的pool绑定,请求结束整个pool释放,不需引入gc;另外jni比较重和c++交互的效率不高,因jvm语言不满足要求。
公认和c++结合比较好的是lua,它在游戏领域被广泛使用,lua本身比较轻量,它通过lua栈和c++交互,lua有个非官方版的jit实现luajit