[E-Lang] New Page: Partially Ordered Message Delivery

Dean Tribble tribble@e-dean.com
Fri, 02 Mar 2001 00:19:32 -0800


>At 02:53 AM Wednesday 2/28/01, Tyler Close wrote:
> >(Assuming we
> >keep Joule-style ordering of messages, as Dean and MarcS have
> >convinced me we should.)
>
> >5) All arguments in an eventual send message are copies of their
> >   local representations. Copying a PassByProxy reference creates
> >   a new PassByProxy reference that marks the beginning of a new
> >   timeline for messages directed at the indicated target object.
> >   This new timeline is in no way connected to the timeline of the
> >   copied reference.
> >
> >This is basically Joule message ordering.

I'm not sure this is correct.  See below.

>Since you now agree with two party full-order, could you restate your
>proposed non-fail-stop semantics of message delivery in this context?  I
>think the two issues are crucially tied together.

Note that it is not quite two-party full-order:  if I make a second 
reference within the *same* party, are messages to each unordered with 
respect to each other.

>As to the three-party controversy -- forking-order vs independent-order --
>before continuing I'd like to hear from Dean on what Joule's semantics
>actually are.  Not as an argument (despite empirical evidence to the
>contrary, Joule's choices aren't necessarily right ;)) but for orientation
>and terminology as we continue the discussion.

:-)  Forking the Acceptor (which is not Joule semantics, but is isomorphic 
with it, I believe) can be thought of as an operation on an Acceptor.  All 
messages to the forked Acceptor are *after* all messages sent on the 
original Acceptor before the fork, but are  *unordered* with respect to all 
messages sent on the original Acceptor after the fork.  Thus, the fork is 
the creation of a branch in the partial order.

Of course in Joule, many more things result in a fork than in E.  E works 
hard to ensure no forks within a single Vat.