[E-Lang] Progress & Non-Progress Report
Mark S. Miller
markm@caplet.com
Tue, 15 May 2001 11:15:24 -0700
I've now added a brief mention of the Droplets approach
http://www.erights.org/elib/distrib/captp/WormholeOp.html#new-identity to
the list of "Plausible Engineering Solutions" to this issue.
At 01:50 AM Tuesday 5/15/01, Tyler Close wrote:
>At 12:20 PM 5/14/01 -0700, Mark S. Miller wrote:
>>[...] In E, Resolved arguments as they are sent
>>are "==" to the arguments as they arrive. [...].
>
>Before getting into the how, I'd like to know more about the why. The forked
>reference and the original reference will never be in the same Vat together
>(if they were, we wouldn't be forking), so why must the received argument be
>"==" to the sent argument?
Primarily for uniformity between the inter-vat and intra-vat cases. As
we've previously agreed, we wish to have as much of the semantics as
reasonably possible be stated in a vat-independent manner. The vat
independent semantics should not impose undue overhead on the intra-vat
case. E's current semantics (both before this issue was noticed, and in the
currently proposed refinement that takes account of this issue) allows the
intra-vat implementation of reference forking to need no work at all. Given
other properties of the current E implementation (FIFO delivery order), for
an argument of an intra-vat send, the argument itself is a perfectly good
representation of a fork of the argument. Were this not the case, then
intra-vat sent PassByCopy objects containing forked references would have to
actually get copied rather than shared.
When speaking specifically of inter-vat forking, as you point out, the
original and the fork can never be in the same vat. Therefore, the "=="
question cannot directly arise, since the "==" operation is performed in
some vat, and its arguments must be references local to that vat. However,
we can specify instead that equivalence classes map one to one, so if x ==
y, then pass<A,B>(x) == pass<A,B>(y). Where "pass<A,B>(x)" is a notation I
just made up for the result of passing x as an argument in a message
eventually sent from VatA to VatB.
More later...
Cheers,
--MarkM