Choral: Object-Oriented Choreographic Programming
Saverio Giallorenzo, Fabrizio Montesi, Marco Peressotti

TL;DR
Choral introduces a novel choreographic programming language based on object-oriented abstractions, enabling modular, correct, and expressive distributed software development with static checks and higher-order features.
Contribution
It is the first to integrate choreographic programming with object-oriented abstractions, supporting modularity, higher-order choreographies, and practical Java implementations.
Findings
First modular choreographic programming language with Java libraries.
Supports higher-order choreographies with object passing.
Enables concise, correct distributed object-oriented software.
Abstract
We present Choral, the first choreographic programming language based on mainstream abstractions. The key idea in Choral is a new notion of data type, which allows for expressing that data is distributed over different roles. We use this idea to reconstruct the paradigm of choreographic programming through object-oriented abstractions. Choreographies are classes, and instances of choreographies are objects with states and behaviours implemented collaboratively by roles. Choral comes with a compiler that, given a choreography, generates an implementation for each of its roles. These implementations are libraries in pure Java, whose types are under the control of the Choral programmer. Developers can then modularly compose these libraries in their own programs, in order to participate correctly in choreographies. Choral is the first incarnation of choreographic programming offering such…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Reinforcement Learning in Robotics · Artificial Intelligence in Games
