List of ECMAScript engines

From Wikipedia, the free encyclopedia

An ECMAScript engine is a program that executes source code written in a version of the ECMAScript language standard, for example, JavaScript.

Just-in-time compilation engines[edit]

These are new generation ECMAScript engines for web browsers, all implementing just-in-time compilation (JIT) or variations of that idea. The performance benefits for just-in-time compilation make it much more suitable for web applications written in JavaScript.

Runtime interpreter engines[edit]

The following engines use runtime interpreters, which do not compile into native machine code and generally run more slowly:

  • Continuum: A self-interpreter that supports older drafts of the ECMAScript 2015 specification.[12] Uniquely, the engine is implemented in ECMAScript 3, which made it possible to run ES2015 in browsers as old as IE6.[13]
  • Futhark: The ECMAScript engine of the Opera web browser versions 9.50 to 10.10.
  • InScript: An obsolete proprietary library used for iCab 2 and 3.
  • JScript: The engine that is used in Internet Explorer for versions up to IE9, and one component of the MSHTML (Trident) browser engine.
  • Jint: Javascript interpreter with integrated engine for .NET
  • KJS: The engine used in Konqueror, and one component of KHTML, a predecessor to JavaScriptCore.
  • Linear B: The ECMAScript engine of the Opera web browser versions 7.0 to 9.50, exclusive.
  • Narcissus: JavaScript implemented in JavaScript (a meta-circular evaluator), intended to run in another JavaScript engine, of theoretical and educational nature only.
  • JS-Interpreter A lightweight JavaScript interpreter implemented in JavaScript with step-by-step execution.
  • QtScript: Originally developed by Trolltech, now owned by The Qt Company. It provides QObject integration with JavaScriptCore.
  • V4 (QJSEngine): Qt's newer ECMAScript engine, powering QML and QtQuick. ES6-compliant and under active development at The Qt Company. V4 is JIT compiled.[14]
  • Rhino: One of several JavaScript engines from Mozilla, using the Java platform.
  • YAJI: An ECMAScript engine based on the FESI implementation by Jean-Marc Lugrin in 1999, using the Java platform, currently being developed to support the latest standards (ECMAScript spec. 262, v5.1).[15][16][17]
  • Microvium: JavaScript engine for microcontrollers, supporting a restricted subset of the ECMAScript specification, using less than 16 kB of flash memory and 64 B of RAM while idle.[18]
  • Duktape: A small footprint, easily embeddable Ecmascript E5/E5.1 engine.[19]
  • XS JavaScript Engine: An ECMAScript 2020-compliant engine for microcontrollers with limited resources.[20][21] XS is maintained by Moddable as part of the Moddable SDK and was formerly part of the Kinoma Platform.[22]
  • Jsish: An ES5.1 subset interpreter with builtin SQLite, JSON, WebSocket, and ZVFS support.[23]
  • Espruino: A very small footprint interpreter specifically for microcontrollers. Can run in less than 8 kB of RAM by executing from source (rather than bytecode).
  • MuJS: A lightweight ECMAScript interpreter library, designed for embedding in other software to extend them with scripting capabilities. Originally developed for MuPDF.[24]
  • mJS: Restricted JavaScript engine. Used for Internet of Things (IoT).
  • Tiny-JS: A minimal JavaScript interpreter written in C++.
  • JerryScript: A lightweight JavaScript engine by Samsung for microcontrollers with less than 64 KB RAM.
  • njs: A lightweight JavaScript interpreter optimized for web server scripting and fastest VM context creation; used in nginx.[25]
  • QuickJS: A lightweight ECMAScript 6 interpreter by Fabrice Bellard and Charlie Gordon.
  • engine262: A JavaScript engine written in JavaScript for development and exploration. It is primarily used to validate the ECMAScript specification.
  • Boa: A JavaScript engine written in Rust.[26][27]
  • ScriptEase: an old proprietary engine last updated in 2003. Only notable for its use in the James Webb Space Telescope.[28]
  • LibJS: JavaScript engine of the SerenityOS project.[29] Initially it was only an AST interpreter, but has in parallel developed a byte code generator and interpreter. As of June 30th 2023 the byte code runtime is close to feature parity, and scored 86.4% on the test262 test suite.[30] At some point, the developer Andreas Kling was working on porting it to Just-in-time compilation, but he later changed his mind,[31] citing development/debugging issues while also saying that he is interested to see how far utility and usability of the engine can go without it.

See also[edit]

References[edit]

  1. ^ "Carakan". Archived from the original on 2009-05-31. Retrieved 2009-07-09.
  2. ^ "Opera Desktop Team's Blog | Opera". Archived from the original on 2006-03-03.
  3. ^ a b "Dev.Opera — Blog". dev.opera.com.
  4. ^ Frequently Asked Questions, Microsoft, 2010-03-13, archived from the original on 2010-03-22, retrieved 2010-03-18
  5. ^ "Targeting Edge vs. Legacy Engines in JsRT APIs". Retrieved 10 September 2015.
  6. ^ "JavaScriptCore – WebKit".
  7. ^ "Oracle Nashorn: A Next-Generation JavaScript Engine for the JVM".
  8. ^ "Constellation/iv". GitHub. Retrieved 2015-11-15.
  9. ^ "CL-JavaScript". Retrieved 2018-09-14.
  10. ^ "Support me". GitHub. 18 November 2021.
  11. ^ "Using Hermes". Facebook. Retrieved 9 April 2021.
  12. ^ "ECMAScript 2015 Language Specification – ECMA-262 6th Edition".
  13. ^ "An ES6 Virtual Machine Built in JavaScript". Archived from the original on 2012-12-03. Retrieved 2012-12-01.
  14. ^ "V4 - Qt Wiki". wiki.qt.io. Retrieved 2021-04-24.
  15. ^ "ECMAScript Language Specification ECMA-262 5.1 edition" (PDF). Ecma International. June 2011. Archived from the original (PDF) on 2015-04-12. Retrieved 2012-01-31.
  16. ^ "YAJI: Yet Another JavaScript Interpreter". Google Code. Retrieved 2012-01-31.
  17. ^ "FESI". September 2003. Archived from the original on 2012-09-06. Retrieved 2012-08-06.
  18. ^ "Microvium is very small". 11 June 2022. Retrieved 23 August 2022.
  19. ^ "Duktape". Retrieved 2013-09-21.
  20. ^ "moddable/documentation/xs/XS Conformance.md at public". GitHub.
  21. ^ "Apps for IoT". Archived from the original on 2018-12-28.
  22. ^ "Xs7 @ Tc-39".
  23. ^ "Jsish". Retrieved 2014-04-30.
  24. ^ "MuJS". Retrieved 2014-09-22.
  25. ^ "NGINX JavaScript in Your Web Server Configuration". YouTube. Archived from the original on 2021-12-13. Retrieved 2018-10-30.
  26. ^ "Let's build a JavaScript Engine". 2019.jsconf.eu. Retrieved 2022-03-23.
  27. ^ "GitHub - boa-dev/boa: Boa is an embeddable and experimental Javascript engine written in Rust". github.com. Retrieved 2022-04-08.
  28. ^ Clark, Mitchell (2022-08-18). "The James Webb Space Telescope runs JavaScript, apparently". The Verge. Retrieved 2022-09-02.
  29. ^ "LibJS JavaScript engine". libjs.dev. Retrieved 2023-06-30.
  30. ^ Ladybird browser update (June 2023), retrieved 2023-06-30
  31. ^ Ladybird browser update (February 2024), retrieved 2024-04-18