A mainstream choreographic programming language.

website repository


Choral is a language for the programming of choreographies. A choreography is a multiparty protocol that defines how some roles (the proverbial Alice, Bob, etc.) should coordinate with each other to do something together. At the press of a button, the Choral compiler translates a choreography into a library for each role. Choral makes sure that the compiled libraries are compliant implementations of their source choreography, making developers more productive, and preventing them from writing incompatible implementations of communications.

Choral is currently interoperable with Java and it is compatible with Java in three ways:


Giallorenzo, S., Montesi, F. and Peressotti, M. 2020. Choreographies as Objects. CoRR. abs/22005.09520, (2020).
We present Choral, the first framework for programming choreographies (multiparty protocols) that builds on top of mainstream programming abstractions: in Choral, choreographies are objects. Given a choreography that defines interactions among some roles (Alice, Bob, etc.), an implementation for each role in the choreography is automatically generated by a compiler. These implementations are libraries in pure Java, which developers can modularly compose in their own programs to participate correctly in choreographies.
  author = {Giallorenzo, Saverio and Montesi, Fabrizio and Peressotti, Marco},
  title = {Choreographies as Objects},
  journal = {CoRR},
  volume = {abs/22005.09520},
  year = {2020},
  url = {},
  archiveprefix = {arXiv},
  eprint = {2005.09520}