Module isolation

Brendan Eich brendan at mozilla.com
Mon Jan 18 10:13:29 PST 2010


On Jan 18, 2010, at 9:57 AM, Mark S. Miller wrote:

> No, I wrote "migrate into a module" meaning be part of the inside of  
> a module -- not be packaged as a module.
>
> I don't get it. What do you have in mind?

What's not to get? If you use Prototype inside a module, it will  
mutate "the primordials" -- whatever ones it finds on the global at  
the end of its scope chain. If those primordials are frozen, game over.

Tons of JS on the web mutates primordials, e.g.:

http://www.google.com/codesearch?as_q=Array.prototype.\w%2B+%3D 
+&btnG=Search 
+ 
Code 
&hl 
= 
en 
&as_lang 
= 
javascript 
&as_license_restrict=i&as_license=&as_package=&as_filename=&as_case=
http://www.google.com/codesearch?hl=en&lr=&q=%22extend%28Array.prototype%22&sbtn=Search

For any such code to move into a module, that code wants mutable  
primordials. For isolation these would be per-module, and to avoid  
problems exporting functions, some kind of membrane to support  
virtualized mutation or throw on mutation attempt would be required  
around any exposed objects that lead back to in-module prototypes.

Or we could say "rewrite all your code" or "forget it". But that is  
not a given.

/be



More information about the es-discuss mailing list