Multiparty Session Types
Multiparty Session Types (MPST) are a type system used to describe communication protocols in concurrent and distributed systems. They were introduced in a POPL 2008 paper by Honda, Yoshida, and Carbone.
An MPST describes communication among multiple processes and/or participants by specifying the type and the direction of data exchanged. These communications are given as a sequence of instructions to send and receive messages.
A classic example of the need for multiparty session types is given by the two-buyer protocol.
Metatheory
The metatheory of MPST is somewhat challenging.
In particular, the original POPL 2008 had only limited results on progress.
A modern reconstruction of the original MPST system which supports a 'global' progress theorem was formulated by Coppo et al. 2016.
Implementations
There has been a lot of work on implementing various aspects of multiparty session types within programming languages.
MPSTs form the basis of Scribble, a specification language for communicating protocols.
References
- Multiparty Session Types were first introduced in a paper at POPL 2008:
@inproceedings{honda_2008,
title = {Multiparty {Asynchronous} {Session} {Types}},
isbn = {978-1-59593-689-9},
doi = {10.1145/1328438.1328472},
booktitle = {Proceedings of the 35th {Annual} {ACM} {SIGPLAN}-{SIGACT} {Symposium} on {Principles} of {Programming} {Languages}},
publisher = {Association for Computing Machinery},
author = {Honda, Kohei and Yoshida, Nobuko and Carbone, Marco},
year = {2008}
}
There is also a journal version of this paper:
@article{honda_2016,
title = {Multiparty {Asynchronous} {Session} {Types}},
volume = {63},
doi = {10.1145/2827695},
number = {1},
journal = {Journal of the ACM},
author = {Honda, Kohei and Yoshida, Nobuko and Carbone, Marco},
year = {2016},
pages = {1--67}
}
- A 'rational reconstruction' with a global progress result was presented in
@article{coppo_2016,
title = {Global progress for dynamically interleaved multiparty sessions},
volume = {26},
doi = {10.1017/S0960129514000188},
number = {2},
journal = {Mathematical Structures in Computer Science},
author = {Coppo, Mario and Dezani-Ciancaglini, Mariangiola and Yoshida, Nobuko and Padovani, Luca},
year = {2016},
pages = {238--302}
}