Abstract
Choreographic Programming is a paradigm for developing concurrent programs that are deadlock-free by construction, as a result of programming communications declaratively and then synthesising process implementations automatically. Despite strong interest on choreographies, a foundational model that explains which computations can be performed with the hallmark constructs of choreographies is still missing.In this work, we introduce Core Choreographies (CC), a model that includes only the core primitives of choreographic programming. Every computable function can be implemented as a choreography in CC, from which we can synthesise a process implementation where independent computations run in parallel. We discuss the design of CC and argue that it constitutes a canonical model for choreographic programming.
Highlights
Programming concurrent and distributed systems is hard, because it is challenging to predict how programs executed at the same time in different computers will interact
As an example of such foundational questions, we describe how the standard communication primitive of label selection can be removed from Core Choreographies (CC) without altering its computational power, yielding a truly minimal choreography language wrt computation called Minimal Choreographies (MC)
The results show that label selection is not a necessary primitive in a choreography calculus, and we could take MC as our core choreography language
Summary
Programming concurrent and distributed systems is hard, because it is challenging to predict how programs executed at the same time in different computers will interact. An EndPoint Projection (EPP) can be used to synthesise implementations in process models, which faithfully realise the communications given in the choreography and are guaranteed to be deadlock-free by construction even in the presence of arbitrary protocol compositions (Carbone et al, 2012; Carbone and Montesi, 2013). The models proposed all come with differing domain-specific syntaxes, semantics and EPP definitions (e.g., for channel mobility or runtime adaptation), and cannot be considered minimal Another problem, arguably a consequence of the former, is that choreographic programming is meant for implementation, but we still know little of what can be computed with the code obtained from choreographies (choreography projections). The practical consequence of our results is that CC is a simple common setting for the study of foundational questions in choreographies This makes CC an appropriate foundational model for choreographic programming, akin to λ-calculus for functional programming and π-calculus for mobile processes. The encoding of selections into communications (§ 5) and the encoding of CC into Channel Choreographies (§ Appendix A) are new results and have not been published previously
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have