On Asynchrony and Choreographies

Luís Cruz-Filipe, Fabrizio Montesi [2017].
In proceedings of ICE@DisCoTec 2017, pp. 76-90.

Abstract
Choreographic Programming is a paradigm for the development of concurrent software, where deadlocks are prevented syntactically. However, choreography languages are typically synchronous, whereas many real-world systems have asynchronous communications. Previous attempts at enriching choreographies with asynchrony rely on ad-hoc constructions, whose adequacy is only argued informally. In this work, we formalise the properties that an asynchronous semantics for choreographies should have: messages can be sent without the intended receiver being ready, and all sent messages are eventually received. We explore how out-of-order execution, used in choreographies for modelling concurrency, can be exploited to endow choreographies with an asynchronous semantics. Our approach satisfies the properties we identified. We show how our development yields a pleasant correspondence with FIFO-based asynchronous messaging, modelled in a process calculus, and discuss how it can be adopted in more complex choreography models.
Links
arxiv.org
Additional notes
None
Cite (BibTeX)
Click to expand
@inproceedings{DBLP:journals/corr/abs-1711-11211,
  author       = {Lu{\'{\i}}s Cruz{-}Filipe and
                  Fabrizio Montesi},
  editor       = {Massimo Bartoletti and
                  Laura Bocchi and
                  Ludovic Henrio and
                  Sophia Knight},
  title        = {On Asynchrony and Choreographies},
  booktitle    = {Proceedings 10th Interaction and Concurrency Experience, ICE@DisCoTec
                  2017, Neuch{\^{a}}tel, Switzerland, 21-22nd June 2017},
  series       = {{EPTCS}},
  volume       = {261},
  pages        = {76--90},
  year         = {2017},
  url          = {https://doi.org/10.4204/EPTCS.261.8},
  doi          = {10.4204/EPTCS.261.8},
  timestamp    = {Wed, 25 Sep 2019 17:52:38 +0200},
  biburl       = {https://dblp.org/rec/journals/corr/abs-1711-11211.bib},
  bibsource    = {dblp computer science bibliography, https://dblp.org}
}

A PDF is available (possibly a preprint):

Download PDF