likes
comments
collection
share

枚举和分析 40+非 v8 实现的 JavaScript

作者站长头像
站长
· 阅读数 5

原文链接:notes.eatonphil.com/javascript-…

V8,毫无疑问,是目前使用范围最广的 JavaScript 引起。v8 使用在 Chrome(和Chrome的插件)、Microsoft EdgeNode.js 等等... Safari 浏览器的 JavaScriptCore 以及火狐的 SpiderMonkey 也被认为是 JavaScript 引擎中最有竞争力的。

但是其他 JavaScript 引擎呢?如果我想要在 CGoRustJava(等等....)中嵌入JavaScript 该怎么办 ? 又或者如果我想要在单片机运行 JavaScript ?或者将其用作语言研究的基础? ? 目前,已经存在许许多多 JavaScript 引擎帮助我们实现上述功能。

这篇文章就会讲述一些 JavaScript 引擎以及他们背后的实现选择。我并不会在这篇文章提及 v8JavaScriptCoreSpiderMonkey 因为他们实在是太过复杂了,暗藏了许多复杂的技术实现。而且,你其实已经对他们有所了解。

我会弄错一些JavaScript引擎的实现细节,如果出错请在Tweet 或者 email 联系我。我对纯研究特别感兴趣;以及 JavaScript 的商业、闭源实现。

企业版

这些 JavaScript 引擎对于您自己的商业、生产应用程序来说是有意义的。

在 JVM 运行

可嵌入

  • Nginx's njs
  • ChowJS: 面向游戏开发者的基于 QuickJS 的专有 AOT 编译器
    • Support: 取决于 QuickJS 的支持程度 (更多内容请参考 QuickJS)
    • 实现语言: 大概是C
    • Runtime: QuickJS 的字节码解释器和 AOT 编译器
    • Parser: 大概是 QuickJS
    • 发布: 2021
    • Notes: 代码不可用,因此目前无法对这些点进行精确分析。

译者注:

QuickJSgithub.com/quickjs-zh/…

AOT,全程为Ahead of Time,指运行前进行编译,是一个程序的编译方式。与之相对的就是JIT(Just-in-time),即时编译,边运行边编译,像v8就是采用JIT的编译方式。

嵌入式系统

其他

我不知道应不应该把微软的 ChakraCore 放到这个还是下一个。我会把它放在这里,但请注意,截至 2021 年,他们正在将其转变为社区驱动的项目。

社区版

Implementations toward the top are more reliable and proven. Implementations toward the bottom less so.

顶层的应用程序有很多人都会使用并且验证其可靠性。但是哪些底层应用(例如操作系统内核、语言解析引擎)则很少人关注。

If you are a looking to get involved in language development, the implementation further down on the list can be a great place to start since they typically need work in documentation, testing, and language features.

如果您想参与语言开发,列表后面的内容可能是一个很好的开始项目,因为它们通常需要在文档、测试和语言功能方面进行工作。

最后几个不是玩具,但它们也更具实验性,或者在 AssemblyScript 的情况下,不是 JavaScript。

研究实现

感谢@smarr](twitter.com/smarr) 提出 eJS, Higgs, and b9!

已废弃

玩具版

如果您以前从未实现过一种语言,那么下面的内容会给你许多的灵感。

  • js-to-c: 用 C 编写的 JavaScript 编译到 C 的编译器
  • mjs: AST 解释器,不仅适用于 ES5 甚至 ES3,还适用于 ES1
  • gojis: Go 实现的 AST 解释器
  • tojs: Rust 实现的字节码 VM
  • v2: Go 实现的字节码 VM
  • SparrowJS: C++ 实现的 AST 解释器
  • jsc: 我自己的将 JavaScript 编译为 C++/libV8 的实验代码

新帖子来了! 枚举和分析 40 多个非 V8 JavaScript 实现; 当然还有指向源代码和解析器和运行时/后端决策的链接。

我希望你和我一样喜欢学习 JavaScript 引擎。t.co/dEX06WU38f pic.twitter.com/AoYScphG6m

— Phil Eaton (@phil_eaton) September 21, 2021

转载自:https://juejin.cn/post/7013994762550116382
评论
请登录