H'lo,

Thanks to some a-maz-ing [1] work by Andreas Rossberg (I'll spare the gory 
algorithmic details), the linking process no longer needs the syntactic 
distinction that static module bindings are only created via the `module` 
(contextual) keyword. This frees us up to simplify the syntax, making much less 
use of the `module` keyword and much more use of `import`.

I've drafted a new syntax that is both much simpler and, I think, far more 
intuitive than the previous version.

Examples:

* importing an external module:

    import "foo.js" as Foo;

* importing a module's export:

    import foo from "foo.js";
    import bar from Bar;
    import baz from bar.mumble.quux;

* importing all exports:

    import * from Bar;

* importing with renaming:

    import { draw: drawGun }    from "cowboy.js",
           { draw: drawWidget } from "widgets.js";

* defining a module (same as ever):

    module m { ... }

* aliasing a module for convenience:

    module m = foo.bar.baz;

This new syntax is up on the wiki:

    http://wiki.ecmascript.org/doku.php?id=harmony:modules

A couple conventions to note about this:

* the "as" contextual keyword signifies renaming the module *itself*

* the "from" contextual keyword always signifies extracting an export /from/ 
the module

* while "import" no longer strictly means extracting an export, it matches 
common spoken usage better -- "import" is used both to mean extracting exports 
/and/ loading external modules

* despite this overloading, a single "import" declaration is *only* ever 
importing modules or importing bindings, never both

Comments welcome [2],
Dave

[1] Really. You have no idea.
[2] Translation: Unleash the hounds of bikeshedding! ;-P

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to