Newly revised Section 10 for ES3.1.

Brendan Eich brendan at
Wed Jul 9 23:59:26 PDT 2008

On Jul 9, 2008, at 11:37 PM, Mark Miller wrote:

> What are the compatibility relationships between ES4 opt-in, ES4
> opt-in strict, ES4 strict, and ES4? I think it's clear that ES4 opt-in
> strict is a subset of ES4 opt-in.

You have to opt into ES4 to even utter the pragma |use strict|, so  
there's no "ES4 strict" without opt-in.

"ES4" without opt-in is also not meaningfully different from the  
compatible default version that browsers more-or-less agree on (which  
has been called "ES3 + reality", which was one idea for ES3.1).  
Keywords new in ES4, even though only contextually reserved under opt- 
in versioning, would not be reserved in any context in the default  

As for new syntax not involving new keywords, and new library APIs,  
we have talked about supporting these additions in the default  
version, since doing so cannot break existing code. Note that "new  
syntax not involving new keywords" does not cover function sub- 
statements, as noted in this thread -- there, compatibility issues  
exist. Also, some implementations have extended ES3 with, e.g., const  
-- again not compatibly with ES4 as proposed. So opt-in versioning  
may (or may not, depending on browser-specific content) be required  
to change the meaning of const or function in a block or other sub- 
statement context.

> Are there any other subset
> relationships among them? I hadn't realized till just now how large
> the gulf might be between ES4 opt-in and ES4.

What is "ES4" without opt-in version selection? How could it differ  
from <script>...</script> or <script type="application/ 

> Do opt-in and strict
> define orthogonal switches? Can opt-in and non-opt-in programs
> co-exist in the same frame (global object)? We all need to clarify
> these issues.

Have you read



More information about the Es4-discuss mailing list