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 <[email protected]>
wrote:

>
> On Oct 16, 2014, at 5:31 PM, Boris Zbarsky wrote:
>
> > On 10/16/14, 5:58 PM, Brendan Eich wrote:
> >> Can you say more?
> >
> > Vats 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.
> >
> > A 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
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>



-- 
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to