Mark S. Miller wrote:
On Wed, Jul 31, 2013 at 5:00 PM, Brendan Eich <[email protected]
<mailto:[email protected]>> wrote:
Taking a tip from Mark and pulling my own words out of the
"Agreeing on user-defined symbols" thread:
This serialize point is good, and gets to something I raised with
Allen yesterday, which he originally stated: realms should be
*more* isolated. We may want distribuited (cross-machine) realms.
IE and other browsers may already do cross-process window.open,
returning a DCOM proxy or some such. SpiderMonkey in Firefox uses
membranes across all realm/global boundaries, even same-origin.
Given this, I think instanceof (or typeof with an extension that
must be realm-specific because implemented by user-code, or else
we have to reify the "world of realms" as discussed in the other
thread) breaking cross-realm could be addressed by saying "proxy
harder". IOW let's not complicate JS with realms, worlds, truly
global string to symbol registries, etc. etc.
Let's get back to the simplicity of same-realm as the normal case,
with few-and-legacy exceptions. Can we do it?
-----
Realms are a good addition but if browsers are all using membranes
cross-realm, then this enables us to do more via proxies
(wrappers) to satisfy user-facing API and built-in operator
constraints.
I think this is the legacy compat issue that may tie our hands here.
As I understand it, all browsers enable cross realm intimate mixing of
object graphs via same origin iframes. Firefox does impose a membrane
boundary here. I believe WebKit does not. I do not know what IE does.
I would guess that Opera now does whatever WebKit does.
You mean Blink :-P -- now diverging from WebKit, including in DOM
implementation. I believe now the native (C++-implemented) DOM stuff
implements the needed tracing GC hooks to avoid cyclic leaks through
reference-counted and V8-rooted edges.
Anyway, the point is browsers have changed over the years, and membranes
and proxies -- including WindowProxy codified by HTML5 -- are now
common. Can we make use of this?
The reason FF does is because of the %^##*^&%&(*#@#&
Tell me how you really feel :-P
But no, this is not why we use membranes across all real/global
boundaries. We do it for performance, to make the global object and its
"compartment" 1:1.
origin truncation kludge that the web still continues to support,
where two frames that are same origin at t-zero may become different
origin at t-one. FF revokes inappropriate inter-realm access at that
point, because such access would then violate same origin separation.
I don't know how browsers without such inter-frame membranes cope with
the sudden need to impose origin separation that cuts through an
entangled object graph, but presumably in an observably different
manner. I also have no idea what html5 specifies must be done in this
situation.
HTML5 specifies document.domain fully:
http://www.whatwg.org/specs/web-apps/current-work/multipage/origin-0.html
In any case, as long as these realms remain same origin, I believe all
browsers act compatibly. This requires that the membrane used by FF be
fully transparent until revoked, so that it acts identically to the
lack of a membrane on the other browsers.
Please, anyone who knows the actual situation should speak up, either
to correct or confirm what I'm saying, because I'm really uncertain
about this. What's the actual situation?
I know you hate document.domain, but as noted above, it's not the
proximate cause of our compartment-per-global model. Also, I'm told even
IE9 could remote window.open cross-process, which really isolates realms
even if same-origin. (But perhaps it doesn't remote unless
different-origin?)
So yes, calling all implementors. Cc'ing a few.
/be
If I'm right that user-extensible methods and values, including
typeof customization, require either realm-sensitivity or else
world-of-realms spec and even more user-facing complexity, then we
also ought to think twice about the "isolate realms harder" option.
/be
_______________________________________________
es-discuss mailing list
[email protected] <mailto:[email protected]>
https://mail.mozilla.org/listinfo/es-discuss
--
Cheers,
--MarkM
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss