ecmascript-wiki
ecmascript-wiki copied to clipboard
📄 Information and links related to ECMAScript engine/tooling development
ECMAScript Wiki
This is a collection of information and links intended to be useful to developers of ECMAScript engines and tooling. Pull requests are most welcome! :^)
Engines
| Logo | Name | Website | Source code | Implementation Language | License | Supported ES version |
|---|---|---|---|---|---|---|
| Bali | https://github.com/ferus-web/bali | Nim | GPL-3.0 | |||
| BESEN | https://github.com/BeRo1985/besen | Object Pascal | LGPL-2.1 | ES5 | ||
| Boa | https://boajs.dev | https://github.com/boa-dev/boa | Rust | MIT | ||
| ChakraCore | https://github.com/chakra-core/ChakraCore | C++ | MIT | |||
| Duktape | https://github.com/svaarala/duktape | C | MIT | ES5.1, ES6/7 (partial) | ||
| Elk | https://github.com/cesanta/elk | C | AGPL-3 | subset of ES6 | ||
| engine262 | https://engine262.js.org | https://github.com/engine262/engine262 | JavaScript | MIT | ESNext | |
| Escargot | https://github.com/Samsung/escargot | C++ | LGPL-2.1 | ES2020 | ||
| Espruino | https://www.espruino.com | https://github.com/espruino/Espruino | C | MPL-2.0 | ||
| Flathead | https://github.com/ndreynolds/flathead | C | MIT | |||
| goja | https://github.com/dop251/goja | Go | MIT | ES5.1 | ||
| GraalJS (GraalVM JavaScript) | https://www.graalvm.org/dev/reference-manual/js/ | https://github.com/oracle/graaljs | Java | UPL-1.0 | ESNext | |
| Hermes | https://github.com/facebook/hermes | C++ | MIT | ES6 with some exceptions | ||
| Higgs | https://github.com/higgsjs/Higgs | D | ||||
| iv | https://github.com/constellation/iv | C++ | BSD-2-Clause | ES5.1 | ||
| JavaScriptCore | https://trac.webkit.org/wiki/JavaScriptCore | https://github.com/WebKit/WebKit/tree/main/Source/JavaScriptCore | C++, JavaScript | LGPL-2.1 | ESNext | |
| JerryScript | https://jerryscript.net | https://github.com/jerryscript-project/jerryscript | C | Apache-2.0 | ES5.1 | |
| Jint | https://github.com/sebastienros/jint | C# | BSD-2-Clause | ESNext | ||
| Js2Py | http://piter.io/projects/js2py | https://github.com/PiotrDabkowski/Js2Py | Python | MIT | ES5.1 | |
| JS-Interpreter | https://github.com/NeilFraser/JS-Interpreter | JavaScript | Apache-2.0 | |||
| Kiesel | https://kiesel.dev | https://codeberg.org/kiesel-js/kiesel | Zig | MIT | ||
| LibJS | https://libjs.dev | https://github.com/SerenityOS/serenity/tree/master/Userland/Libraries/LibJS | C++ | BSD-2-Clause | ESNext | |
| mJS | https://mongoose-os.com | https://github.com/cesanta/mjs | C | GPL-2 | subset of ES6 | |
| MuJS | https://mujs.com | https://git.ghostscript.com/?p=mujs.git | C | ISC | ES5 | |
| Nashorn | https://openjdk.org/projects/nashorn | https://github.com/openjdk/nashorn | Java | GPL-2.0 | subset of ES6 | |
| njs | https://nginx.org/en/docs/njs/ | https://github.com/nginx/njs | C | BSD-2-Clause | ES5.1, ES6+ (partial) | |
| Nova | https://github.com/trynova/nova | Rust | ||||
| Otto | https://github.com/robertkrimen/otto | Go | MIT | ES5 | ||
| Porffor | https://porffor.goose.icu | https://github.com/CanadaHonk/porffor | JavaScript | MIT | ||
| QtJsEngine/Qv4 | https://doc.qt.io/qt-6/qjsengine.html | https://code.qt.io/cgit/qt/qtdeclarative.git/tree/src/qml | C++ | LGPL | ||
| QtScript | https://doc.qt.io/qt-5/qtscript-index.html | https://code.qt.io/cgit/qt/qtscript.git | C++ | LGPL | ||
| QuickJS | https://bellard.org/quickjs/ | https://github.com/bellard/quickjs | C | MIT | ES2020 | |
| Reeva | https://github.com/ReevaJS/reeva | Kotlin | BSD-2-Clause | |||
| Rhino | https://mozilla.github.io/rhino | https://github.com/mozilla/rhino | Java | MPL-2.0 | subset of ES6 | |
| Spidermonkey | https://spidermonkey.dev | https://searchfox.org/mozilla-central/source/js | C++, Rust, JavaScript | MPL-2.0 | ESNext | |
| Starlight | https://teletype.in/@starlight-js | https://github.com/Starlight-JS/starlight | Rust | MPL-2.0 | ||
| tiny-js | https://github.com/gfwilliams/tiny-js | C++ | MIT | |||
| V8 | https://v8.dev | https://source.chromium.org/chromium/chromium/src/+/main:v8/ | C++, JavaScript | BSD | ESNext | |
| XS (Moddable SDK) | https://www.moddable.com | https://github.com/Moddable-OpenSource/moddable | C | LGPL-3 | ES2021 | |
| Yavashark | https://github.com/Sharktheone/yavashark | Rust | MIT |
Note ESNext indicates that the engine generally targets the latest ECMAScript standard without major exceptions.
Installers
- esvu - esvu is your one-stop shop for all implementations of ECMAScript
- jsvu - JavaScript (engine) Version Updater
Wrappers
- eshost - A uniform wrapper around a multitude of ECMAScript hosts
- eshost-cli - Run ECMAScript code uniformly across any ECMAScript host
Specifications
- ECMA-262 - ECMAScript Language Specification
- ECMA-402 - ECMAScript Internationalization API Specification
Testing
Test Suites
- test262 - Official ECMAScript Conformance Test Suite
- Spidermonkey tests - Spidermonkey's own test suite
- LibJS tests - LibJS's own test suite
Test Results
- test262.fyi - Daily runner of test262 for many engines
- test262.report - test262 results for various engines (defunct as of 2022-09)
- boajs.dev/conformance - test262 results for Boa
- porffor.dev/#test262_percent - test262 results for Porffor
- ladybirdbrowser.github.io/libjs-website/test262 - test262 results for Ladybird's LibJS (AST, bytecode, parser tests)
Test Runners
- bterlson/test262-harness - Experimental harness for test262, uses eshost
- linusg/libjs-test262 - test262 runner for LibJS
- LibJS
test-js- Custom test runner for the LibJS tests
Transpilers
TODO: Babel, Sucrase, SWC
Websites
- ECMAScript proposals
- TC39 - Ecma TC39 committee standardizing ECMAScript
- WinterCG - Web-interoperable Runtimes Community Group