- new value tag
- sling throug hthe property sites
- audit tag examiners
- teach the jits
- ensure TI sanity with new jsids
- strict mode only
- only function calls (including template strings), not member-expressions
a.b
or identifiersx
that trigger getters - calling through a proxy is the hard part
- coalescing AutoCompartments (to reduce to a bounded amount of memory the number of AutoCompartments we need to have for an unbounded number of tail-calls across compartment boundaries)
- frontend only (except super)
- frontend only, pretty much desugars to a function call
- String.raw
-
behavior in global scope ("lexical tier")
-
for(let x in/of y)
loop variable scoping (bug 449811); ditto in array comprehensions (bug 469402) -
temporal dead zone When you declare { alert(x); // TypeError let x = 2; } it's a TypeError to get x before it is assigned. { function f() {...} function g() {...x...} f(); let x = 2; } { let x = y, y; // TypeError even though we didn't try to do anything to y }
- new opcode for "get let/const variable and check for undefined"
- analysis (frontend? TI?) to determine, for any given access, whether it could be undefined.
-
test262 for compliance
- audit minor spec changes
- audit getPrototypeOf sites for JS callbacks
- write new ScriptedProxyHandler hooks
- frontend support
- module instance objects
- new import bindings, new opcodes, jit support
- debugger interactions
- linking
- Loader API
- spec isn't done
- existing compartment infrastructure should make this pretty easy
- can self-host, or clone MapObject.cpp
- has a lot more new syntax than it "feels" like to users (just feels like a single new keyword, but many productions)
- interacts with classes, method shorthand, tail calls