PLDI 2025
Mon 16 - Fri 20 June 2025 Seoul, South Korea

Choreographic programming (CP) is a paradigm for implementing
distributed systems that uses a single global program to define the
actions and interactions of all participants.
Library-level CP implementations, like HasChor, integrate well with
mainstream programming languages but have several limitations:
Their conditionals require extra communication;
they require specific host-language features (e.g., monads);
and they lack support for programming patterns that are essential for implementing
realistic distributed applications.

We make three contributions to library-level CP to specifically
address these challenges. First, we propose and formalize
\emph{conclaves} and \emph{multiply-located values}, which enable
efficient conditionals in library-level CP without redundant
communication.
Second, we propose
\emph{census polymorphism}, a technique for abstracting over the
number of participants in a choreography.
Third, we introduce a design pattern for library-level CP in host languages without support for monads.
We demonstrate these
contributions via implementations in Haskell, Rust, and TypeScript.