{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,9]],"date-time":"2026-06-09T08:44:58Z","timestamp":1780994698439,"version":"3.54.1"},"reference-count":41,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2019,1,2]],"date-time":"2019-01-02T00:00:00Z","timestamp":1546387200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100000921","name":"European Cooperation in Science and Technology","doi-asserted-by":"publisher","award":["IC1402"],"award-info":[{"award-number":["IC1402"]}],"id":[{"id":"10.13039\/501100000921","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100000266","name":"Engineering and Physical Sciences Research Council","doi-asserted-by":"publisher","award":["EP\/K034413\/1, EP\/K011715\/1, EP\/L00058X\/1, EP\/N027833\/1, EP\/N028201\/1"],"award-info":[{"award-number":["EP\/K034413\/1, EP\/K011715\/1, EP\/L00058X\/1, EP\/N027833\/1, EP\/N028201\/1"]}],"id":[{"id":"10.13039\/501100000266","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2019,1,2]]},"abstract":"<jats:p>This paper presents a framework for the static specification and safe programming of message passing protocols where the number and kinds of participants are dynamically instantiated.<\/jats:p>\n          <jats:p>We develop the first theory of distributed multiparty session types (MPST) to support parameterised protocols with indexed roles\u2014our framework statically infers the different kinds of participants induced by a protocol definition as role variants, and produces decoupled endpoint projections of the protocol onto each variant. This enables safe MPST-based programming of the parameterised endpoints in distributed settings: each endpoint can be implemented separately by different programmers, using different techniques (or languages). We prove the decidability of role variant inference and well-formedness checking, and the correctness of projection.<\/jats:p>\n          <jats:p>We implement our theory as a toolchain for programming such role-parametric MPST protocols in Go. Our approach is to generate API families of lightweight, protocol- and variant-specific type wrappers for I\/O. The APIs ensure a well-typed Go endpoint program (by native Go type checking) will perform only compliant I\/O actions w.r.t. the source protocol. We leverage the abstractions of MPST to support the specification and implementation of Go applications involving multiple channels, possibly over mixed transports (e.g., Go channels, TCP), and channel passing via a unified programming interface. We evaluate the applicability and run-time performance of our generated APIs using microbenchmarks and real-world applications.<\/jats:p>","DOI":"10.1145\/3290342","type":"journal-article","created":{"date-parts":[[2019,1,4]],"date-time":"2019-01-04T13:33:51Z","timestamp":1546608831000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":43,"title":["Distributed programming using role-parametric session types in go: statically-typed endpoint APIs for dynamically-instantiated communication structures"],"prefix":"10.1145","volume":"3","author":[{"given":"David","family":"Castro","sequence":"first","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Raymond","family":"Hu","sequence":"additional","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Sung-Shik","family":"Jongmans","sequence":"additional","affiliation":[{"name":"Open University of the Netherlands, Netherlands \/ Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Nicholas","family":"Ng","sequence":"additional","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Nobuko","family":"Yoshida","sequence":"additional","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2019,1,2]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-60225-7_1"},{"key":"e_1_2_2_2_1","unstructured":"Foat Akhmadeev. 2016. Web Crawling With Akka. http:\/\/foat.me\/articles\/crawling- with- akka\/ .  Foat Akhmadeev. 2016. Web Crawling With Akka. http:\/\/foat.me\/articles\/crawling- with- akka\/ ."},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1561\/2500000031"},{"key":"e_1_2_2_4_1","volume-title":"Peters, and Steve Ross-Talbot","author":"Austin Daniel","year":"2004","unstructured":"Daniel Austin , Abbie Barbir , Ed Peters, and Steve Ross-Talbot . 2004 . Web Services Choreography Requirements . https: \/\/www.w3.org\/TR\/2004\/WD- ws- chor- reqs- 20040311\/#UC- 002 . Daniel Austin, Abbie Barbir, Ed Peters, and Steve Ross-Talbot. 2004. Web Services Choreography Requirements. https: \/\/www.w3.org\/TR\/2004\/WD- ws- chor- reqs- 20040311\/#UC- 002 ."},{"key":"e_1_2_2_5_1","volume-title":"Proceedings Second International Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software, PLACES 2009","volume":"17","author":"Bejleri Andi","year":"2009","unstructured":"Andi Bejleri , Raymond Hu , and Nobuko Yoshida . 2009 . Session-Based Programming for Parallel Algorithms: Expressiveness and Performance . In Proceedings Second International Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software, PLACES 2009 , York, UK, 22nd March 2009. (EPTCS), Vol. 17 . 17\u201329. Andi Bejleri, Raymond Hu, and Nobuko Yoshida. 2009. Session-Based Programming for Parallel Algorithms: Expressiveness and Performance. In Proceedings Second International Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software, PLACES 2009, York, UK, 22nd March 2009. (EPTCS), Vol. 17. 17\u201329."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/322374.322380"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.5555\/1883978.1884008"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2015.10.006"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03359-9_2"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-18941-3_4"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129514000188"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-28869-2_10"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39212-2_18"},{"key":"e_1_2_2_14_1","volume-title":"Parameterised Multiparty Session Types. Logical Methods in Computer Science 8, 4","author":"Deni\u00e9lou Pierre-Malo","year":"2012","unstructured":"Pierre-Malo Deni\u00e9lou , Nobuko Yoshida , Andi Bejleri , and Raymond Hu. 2012. Parameterised Multiparty Session Types. Logical Methods in Computer Science 8, 4 ( 2012 ). Pierre-Malo Deni\u00e9lou, Nobuko Yoshida, Andi Bejleri, and Raymond Hu. 2012. Parameterised Multiparty Session Types. Logical Methods in Computer Science 8, 4 (2012)."},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1706299.1706335"},{"key":"e_1_2_2_16_1","unstructured":"Issac Gouy. 2017. Computer Language Benchmark Game. http:\/\/benchmarksgame.alioth.debian.org .  Issac Gouy. 2017. Computer Language Benchmark Game. http:\/\/benchmarksgame.alioth.debian.org ."},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2827695"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-49665-7_24"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-54494-5_7"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2873052"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2967973.2968595"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009847"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180157"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2676726.2676964"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814270.2814302"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3033019.3033031"},{"key":"e_1_2_2_27_1","volume-title":"Jos\u00e9 Gabriel de Figueiredo Coutinho, and Nobuko Yoshida","author":"Ng Nicholas","year":"2015","unstructured":"Nicholas Ng , Jos\u00e9 Gabriel de Figueiredo Coutinho, and Nobuko Yoshida . 2015 . Protocols by Default - Safe MPI Code Generation Based on Session Types. In Compiler Construction - 24th International Conference, CC 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015. Proceedings (Lecture Notes in Computer Science), Bj\u00f6rn Franke (Ed.), Vol. 9031 . Springer , 212\u2013232. Nicholas Ng, Jos\u00e9 Gabriel de Figueiredo Coutinho, and Nobuko Yoshida. 2015. Protocols by Default - Safe MPI Code Generation Based on Session Types. In Compiler Construction - 24th International Conference, CC 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015. Proceedings (Lecture Notes in Computer Science), Bj\u00f6rn Franke (Ed.), Vol. 9031. Springer, 212\u2013232."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11761-014-0172-8"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2892208.2892232"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796816000289"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2014.48"},{"key":"e_1_2_2_32_1","volume-title":"31st European Conference on Object-Oriented Programming, ECOOP 2017","volume":"74","author":"Scalas Alceste","year":"2017","unstructured":"Alceste Scalas , Ornela Dardha , Raymond Hu , and Nobuko Yoshida . 2017 . A Linear Decomposition of Multiparty Sessions for Safe Distributed Programming . In 31st European Conference on Object-Oriented Programming, ECOOP 2017 , June 19-23, 2017, Barcelona, Spain (LIPIcs), Peter M\u00fcller (Ed.) , Vol. 74 . Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 24:1\u201324:31. Alceste Scalas, Ornela Dardha, Raymond Hu, and Nobuko Yoshida. 2017. A Linear Decomposition of Multiparty Sessions for Safe Distributed Programming. In 31st European Conference on Object-Oriented Programming, ECOOP 2017, June 19-23, 2017, Barcelona, Spain (LIPIcs), Peter M\u00fcller (Ed.), Vol. 74. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 24:1\u201324:31."},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2009.5161071"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384629"},{"key":"e_1_2_2_35_1","volume-title":"APLAS 2016, Hanoi, Vietnam, November 21-23, 2016, Proceedings (Lecture Notes in Computer Science), Atsushi Igarashi (Ed.)","volume":"10017","author":"Stadtm\u00fcller Kai","year":"2016","unstructured":"Kai Stadtm\u00fcller , Martin Sulzmann , and Peter Thiemann . 2016 . Static Trace-Based Deadlock Analysis for Synchronous Mini-Go. In Programming Languages and Systems - 14th Asian Symposium , APLAS 2016, Hanoi, Vietnam, November 21-23, 2016, Proceedings (Lecture Notes in Computer Science), Atsushi Igarashi (Ed.) , Vol. 10017 . 116\u2013136. Kai Stadtm\u00fcller, Martin Sulzmann, and Peter Thiemann. 2016. Static Trace-Based Deadlock Analysis for Synchronous Mini-Go. In Programming Languages and Systems - 14th Asian Symposium, APLAS 2016, Hanoi, Vietnam, November 21-23, 2016, Proceedings (Lecture Notes in Computer Science), Atsushi Igarashi (Ed.), Vol. 10017. 116\u2013136."},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1986.6312929"},{"key":"e_1_2_2_37_1","volume-title":"LATA 2016, Prague, Czech Republic, March 14-18, 2016, Proceedings (Lecture Notes in Computer Science), Adrian-Horia Dediu, Jan Janousek, Carlos Mart\u00edn-Vide, and Bianca Truthe (Eds.)","volume":"9618","author":"Sulzmann Martin","year":"2016","unstructured":"Martin Sulzmann and Peter Thiemann . 2016 . Forkable Regular Expressions. In Language and Automata Theory and Applications - 10th International Conference , LATA 2016, Prague, Czech Republic, March 14-18, 2016, Proceedings (Lecture Notes in Computer Science), Adrian-Horia Dediu, Jan Janousek, Carlos Mart\u00edn-Vide, and Bianca Truthe (Eds.) , Vol. 9618 . Springer, 194\u2013206. Martin Sulzmann and Peter Thiemann. 2016. Forkable Regular Expressions. In Language and Automata Theory and Applications - 10th International Conference, LATA 2016, Prague, Czech Republic, March 14-18, 2016, Proceedings (Lecture Notes in Computer Science), Adrian-Horia Dediu, Jan Janousek, Carlos Mart\u00edn-Vide, and Bianca Truthe (Eds.), Vol. 9618. Springer, 194\u2013206."},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926436"},{"key":"e_1_2_2_39_1","volume-title":"ESOP 2018, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018, Thessaloniki, Greece, April 14-20, 2018, Proceedings (Lecture Notes in Computer Science)","volume":"10801","author":"Viering Malte","year":"2018","unstructured":"Malte Viering , Tzu-Chun Chen , Patrick Eugster , Raymond Hu , and Lukasz Ziarek . 2018 . A Typing Discipline for Statically Verified Crash Failure Handling in Distributed Systems. In Programming Languages and Systems - 27th European Symposium on Programming , ESOP 2018, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018, Thessaloniki, Greece, April 14-20, 2018, Proceedings (Lecture Notes in Computer Science) , Vol. 10801 . Springer, 799\u2013826. Malte Viering, Tzu-Chun Chen, Patrick Eugster, Raymond Hu, and Lukasz Ziarek. 2018. A Typing Discipline for Statically Verified Crash Failure Handling in Distributed Systems. In Programming Languages and Systems - 27th European Symposium on Programming, ESOP 2018, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018, Thessaloniki, Greece, April 14-20, 2018, Proceedings (Lecture Notes in Computer Science), Vol. 10801. Springer, 799\u2013826."},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1706299.1706343"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-12032-9_10"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3290342","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3290342","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T00:58:04Z","timestamp":1750208284000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3290342"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,1,2]]},"references-count":41,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2019,1,2]]}},"alternative-id":["10.1145\/3290342"],"URL":"https:\/\/doi.org\/10.1145\/3290342","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,1,2]]},"assertion":[{"value":"2019-01-02","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}