Popular implementations of ECMAScript include Chrome’s V8 Engine, Firefox’s SpiderMonkey, and Microsoft Edge’s Chakra. To properly conform to ECMAScript the following criteria must be met:
A conforming implementation of ECMAScript must provide and support all the types, values, objects, properties, functions, and program syntax and semantics described in this specification.
A conforming implementation of ECMAScript must interpret source text input in conformance with the Unicode Standard, Version 5.1.0 or later and ISO/IEC 10646. If the adopted ISO/IEC 10646-1 subset is not otherwise specified, it is presumed to be the Unicode set, collection 10646.
A conforming implementation of ECMAScript that provides an application programming interface that supports programs that need to adapt to the linguistic and cultural conventions used by different human languages and countries must implement the interface defined by the most recent edition of ECMA-402 that is compatible with this specification.
A conforming implementation of ECMAScript may provide additional types, values, objects, properties, and functions beyond those described in this specification. In particular, a conforming implementation of ECMAScript may provide properties not described in this specification, and values for those properties, for objects that are described in this specification.
A conforming implementation of ECMAScript may support program and regular expression syntax not described in this specification. In particular, a conforming implementation of ECMAScript may support program syntax that makes use of the “future reserved words” listed in subclause 188.8.131.52 of this specification.
A conforming implementation of ECMAScript must not implement any extension that is listed as a Forbidden Extension in subclause 16.1.
In other words the following must be true to be considered a valid implementation of ECMAScript:
- Must support all the language features, syntax, and semantics provided in this spec.
- Must interpret source code in Unicode, minimum version 5.1, although note that Unicode 8.0 is available as of 2015. Implied and incorporated in every Unicode standard is ISO/IEC 10646.
- If the implementation provides APIs to support internationalization, then those must conform to the interface specified by the ECMAScript 2015 Internationalization API Specification, referred to here as ECMA-402.
- May create additional features beyond the core ECMAScript functionality.
- May provide additional syntax beyond what’s in the spec. This includes using future reserved words (enum, await, implements, interface, package, private, protected, and public).
- Cannot implement forbidden extensions which will be the topic of a future post.