[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.