List of ECMAScript engines
An ECMAScript engine is a program that executes source code written in a version of the ECMAScript language standard, for example, JavaScript.
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.
- Carakan: A JavaScript engine developed by Opera Software ASA,[1] included in the 10.50[2] release of the Opera web browser, until switching to V8 with Opera 15 (released in 2013).[3][4]
- Chakra (JScript9): A JScript engine used in Internet Explorer. It was first previewed at MIX 10 as part of the Internet Explorer 9 Platform Preview.[5]
- Chakra: A JavaScript engine used in Microsoft Edge.[6]
- SpiderMonkey: A JavaScript engine in Mozilla Gecko applications, including Firefox. The engine currently includes the IonMonkey compiler and OdinMonkey optimization module, has previously included the TraceMonkey compiler (first javascript JIT) and JägerMonkey.
- JavaScriptCore: A JavaScript interpreter and JIT originally derived from KJS. It is used in the WebKit project and applications such as Safari. Also known as Nitro, SquirrelFish and SquirrelFish Extreme.[7]
- Tamarin: An ActionScript and ECMAScript engine used in Adobe Flash.
- V8: A JavaScript engine used in Google Chrome, Node.js, and V8.NET.
- Nashorn: A JavaScript engine used in Oracle Java Development Kit (JDK) since version 8.[8]
- iv, ECMAScript Lexer / Parser / Interpreter / VM / method JIT written in C++[9]
- CL-JavaScript: Can compile JavaScript to machine language on Common Lisp implementations that compile to machine language[10]
The following engines use runtime interpreters, which do not compile into native machine code and generally run more slowly:
- Continuum:[11] 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 Trident layout engine.
- 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.
- Rhino: One of several JavaScript engines from Mozilla, using the Java platform.
- YAJI: An ECMAScript engine[14] based on the FESI[15] implementation by Jean-Marc Lugrin in 1999, using the Java platform, currently being developed to support the latest standards (ECMAScript spec. 262, v5.1).[16]
- Duktape: A small footprint, easily embeddable Ecmascript E5/E5.1 engine.[17]
- The Kinoma Platform, an ECMAScript 6[18] runtime environment and framework. This is one of the first runtimes to correctly implement almost all of the ECMAScript 6 specification, currently unmaintained.
- Moddable successor of Kinoma Platform, currently active project and aims to support more recent versions of ECMAScript.
- Jsish: A JavaScript interpreter with builtin SQLite, JSON, WebSocket, and ZVFS support.[19]
- Websocket.js: An embeddable Javascript engine with HTTP/Websocket support.[20]
- 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.[21]
- V7: Part of the Smart.js platform; claims to be the world's smallest JavaScript engine.[22]
- Tiny-JS: A minimal JavaScript interpreter written in C++.
- JerryScript: A lightweight JavaScript engine by Samsung for microcontrollers with less than 64 KB RAM.
- GNU Guile features an ECMAScript interpreter as of version 1.9
- njs: A lightweight JavaScript interpreter optimized[23] for web server scripting and fastest VM context creation; used in nginx.
See also
- Comparison of ECMAScript engines
- JavaScript engine
- Comparison of application virtualization software
References
- ^ http://labs.opera.com/news/2009/02/05/
- ^ https://web.archive.org/web/20060303160759/http://my.opera.com/desktopteam/blog/
- ^ http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit
- ^ http://my.opera.com/ODIN/blog/opera-14-for-android-is-out
- ^ Frequently Asked Questions, Microsoft, 2010-03-13, retrieved 2010-03-18
- ^ "Targeting Edge vs. Legacy Engines in JsRT APIs". Retrieved 10 September 2015.
- ^ http://trac.webkit.org/wiki/JavaScriptCore
- ^ http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
- ^ "Constellation/iv". Retrieved 2015-11-15.
- ^ "CL-JavaScript". Retrieved 2018-09-14.
- ^ "An ES6 Virtual Machine Built in JavaScript". Retrieved 2012-12-01.
- ^ http://www.ecma-international.org/ecma-262/6.0/
- ^ "Continuum - A JavaScript Virtual Machine Built in JavaScript". Github. Retrieved 2012-12-01.
- ^ "YAJI: Yet Another JavaScript Interpreter". Google Code. Google. Retrieved 2012-01-31.
- ^ "FESI". September 2003.
- ^ "ECMAScript Language Specification ECMA-262 5.1 edition" (PDF). Ecma International. June 2011. Retrieved 2012-01-31.
- ^ "Duktape". Retrieved 2013-09-21.
- ^ http://www.ecma-international.org/ecma-262/6.0/
- ^ "Jsish". Retrieved 2014-04-30.
- ^ "Websocket.js". Retrieved 2014-07-16.
- ^ "MuJS". Retrieved 2014-09-22.
- ^ "Smart.js". Retrieved 2015-08-06.
- ^ "NGINX JavaScript in Your Web Server Configuration". Retrieved 2018-10-30.