ECMA-262.pdf, Github-ecma262, Github-test262
ECMAScript version history
|Edition||Date published||Name||Changes from prior edition||Editor|
|1||June 1997||First edition||Guy L. Steele Jr.|
|2||June 1998||Editorial changes to keep the specification fully aligned with ISO/IEC 16262 international standard||Mike Cowlishaw|
|3||December 1999||Added regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors, formatting for numeric output and other enhancements||Mike Cowlishaw|
|4||Abandoned (last draft 30 June 2003)||Fourth Edition was abandoned, due to political differences concerning language complexity. Many features proposed for the Fourth Edition have been completely dropped; some were incorporated into the sixth edition.|
|5||December 2009||Adds “strict mode,” a subset intended to provide more thorough error checking and avoid error-prone constructs. Clarifies many ambiguities in the 3rd edition specification, and accommodates behaviour of real-world implementations that differed consistently from that specification. Adds some new features, such as getters and setters, library support for JSON, and more complete reflection on object properties.||Pratap Lakshman, Allen Wirfs-Brock|
|5.1||June 2011||This edition 5.1 of the ECMAScript standard is fully aligned with third edition of the international standard ISO/IEC 16262:2011.||Pratap Lakshman, Allen Wirfs-Brock|
|6||June 2015||ECMAScript 2015 (ES2015)||See 6th Edition – ECMAScript 2015||Allen Wirfs-Brock|
|7||June 2016||ECMAScript 2016 (ES2016)||See 7th Edition – ECMAScript 2016||Brian Terlson|
|8||June 2017||ECMAScript 2017 (ES2017)||See 8th Edition – ECMAScript 2017||Brian Terlson|
|9||June 2018||ECMAScript 2018 (ES2018)||See 9th Edition – ECMAScript 2018||Brian Terlson|
|10||June 2019||ECMAScript 2019 (ES2019)||See 10th Edition – ECMAScript 2019||Brian Terlson, Bradley Farias, Jordan Harband|
|11||June 2020||ECMAScript 2020 (ES2020)||See 11th Edition – ECMAScript 2020||Jordan Harband, Kevin Smith|
List of ECMAScript engines
- 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.
- JScript .NET: A .NET Framework JScript engine used in ASP.NET based on Common Language Runtime and COM Interop. Unfortunately support was dropped with .NET Core and CoreCLR so its future looks questionable for ASP.NET Core.
- Tamarin: An ActionScript and ECMAScript engine used in Adobe Flash.
- iv, ECMAScript Lexer / Parser / Interpreter / VM / method JIT written in C++
- BESEN: A complete JIT-compiling implementation of ECMAScript Fifth Edition written in Object Pascal.
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. Uniquely, the engine is implemented in ECMAScript 3, which made it possible to run ES2015 in browsers as old as IE6.
- 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.
- Linear B: The ECMAScript engine of the Opera web browser versions 7.0 to 9.50, exclusive.
- V4 (QJSEngine): Qt’s newer ECMAScript engine, powering QML and QtQuick. ES6-compliant and under active development at The Qt Company.
- 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).
- Duktape: A small footprint, easily embeddable Ecmascript E5/E5.1 engine.
- The Kinoma Platform, an ECMAScript 6 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: An ES5.1 subset interpreter with builtin SQLite, JSON, WebSocket, and ZVFS support.
- 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.
- GNU Guile features an ECMAScript interpreter as of version 1.9
- QuickJS: A lightweight ECMAScript 6 interpreter by Fabrice Bellard and Charlie Gordon.