Jump to content

List of ECMAScript engines: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
ECMAScript Engines: GNU Guile has a JIT compiler
Just-in-time compilation engines: Edge has moved onto V8
Line 14: Line 14:
* [[Carakan (script engine)|Carakan]]: A JavaScript engine developed by [[Opera Software ASA]], included in the [[History of the Opera web browser#Version 10|10.50]] release of the [[Opera (web browser)|Opera]] web browser, until switching to [[V8 (JavaScript engine)|V8]] with Opera 15 (released in 2013).<ref>{{Cite web |url=http://labs.opera.com/news/2009/02/05/ |title=Archived copy |access-date=2009-07-09 |archive-url=https://web.archive.org/web/20090531095136/http://labs.opera.com/news/2009/02/05/ |archive-date=2009-05-31 |url-status=dead }}</ref><ref>{{Cite web|url=http://my.opera.com/desktopteam/blog/|archive-url = https://web.archive.org/web/20060303160759/http://my.opera.com/desktopteam/blog/|archive-date = 2006-03-03|title = Opera Desktop Team's Blog &#124; Opera}}</ref><ref>{{Cite web|url=http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit|title=Dev.Opera — Blog}}</ref><ref>{{Cite web|url=http://my.opera.com/ODIN/blog/opera-14-for-android-is-out|title=Dev.Opera — Blog}}</ref>
* [[Carakan (script engine)|Carakan]]: A JavaScript engine developed by [[Opera Software ASA]], included in the [[History of the Opera web browser#Version 10|10.50]] release of the [[Opera (web browser)|Opera]] web browser, until switching to [[V8 (JavaScript engine)|V8]] with Opera 15 (released in 2013).<ref>{{Cite web |url=http://labs.opera.com/news/2009/02/05/ |title=Archived copy |access-date=2009-07-09 |archive-url=https://web.archive.org/web/20090531095136/http://labs.opera.com/news/2009/02/05/ |archive-date=2009-05-31 |url-status=dead }}</ref><ref>{{Cite web|url=http://my.opera.com/desktopteam/blog/|archive-url = https://web.archive.org/web/20060303160759/http://my.opera.com/desktopteam/blog/|archive-date = 2006-03-03|title = Opera Desktop Team's Blog &#124; Opera}}</ref><ref>{{Cite web|url=http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit|title=Dev.Opera — Blog}}</ref><ref>{{Cite web|url=http://my.opera.com/ODIN/blog/opera-14-for-android-is-out|title=Dev.Opera — Blog}}</ref>
* [[Chakra (JScript engine)|Chakra (JScript9)]]: A [[JScript]] engine used in [[Internet Explorer]]. It was first previewed at [[MIX (Microsoft)#MIX 10|MIX 10]] as part of the Internet Explorer 9 Platform Preview.<ref>{{citation |url=http://ie.microsoft.com/testdrive/info/FrequentlyAskedQuestions/Default.html |title=Frequently Asked Questions |date=2010-03-13 |access-date=2010-03-18 |publisher=[[Microsoft]] |archive-url=https://web.archive.org/web/20100322193213/http://ie.microsoft.com/testdrive/info/FrequentlyAskedQuestions/Default.html |archive-date=2010-03-22 |url-status=dead }}</ref>
* [[Chakra (JScript engine)|Chakra (JScript9)]]: A [[JScript]] engine used in [[Internet Explorer]]. It was first previewed at [[MIX (Microsoft)#MIX 10|MIX 10]] as part of the Internet Explorer 9 Platform Preview.<ref>{{citation |url=http://ie.microsoft.com/testdrive/info/FrequentlyAskedQuestions/Default.html |title=Frequently Asked Questions |date=2010-03-13 |access-date=2010-03-18 |publisher=[[Microsoft]] |archive-url=https://web.archive.org/web/20100322193213/http://ie.microsoft.com/testdrive/info/FrequentlyAskedQuestions/Default.html |archive-date=2010-03-22 |url-status=dead }}</ref>
* [[Chakra (JavaScript engine)|Chakra]]: A [[JavaScript]] engine used in [[Microsoft Edge]].<ref>{{cite web|title=Targeting Edge vs. Legacy Engines in JsRT APIs|url=https://msdn.microsoft.com/en-us/library/dn903710(v=vs.94).aspx|access-date=10 September 2015}}</ref>
* [[Chakra (JavaScript engine)|Chakra]]: A [[JavaScript]] engine previously used in older versions of [[Microsoft Edge]], before being replaced by V8.<ref>{{cite web|title=Targeting Edge vs. Legacy Engines in JsRT APIs|url=https://msdn.microsoft.com/en-us/library/dn903710(v=vs.94).aspx|access-date=10 September 2015}}</ref>
* [[SpiderMonkey]]: A JavaScript engine in Mozilla [[Gecko (software)|Gecko]] applications, including [[Mozilla Firefox|Firefox]]. The engine currently includes the IonMonkey compiler and OdinMonkey optimization module, has previously included the TraceMonkey compiler (first javascript JIT) and JägerMonkey.
* [[SpiderMonkey]]: A JavaScript engine in Mozilla [[Gecko (software)|Gecko]] applications, including [[Mozilla Firefox|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 (software)|KJS]]. It is used in the [[WebKit]] project and applications such as [[Safari (web browser)|Safari]]. Also known as Nitro, SquirrelFish, and SquirrelFish Extreme.<ref>{{Cite web|url=http://trac.webkit.org/wiki/JavaScriptCore|title=JavaScriptCore – WebKit}}</ref>
* [[JavaScriptCore]]: A JavaScript interpreter and JIT originally derived from [[KJS (software)|KJS]]. It is used in the [[WebKit]] project and applications such as [[Safari (web browser)|Safari]]. Also known as Nitro, SquirrelFish, and SquirrelFish Extreme.<ref>{{Cite web|url=http://trac.webkit.org/wiki/JavaScriptCore|title=JavaScriptCore – WebKit}}</ref>

Revision as of 15:40, 15 August 2022

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

ECMAScript Engines

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:

  • Continuum: A self-interpreter that supports older drafts of the ECMAScript 2015 specification.[13] Uniquely, the engine is implemented in ECMAScript 3, which made it possible to run ES2015 in browsers as old as IE6.[14]
  • 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.[15]
  • 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).[16][17][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]
  • Websocket.js: An embeddable Javascript engine with HTTP/Websocket support.[24]
  • 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.[25]
  • 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.[26]
  • 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.[27][28]

See also

References

  1. ^ "Archived copy". Archived from the original on 2009-05-31. Retrieved 2009-07-09.{{cite web}}: CS1 maint: archived copy as title (link)
  2. ^ "Opera Desktop Team's Blog | Opera". Archived from the original on 2006-03-03.
  3. ^ "Dev.Opera — Blog".
  4. ^ "Dev.Opera — Blog".
  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. ^ http://www.ecma-international.org/ecma-262/6.0/
  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. ^ "Duktape". Retrieved 2013-09-21.
  20. ^ https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/xs/XS%20Conformance.md#results
  21. ^ "Apps for IoT". Archived from the original on 2018-12-28.
  22. ^ https://www.moddable.com/XS7-TC-39
  23. ^ "Jsish". Retrieved 2014-04-30.
  24. ^ "Websocket.js". GitHub. Retrieved 2014-07-16.
  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 - jasonwilliams/boa: Boa is an embeddable and experimental Javascript engine written in Rust". github.com. Retrieved 2022-04-08.