Till now I was neutral on the term "Vat". But part of the notion of Vat is
that Vats are (mostly[1]) only asynchronously coupled. Two fully membraned
subgraphs, interacting synchronously only through Proxies, would by my
normal definitions be together in one Vat.
For this separation, where non-subvertable membrane boundaries impose
security boundaries between disjoint subgraphs of the object graph, I use
the term "Compartment". This corresponds well enough to the established
meaning of "Compartment" in computer security.
[1] In E the issue of asynchronous-only coupling is broken into two
concepts, the Vat and the Runner. Each Vat is within one Runner, and there
can be multiple Vats within a Runner. Each Job (nee Turn) is associated
with a one Vat. Each Runner is associated with a single threat of control.
Each Job of any Vat within a Runner, once started, runs to completion
before that Runner can start any of the other Jobs of any of its Vats.
Thus, a single non-terminating Job of any Vat within a Runner prevents any
further progress by any other Vat within that Runner. This is the *only*
sense in which Vats within a Runner are synchronously coupled.
Objects within one Vat cannot synchronously invoke/access any objects/state
within any other Vat, whether in the same Runner or not. So, I would say
that Runners are units of concurrency, Vats are units of asynchrony, and
Compartments are units of unmediated direct access.
On Fri, Oct 17, 2014 at 9:37 AM, Allen Wirfs-Brock <allen at wirfs-brock.com>
Post by Boris ZbarskyVats as currently specified have independent event loops and allow
parallel JS execution, in the sense that they are totally disconnected from
each other and have separate run-to-completion guarantees.
Post by Boris ZbarskyA window and its same-origin subframe have two separate WindowProxys but
can't really be separate Vats given the above, yes?
We've also talked about this in the other recent related thread.
As Vats are current specified (the ES6 spec essentially describes a single
Vat), the host is responsible for making Job scheduling decisions for each
Vat. This means that a host that is managing multiple Vats could impose a
synchronous scheduling policy that spans multiple Vats. This seems like it
may be sufficient to describe browsers behavior.
Allen
_______________________________________________
es-discuss mailing list
es-discuss at mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
--
Cheers,
--MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141017/d964f06a/attachment.html>