In global computing applications the availability of a mechanism for some form of committed choice can be useful, and sometimes necessary. It can conveniently handle, e.g., distributed agreements and negotiations with nested choice points. We propose a linguistic extension of the Join calculus for programming nested commits, called Committed Join (cJoin). It provides primitives for explicit abort, programmable compensations and interactions between negotiations. We give the operational semantics of cJoin in the reflexive ¡£¢¥¤§¦ style. Then we discuss its expressiveness on the basis of a few examples and encodings. Finally, we provide a big-step semantics for cJoin processes that can be typed as shallow and we show that shallow processes are serializable.
Roberto Bruni, Hernán C. Melgratti, Ugo Mon