Speak Now: Safe Actor Programming with Multiparty Session Types (Extended Version)
Simon Fowler, Raymond Hu

TL;DR
This paper presents Maty, an actor language that integrates multiparty session types to prevent communication errors, support multiple sessions, and enhance scalability and fault tolerance in distributed applications.
Contribution
Maty is the first actor language supporting static multiparty session typing and multiple concurrent sessions, combining session safety with actor scalability.
Findings
Maty guarantees communication safety, preventing message mismatches and deadlocks.
Implementation in Scala demonstrates expressiveness with real-world benchmarks.
Supports Erlang-style supervision and cascading failure handling.
Abstract
Actor languages such as Erlang and Elixir are widely used for implementing scalable and reliable distributed applications, but the informally-specified nature of actor communication patterns leaves systems vulnerable to costly errors such as communication mismatches and deadlocks. Multiparty session types (MPSTs) rule out communication errors early in the development process, but until now, the many-sender, single-receiver nature of actor communication has made it difficult for actor languages to benefit from session types. This paper introduces Maty, the first actor language design supporting both static multiparty session typing and the full power of actors taking part in multiple sessions. Maty therefore combines the error prevention mechanism of session types with the scalability and fault tolerance of actor languages. Our main insight is to enforce session typing through a…
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 · Distributed systems and fault tolerance · Security and Verification in Computing
