[cap-talk] A Taxonomy of Current Object-Cap Systems [correction]

David-Sarah Hopwood david.hopwood at industrial-designers.co.uk
Mon Mar 9 05:41:12 EDT 2009


David-Sarah Hopwood wrote:
>    Causal-order
>                If M1 is sent before M2, and both messages are
>                received, then M1 is received before M2.
> 
>    E-order     References are "forked" when sent between processes/vats.
>                If M1 is sent before M2 on the same reference, or if
>                M1 is sent to a reference R and then M2 is sent to a
>                reference forked (maybe indirectly) from R, and both
>                messages are received, then M1 is received before M2.
>                [E, A4]
> 
>    (Point-to-point) FIFO-order
>                If M1 and M2 are sent by process A to process B, and
>                M1 is sent before M2, and both messages are received,
>                then M1 is received before M2. [Erlang, Waterken]

These definitions are slightly weaker than I intended, because it
should not be possible for only M2 to be received without M1 having
been received.

(In systems that support selective or closed-set receives, or that
support both open and closed receives, a process can be modelled as
having a "mailbox" from which messages are selectively extracted.
"Received" means delivered to the target process mailbox, not
necessarily extracted from the mailbox.)

The corrected definitions are:

     Causal-order
                 If M1 is sent before M2, and M2 is received, then
                 M1 is received before M2.

     E-order     References are "forked" when sent between processes/vats.
                 If M1 is sent before M2 on the same reference, or if
                 M1 is sent to a reference R and then M2 is sent to a
                 reference forked (maybe indirectly) from R, and M2 is
                 received, then M1 is received before M2.
                 [E, A4]

     (Point-to-point) FIFO-order
                 If M1 and M2 are sent by process A to process B, and
                 M1 is sent before M2, and M2 is received, then M1 is
                 received before M2. [Waterken]

Erlang/OTP apparently does not satisfy this stronger definition of
FIFO-order; only the weaker one in my previous message. See
<http://www.cs.chalmers.se/~hanssv/doc/ew07-dist.pdf>.
Note that the PID reuse bug described in section 4.1 of that paper would
need to be fixed in order for Erlang to be considered a capability system
at all. It's the bug described in section 4.2 that weakens the
implemented message ordering.

-- 
David-Sarah Hopwood ⚥




More information about the cap-talk mailing list