JavaScript needs macros

JavaScript needs modules? No.

JavaScript needs a macro compiler companion to extend the language with new statements:

    defs export(VarDecleration v) {
        this.{{v.varName}} = {{v.initValue}};
    }

    defs module(VarName n, Block b) {
        var {{n}} = new function () {{b}};
    }

    defs import(VarName module, Period p, VarName vName) {
        var {{vName}} = {{module}}.{{vName}};
    }

So (~> pronounced “compiles to”):

    >>> export var foo = 3;
    ~> this.foo = 3;

    >>> module X { ... }; 
    ~> var X = new function () { ... }

    >>> import A.B;
    ~> var B = A.B;

And there are your modules, compatible with every browser instantaneously, without having to wait for IE12 to implement any JS dialects.