JavaScript 引擎、运行时和解释器的收藏列表

2024-05-18  本文已影响0人  涅槃快乐是金

V8

V8是谷歌的开源高性能JavaScriptWebAssembly 引擎,用C++编写。它被用于ChromeNode.js等项目中。V8实现了ECMAScriptWebAssembly,在 Windows 7 或更新版本、macOS 10.12+和使用x64IA-32ARMMIPS处理器的 Linux 系统上运行。V8可以独立运行,也可以嵌入到任何 C++应用程序中。

SpiderMonkey

SpiderMonkeyMozillaJavaScriptWebAssembly引擎,用于 FirefoxServo 和其他各种项目中。它用 C++RustJavaScript 编写。你可以将它嵌入到 C++Rust项目中,并且可以作为独立的 shell运行。它也可以编译为 WASI

JavaScriptCore

JavaScriptCore 框架提供了从 SwiftObjective-C 和基于C的应用程序中评估 JavaScript 程序的能力。你也可以使用JavaScriptCore将自定义对象插入到 JavaScript 环境中。

ChakraCore

ChakraCore 是一个具有 C APIJavaScript引擎,你可以用它来为任何CC 兼容项目添加对JavaScript的支持。它可以在LinuxmacOSWindows上为x64 处理器编译。对于 Windows,还可以为 x86ARM编译。未来的目标是在Linux上支持x86ARM处理器,在 macOS 上支持ARM

QuickJS

QuickJS 是一个小型可嵌入的 JavaScript引擎。它支持 ES2020规范,包括模块、异步生成器、代理和BigInt

它还可选择支持数学扩展,如大十进制浮点数(BigDecimal)、大二进制浮点数(BigFloat)和运算符重载。

主要特点:

txiki.js

txiki.js 是一个小巧而强大的 JavaScript运行时环境。它针对最新的 ECMAScript并实现了许多Web平台特性。
它建立在巨人的肩膀上:它使用 QuickJS-ng作为其JavaScript引擎,而 libuv则作为平台层。

Bun

BunJavaScriptTypeScript 应用程序的一体化工具包。它作为一个名为 bun 的单个可执行文件发布。

其核心是 Bun 运行时,一个快速的 JavaScript运行时环境,设计为 Node.js的即插即用替代品。它用 Zig编写,并在底层由JavaScriptCore提供支持,大大减少了启动时间和内存使用。

Node.js

Node.js® 是一个开源的、跨平台的 JavaScript运行时环境。

Deno

Deno下一代 JavaScript运行时环境

engine262

engine262 一个用 JavaScript实现的 ECMA-262实现

目标

非目标

Hermes

React Native 优化的JavaScript引擎

Duktape

Duktape Duktape是一个可嵌入的 JavaScript引擎,重点在于可移植性和小巧的占用空间。

Duktape易于集成到C/C++项目中:将 duktape.cduktape.hduk_config.h 添加到您的构建中,并使用 Duktape APIC 代码中调用 ECMAScript 函数,反之亦然。

主要特性

MuJS

MuJS是一个轻量级的 JavaScript解释器,旨在嵌入到其他软件中,以扩展其脚本功能。

MuJS 的设计重点是小巧、正确和简单。它用可移植的 C语言编写,并按照 ECMA-262 规范实现 ECMAScript。与本地代码绑定的接口被设计为尽可能简单易用,并且非常类似于 Lua。不需要与复杂的C++模板机制互动,也不必担心标记和取消标记垃圾收集根,或者与晦涩的构建系统抗争。
MuJSArtifex Software 开发和维护。它最初是为 MuPDF 查看器开发的,但设计成可以作为独立组件使用。
MuJS 是根据ISC 许可证发布的免费开源软件。

nashorn

nashorn Nashorn引擎是 ECMAScript 第 5.1版语言规范的开源实现。它还实现了 ECMAScript 6 中引入的许多新特性,包括模板字符串、letconst和块作用域、迭代器和 for..of循环、MapSetWeakMapWeakSet数据类型、符号,以及二进制和八进制文字。它是用 Java编写的,并在Java虚拟机上运行。

Nashorn曾经是 JDK的一部分,直到 Java 14。这个项目提供了Nashorn的独立版本,适用于 Java 11及更高版本。

Nashorn是自由软件,根据 GPL v2许可证和Classpath 例外许可证发布,就像 JDK一样。

TinyJS 并不旨在快速或功能齐全。但它非常适用于脚本化简单行为,或者加载和保存设置。

不保证这是符合 JavaScript/EcmaScript 标准的。事实上欢迎提出建议,使其更接近符合标准,而不会过于复杂化代码,或者提供有用的测试用例以添加到测试套件中。

当前 TinyJS 支持:

还有一个42tiny-js分支 - 这由 Armin维护,提供的 JavaScript 实现比 GitHub主分支更具特色。

elk

Elk 是一个小巧的可嵌入 JavaScript引擎,实现了 ES6的一个小但可用的子集。它专为微控制器开发。Elk 允许在 C 中开发的固件中添加 JavaScript自定义,而不是完全用 C/C++编写固件代码 - 这是让客户扩展/定制设备功能的好方法。

Elk的特性包括:

Elk的方法与其他脚本环境(如 micropython)不同,后者为所有内容提供了完整的 JS APIElk完全裸露,甚至没有标准库。所有必需的功能都应从 C/C++ 固件导入,并且 JS代码只是调度事物。这使得Elk非常简单且可调整。

mjs

mJS是为资源有限的微控制器设计的。主要设计目标是:占用空间小和简单的 C/C++互操作性。mJS 实现了 ES6JavaScript 第 6 版)的严格子集:

在 32 位 ARM 上,mJS引擎占用约 50k 的闪存空间,少于 1k 的 RAM(参见介绍文章)。mJSMongooseOS的一部分,用于为物联网设备启用脚本功能。

JerryScript

JerryScript 用于物联网的 JavaScript引擎

JerryScript 是轻量级的 JavaScript引擎,旨在运行在非常受限设备上,如微控制器:

该引擎支持设备上的编译、执行,并允许从JavaScript中访问外设。

Espruino Espruino 是微控制器的 JavaScript 解释器。它专为具有至少 128kB 闪存和 8kB RAM 的设备设计。

besen

BESEN“B ero's E cma S cript E ngine”的缩写,它是用 Object Pascal完全实现的ECMAScript第五版,可以使用Delphi >=7Free Pascal >= 2.5.1编译(也许也适用于 2.4.1)。

BESEN根据LGPL v2.1许可证分发,带有静态链接例外。

特点

上一篇 下一篇

猜你喜欢

热点阅读