638
edits
No edit summary |
|||
| Line 1: | Line 1: | ||
== New and improved builtin APIs == | == New and improved builtin APIs == | ||
Most of this stuff does not need to touch a lot of code. | Most of this stuff does not need to touch a lot of code. None of it requires a Harmony opt-in. This is great stuff for new contributors to start work on. | ||
* [http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets Simple Maps and Sets] - The spec is incomplete but I will be landing what's there now in [https://bugzilla.mozilla.org/show_bug.cgi?id=697479 bug 697479]. | * [http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets Simple Maps and Sets] - The spec is incomplete but I will be landing what's there now in [https://bugzilla.mozilla.org/show_bug.cgi?id=697479 bug 697479]. | ||
| Line 45: | Line 15: | ||
== New syntax (stuff that affects the front end and/or bytecode) == | == New syntax (stuff that affects the front end and/or bytecode) == | ||
This stuff isn't terribly hard either, for the most part. | |||
* [http://wiki.ecmascript.org/doku.php?id=harmony:egal <code>is</code> and <code>isnt</code> operators] | * [http://wiki.ecmascript.org/doku.php?id=harmony:egal <code>is</code> and <code>isnt</code> operators] | ||
* [http://wiki.ecmascript.org/doku.php?id=harmony:iterators for-of loops] - [https://bugzilla.mozilla.org/show_bug.cgi?id=699565 bug 699565] - This is I'd say better than half done. It was easy. XPConnect must be updated so that arraylike XPCOM objects cooperate with for-of. | * [http://wiki.ecmascript.org/doku.php?id=harmony:iterators for-of loops] - [https://bugzilla.mozilla.org/show_bug.cgi?id=699565 bug 699565] - This is I'd say better than half done. It was easy. XPConnect must be updated so that arraylike XPCOM objects cooperate with for-of. | ||
| Line 57: | Line 30: | ||
== Updating SpiderMonkey extensions to | == Updating SpiderMonkey extensions to the ES6 spec == | ||
We've implemented a ton of stuff, dating back years, that is going to be in ES6 but in a slightly different form. | |||
=== Direct proxies === | === Direct proxies === | ||
There is a ton of verbiage here and it is still under active development. | There is a ton of verbiage here and it is still under active development. Still, I think it should be pretty easy to implement. We can keep <code>Proxy.create</code> and <code>createFunction</code> without a lot of extra effort. | ||
* http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies | * http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies | ||
| Line 82: | Line 57: | ||
* TC39 is specifying that reading a let-variable before it is initialized is an error, which will be a separate bug. | * TC39 is specifying that reading a let-variable before it is initialized is an error, which will be a separate bug. | ||
* <code>const</code> - [https://bugzilla.mozilla.org/show_bug.cgi?id=611388 bug 611388] | * <code>const</code> - [https://bugzilla.mozilla.org/show_bug.cgi?id=611388 bug 611388] | ||
* Block functions - [https://bugzilla.mozilla.org/show_bug.cgi?id=585536 bug 585536] | * Block functions - [https://bugzilla.mozilla.org/show_bug.cgi?id=585536 bug 585536] (note - opt-in only, still banned in ES5 strict mode) | ||
* [http://wiki.ecmascript.org/doku.php?id=harmony:destructuring Destructuring] | * [http://wiki.ecmascript.org/doku.php?id=harmony:destructuring Destructuring] | ||
== Harmony infrastructure == | |||
Some minimal steps here are a prerequisite to doing the features that require a Harmony opt-in: modules and import, block-scoped functions, <code>typeof null</code>, and lexical scoping of names declared at toplevel. | |||
* New SM version number - This is enough to get started on harmony features with only shell tests. | |||
* Opt-in via type="text/ecmascript;version=6" or whatever - [https://bugzilla.mozilla.org/show_bug.cgi?id=694107 bug 694107] | |||
* Per-script opt-in syntax ('use harmony;' or whatever) | |||
* Opt-in via HTTP header? | |||
* Whole-page opt-in via HTML feature? | |||
== Modules == | |||
[http://wiki.ecmascript.org/doku.php?id=harmony:modules harmony:modules] | |||
Modules are [https://bugzilla.mozilla.org/show_bug.cgi?id=568953 bug 568953]. | |||
* <code>module</code> syntax, scoping semantics, module objects | |||
* <code>import</code> syntax | |||
* <code>from "url"</code> syntax | |||
* Hook up <code>from "url"</code> and async module loading to Gecko | |||
* [http://wiki.ecmascript.org/doku.php?id=harmony:module_loaders Module loaders] | |||
With a Harmony opt-in, programs get very different global binding behavior. The bindings are no longer shared with the global object's properties. This is a major change. | |||
== New APIs that are in modules == | |||
* [http://wiki.ecmascript.org/doku.php?id=harmony:modules_standard Reorganize the standard library into modules] | |||
* [http://wiki.ecmascript.org/doku.php?id=harmony:private_name_objects Private name objects] - [https://bugzilla.mozilla.org/show_bug.cgi?id=694127 bug 694127] | |||
* A few functions for [http://wiki.ecmascript.org/doku.php?id=harmony:iterators iterating over object properties] | |||
== Mistakes == | == Mistakes == | ||
edits