是否可以通过限制Google V8中对Javascript的支持来创建一种更简单的语言?我想将V8引擎嵌入到我自己的工具中以运行动态脚本,并且喜欢V8为速度对源代码进行预初始化的想法。然而,我需要严格限制语言中的可能性。
这意味着没有数据容器(例如数组)的动态分配,没有导入的库,没有递归,没有线程。它在哲学上更类似于Renderman着色语言,而不是通用语言。因此,"新"语言要简单得多,由于熟悉的语法和已经有一个好的"编译器"(V8)的事实,我只考虑JS。我可能还希望它在Chrome的本地代码(NaCl)环境中运行脚本代码,谷歌似乎正在努力在V8中支持它。
重新定义JS的"语法"或其他定义语言的代码有多容易?
我的另一个选择是从头开始创建一种新的编译语言(可能使用LLVM的东西)。
对于您想要的所有功能限制,您需要在V8上进行大手术,因为V8从未被设计用于如此彻底的修改。
另一种解决方案是发明一种类似JavaScript的语言(具有您可以施加的所有限制),并将其编译为普通JavaScript,然后您可以使用V8(或任何其他JavaScript引擎)运行。这种方法的众所周知的例子有GWT(来自Java)、Dart和TypeScript。
仔细看看松鼠语言:http://squirrel-lang.org从描述概述:"编译器和虚拟机可以组合在大约7k行C++代码中,只增加了大约100kb-150kb的可执行文件大小。">
享受吧!