Module system strawpersons

Oliver Hunt oliver at apple.com
Mon Jan 18 22:04:42 PST 2010


On Jan 18, 2010, at 8:40 PM, Brendan Eich wrote:

> On Jan 18, 2010, at 6:14 PM, Kam Kasravi wrote:
> 
>> I guess Brendan is saying that if a continuation was natively built ar the '.' then the risk is that not acquiring the resource would result in a zombie. But if the runtime could build a continuation at the '.' then it could come back to it when the resource was acquired. Brendan is that layman's description or did I get it wrong?
> 
> That's not wrong, but it does not consider the preemption point. Scripts in browsers today (event handler or timeout functions, same deal) run to completion. They do not race or nest event loops (bugs notwithstanding). So you can be sure a global variable you've just set to 42 will still be 42 after a call to a function.
> 
> We could break this model at the . whose left-hand side was (import M) but should we?
> 
> Neil Mix's NarrativeJS used -> instead, to signify the difference. I do not propose we break the run-to-completion model implicitly, or add explicit syntax for doing so. At least not without a lot more discussion.

One thing i still do not understand is how a module is loaded -- there seems to be much reference to "module A" and "module B" but where (in the browser context) are we expecting them to be loaded from?  How are module names resolved?  To what extent are module instances expected to be shared (given you have multiple concurrent-ish JS contexts in the browser)?  Or are we primarily interested in defining the semantics for a module specifically, and leaving the actual import mechanism up to the embedding environment.

--Oliver

> 
> /be
> 
>> 
>> Kam
>> 
>> On Jan 18, 2010, at 5:52 PM, ihab.awad at gmail.com wrote:
>> 
>> On Mon, Jan 18, 2010 at 5:43 PM, Oliver Hunt <oliver at apple.com> wrote:
>> It's also horrific in the context of a browser as it's effectively an arbitrary
>> length call blocked on IO.
>> 
>> That's a good description of what I was proposing. Yes it would block
>> the event loop. Perhaps it could be useful if (say) the module were
>> available in a local disk cache but not loaded into memory: the cost
>> of I/O to a disk cache may be reasonable, but not the cost of a
>> completely new fetch from the network.
>> 
>> Ihab
>> 
>> -- 
>> Ihab A.B. Awad, Palo Alto, CA
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>> 
> 



More information about the es-discuss mailing list