[E-Lang] New Page: Partially Ordered Message Delivery
Mark S. Miller
markm@caplet.com
Fri, 02 Mar 2001 12:20:21 -0800
Wow, lot's of messages today! I'll respond to what I see as key anchor
points. If you feel there's a point I need to respond to that I haven't
(whether yours or not), please email me privately to bring my attention to
it. But gimme a day to catch up first. Thanks.
At 12:19 AM Friday 3/2/01, Dean Tribble wrote:
>>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[?]
"two-party" is an imprecise phrase, but I believe the concept described on
that page, and used by Tyler & I in this discussion, does correctly
correspond to the full-order part of Joule's semantics. The answer to your
question according to all is "no". The issue is never "who?", but "what
reference?".
>:-) 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.
This is E's current semantics as well. As mentioned before, this is not an
argument for E's current semantics rather than Tyler's proposal, but it
gives us stable reference points in the discussion.
>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.
I believe this statement confuses semantics with implementation. In E's
semantics, eventual-send forks all argument references (the top level of
PassByProxy references, after copying all PassByCopy objects). E's current
implementation works hard to implement this semantics without having to do
any actual copying or forking, but the E language programmer can't tell, and
should not count on this.
Cheers,
--MarkM