List of ECMAScript engines

Last updated

An ECMAScript engine is a software platform that can run code written in ECMAScript, a programming language more commonly known as JavaScript.

Contents

More formally, an ECMAScript engine is, at least in part, a "conforming implementation" of the ECMAScript programming language specified by the ECMA-262 international standard. [1]

Many implementations of ECMAScript engines are available, which differ based on the platforms they are intended to support, their level of conformance, and other implementation-specific characteristics. This article attempts to provide a relatively comprehensive list of engines that execute ECMAScript code.

The uses of the listed engines vary widely; some of these are engines intended for browsers that can run ECMAScript code on websites that include ECMAScript, like V8 (used in both Google Chrome and Node.js) and SpiderMonkey; some are intended for specific platforms (like Tamarin, Espruino, Rhino, Nashorn, and GraalJS).

Just-in-time compilation engines

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

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

See also

Related Research Articles

<span class="mw-page-title-main">JavaScript</span> High-level programming language

JavaScript, often abbreviated as JS, is a programming language and core technology of the Web, alongside HTML and CSS. 99% of websites use JavaScript on the client side for webpage behavior.

ECMAScript is a standard for scripting languages, including JavaScript, JScript, and ActionScript. It is best known as a JavaScript standard intended to ensure the interoperability of web pages across different web browsers. It is standardized by Ecma International in the document ECMA-262.

<span class="mw-page-title-main">SpiderMonkey</span> JavaScript and WebAssembly engine maintained by the Mozilla Foundation

SpiderMonkey is an open-source JavaScript and WebAssembly engine by the Mozilla Foundation.

JScript is Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer web browser and HTML Applications, and as a standalone Windows scripting language.

Rhino is a JavaScript engine written fully in Java and managed by the Mozilla Foundation as open source software. It is separate from the SpiderMonkey engine, which is also developed by Mozilla, but written in C++ and used in Mozilla Firefox.

Presto was the browser engine of the Opera web browser from the release of Opera 7 on 28 January 2003, until the release of Opera 15 on 2 July 2013, at which time Opera switched to using the Blink engine that was originally created for Chromium. Presto was also used to power the Opera Mini and Opera Mobile browsers.

WebKit is a browser engine primarily used in Apple's Safari web browser, as well as all web browsers on iOS and iPadOS. WebKit is also used by the PlayStation consoles starting with the PS3, the Tizen mobile operating systems, the Amazon Kindle e-book reader, Nintendo consoles starting with the 3DS Internet Browser, and the discontinued BlackBerry Browser.

A JavaScript engine is a software component that executes JavaScript code. The first JavaScript engines were mere interpreters, but all relevant modern engines use just-in-time compilation for improved performance.

ECMAScript for XML (E4X) was an extension to ECMAScript to add native support for XML. The goal was to provide a simpler alternative to the DOM interface for accessing XML documents. E4X added XML as a primitive data structure to allow for faster access and better support within the language.

SCXML stands for State Chart XML: State Machine Notation for Control Abstraction. It is an XML-based markup language that provides a generic state-machine-based execution environment based on Harel statecharts.

Tamarin is a discontinued free software virtual machine with just-in-time compilation (JIT) support intended to implement the 4th edition of the ECMAScript (ES4) language standard. Tamarin source code originates from ActionScript Virtual Machine 2 (AVM2) developed by Adobe Systems, as introduced within Adobe Flash Player 9, which implements ActionScript 3 scripting language. ActionScript Virtual Machine 2 was donated as open-source to Mozilla Foundation on November 7, 2006, to develop Tamarin as a high-performance virtual machine, with the support from broad Mozilla community, to be used by Mozilla and Adobe Systems in the next generation of their JavaScript and ActionScript engines with the ultimate aim to unify the scripting languages across web browsers and Adobe Flash platform and ease the development of better performing rich web applications.

V8 is a JavaScript and WebAssembly engine developed by Google for its Chrome browser. V8 is free and open-source software that is part of the Chromium project and also used separately in non-browser contexts, notably the Node.js runtime system.

Chakra is a proprietary JScript engine developed by Microsoft. It is used in the Internet Explorer web browser.

Chakra was a free and open-source JavaScript engine developed by Microsoft for its Microsoft Edge Legacy web browser. It is a fork of the same-named JScript engine used in Internet Explorer. Like the EdgeHTML browser engine, the declared intention was that it would reflect the "Living Web". The core components of Chakra were open-sourced as ChakraCore. In 2021, Microsoft terminated support for the engine, citing its transition to a Chromium based engine for Edge. Support has been transferred to the community, where it remains inactive.

CommonJS is a project to standardize the module ecosystem for JavaScript outside of web browsers.

asm.js is a subset of JavaScript designed to allow computer software written in languages such as C to be run as web applications while maintaining performance characteristics considerably better than standard JavaScript, which is the typical language used for such applications.

<span class="mw-page-title-main">GraalVM</span> Virtual machine software

GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for.

This is a list of articles related to the JavaScript programming language.

<span class="mw-page-title-main">Deno (software)</span> Secure JavaScript and TypeScript runtime

Deno is a runtime for JavaScript, TypeScript, and WebAssembly that is based on the V8 JavaScript engine and the Rust programming language. Deno was co-created by Ryan Dahl, who also created Node.js.

Boa is an open-source JavaScript engine written in Rust. Boa was introduced at JSConf EU 2019 by Jason Williams.

References

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