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

Read more

Summary

Introduction

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

Core Choreographies and Minimal Choreographies
Semantics of CC
Examples
Choreography Amendment
Turing Completeness of MC and Its Consequences
Partial Recursive Functions
Encoding Partial Recursive Functions in MC and CC
Soundness and Main Results
Removing Selections
Discussion
Minimality in Choreographies
CC as a Core Language
Findings
Related Work and Discussion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call