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

Dean Tribble tribble@e-dean.com
Tue, 13 Feb 2001 12:19:44 -0800


>The ordering guarantees originated in syntactic sugar used in the Joule user
>language (though I don't think they are in the on-line manual).  When we
>added these guarantees to Original-E and used them, suddenly a whole mess of
>n-party (for n >= 3) concurrency problems went away.  Unlike Joule,
>Original-E and E provide the ordering guarantees primitively, rather than by
>sugar, and this choice would also be worth arguing about.

If you correct an incomplete description of history, is it still 
revisionist?  The Joule described in the manual does indeed implement order 
as syntactic sugar.  Based on development using the prototype 
implementation, specification of network protocol, etc., the language 
semantics, etc. were changed to specify *partially* ordered 
channels/servers/etc. as fundamental (instead of unordered).  This is still 
different from E's perspective because the order would still only appear 
with prior arrangement (e.g., among messages sent from the same 
server/object/actor).  It is however primitive support for (partial) order 
(including in Kernel Joule).

BTW: One thing we saw arise consistently is that if something is not 
specified as order-preserving, but happens to preserve order, programmers 
treat it as if it is always ordered (and get correspondingly burned when 
the implementation does not preserve order).  Thus many programs that you 
might think work in an unordered environment might surprise you if the 
implementation scrambles things.  It's *valuable* to force reordering any 
place where order is not required by the semantics.