{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,5,1]],"date-time":"2025-05-01T04:13:37Z","timestamp":1746072817419,"version":"3.40.4"},"publisher-location":"Cham","reference-count":36,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783031906428","type":"print"},{"value":"9783031906435","type":"electronic"}],"license":[{"start":{"date-parts":[[2025,1,1]],"date-time":"2025-01-01T00:00:00Z","timestamp":1735689600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2025,5,1]],"date-time":"2025-05-01T00:00:00Z","timestamp":1746057600000},"content-version":"vor","delay-in-days":120,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2025]]},"abstract":"<jats:title>Abstract<\/jats:title>\n          <jats:p>Multiparty session typing (MPST) is a method to make concurrent programming simpler. The idea is to use type checking to automatically detect safety\u00a0and liveness violations of implementations relative to specifications. In practice, the premier approach to combine MPST with mainstream languages\u2014in the absence of native support\u2014is based on <jats:italic>external DSLs<\/jats:italic> and associated tooling.<\/jats:p>\n          <jats:p>In contrast, we study the question of how to support MPST by\u00a0using <jats:italic>internal DSLs<\/jats:italic>. Answering this question positively, this paper presents the  library: it leverages Scala\u2019s lightweight form of dependent typing, called match types, to embed MPST directly into Scala. Our internal-DSL-based approach avoids programming friction and leaky abstractions of\u00a0the external-DSL-based approach for MPST.<\/jats:p>","DOI":"10.1007\/978-3-031-90643-5_8","type":"book-chapter","created":{"date-parts":[[2025,4,30]],"date-time":"2025-04-30T06:08:13Z","timestamp":1745993293000},"page":"145-164","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Multiparty Session Typing, Embedded"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-4394-8745","authenticated-orcid":false,"given":"Sung-Shik","family":"Jongmans","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2025,5,1]]},"reference":[{"key":"8_CR1","doi-asserted-by":"crossref","unstructured":"Ancona et al., D.: Behavioral types in programming languages. Foundations and Trends in Programming Languages 3(2-3), 95\u2013230 (2016)","DOI":"10.1561\/2500000031"},{"key":"8_CR2","unstructured":"Barwell, A.D., Hou, P., Yoshida, N., Zhou, F.: Designing asynchronous multiparty protocols with crash-stop failures. In: ECOOP. LIPIcs, vol.\u00a0263, pp. 1:1\u20131:30. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2023)"},{"key":"8_CR3","doi-asserted-by":"crossref","unstructured":"Blanvillain, O., Brachth\u00e4user, J.I., Kjaer, M., Odersky, M.: Type-level programming with match types. Proc. ACM Program. Lang. 6(POPL), 1\u201324 (2022)","DOI":"10.1145\/3498698"},{"key":"8_CR4","doi-asserted-by":"crossref","unstructured":"Bocchi, L., Yang, W., Yoshida, N.: Timed multiparty session types. In: CONCUR. LNCS, vol.\u00a08704, pp. 419\u2013434. Springer (2014)","DOI":"10.1007\/978-3-662-44584-6_29"},{"key":"8_CR5","doi-asserted-by":"crossref","unstructured":"Castro, D., Hu, R., Jongmans, S., Ng, N., Yoshida, N.: Distributed programming using role-parametric session types in go: statically-typed endpoint apis for dynamically-instantiated communication structures. PACMPL 3(POPL), 29:1\u201329:30 (2019)","DOI":"10.1145\/3290342"},{"key":"8_CR6","unstructured":"Cledou, G., Edixhoven, L., Jongmans, S., Proen\u00e7a, J.: API generation for multiparty session types, revisited and revised using scala 3. In: ECOOP. LIPIcs, vol.\u00a0222, pp. 27:1\u201327:28. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2022)"},{"key":"8_CR7","doi-asserted-by":"crossref","unstructured":"Coppo, M., Dezani-Ciancaglini, M., Yoshida, N., Padovani, L.: Global progress for dynamically interleaved multiparty sessions. Math. Struct. Comput. Sci. 26(2), 238\u2013302 (2016)","DOI":"10.1017\/S0960129514000188"},{"key":"8_CR8","doi-asserted-by":"crossref","unstructured":"Cutner, Z., Yoshida, N.: Safe session-based asynchronous coordination in rust. In: COORDINATION. Lecture Notes in Computer Science, vol. 12717, pp. 80\u201389. Springer (2021)","DOI":"10.1007\/978-3-030-78142-2_5"},{"key":"8_CR9","doi-asserted-by":"crossref","unstructured":"Cutner, Z., Yoshida, N., Vassor, M.: Deadlock-free asynchronous message reordering in rust with multiparty session types. In: PPoPP. pp. 246\u2013261. ACM (2022)","DOI":"10.1145\/3503221.3508404"},{"key":"8_CR10","doi-asserted-by":"crossref","unstructured":"Deni\u00e9lou, P., Yoshida, N.: Multiparty session types meet communicating automata. In: ESOP. LNCS, vol.\u00a07211, pp. 194\u2013213. Springer (2012)","DOI":"10.1007\/978-3-642-28869-2_10"},{"key":"8_CR11","doi-asserted-by":"crossref","unstructured":"Deni\u00e9lou, P., Yoshida, N.: Multiparty compatibility in communicating automata: Characterisation and synthesis of global session types. In: ICALP (2). LNCS, vol.\u00a07966, pp. 174\u2013186. Springer (2013)","DOI":"10.1007\/978-3-642-39212-2_18"},{"key":"8_CR12","doi-asserted-by":"crossref","unstructured":"Ferreira, F., Jongmans, S.: Oven: Safe and live communication protocols in scala, using synthetic behavioural type analysis. In: ISSTA. pp. 1511\u20131514. ACM (2023)","DOI":"10.1145\/3597926.3604926"},{"key":"8_CR13","unstructured":"Fowler, M.: Domain-Specific Languages. The Addison-Wesley signature series, Addison-Wesley (2011)"},{"key":"8_CR14","unstructured":"GitHub, Inc: scribble-java\/scribble-demos\/scrib at ccb0e48d69c6e3088e746138099c3183ca1ac79b$$\\cdot $$ scribble\/scribble-java, accessed January 2025, https:\/\/github.com\/scribble\/scribble-java\/tree\/ccb0e48d69c6e3088e746138099c3183ca1ac79b\/scribble-demos\/scrib"},{"key":"8_CR15","doi-asserted-by":"crossref","unstructured":"Hamers, R., Jongmans, S.: Discourje: Runtime verification of communication protocols in clojure. In: TACAS (1). LNCS, vol. 12078, pp. 266\u2013284. Springer (2020)","DOI":"10.1007\/978-3-030-45190-5_15"},{"key":"8_CR16","doi-asserted-by":"crossref","unstructured":"Honda, K., Yoshida, N., Carbone, M.: Multiparty asynchronous session types. In: POPL. pp. 273\u2013284. ACM (2008)","DOI":"10.1145\/1328897.1328472"},{"key":"8_CR17","doi-asserted-by":"crossref","unstructured":"Hu, R., Yoshida, N.: Hybrid session verification through endpoint API generation. In: FASE. LNCS, vol.\u00a09633, pp. 401\u2013418. Springer (2016)","DOI":"10.1007\/978-3-662-49665-7_24"},{"key":"8_CR18","doi-asserted-by":"crossref","unstructured":"Hu, R., Yoshida, N.: Explicit connection actions in multiparty session types. In: FASE. LNCS, vol. 10202, pp. 116\u2013133. Springer (2017)","DOI":"10.1007\/978-3-662-54494-5_7"},{"key":"8_CR19","doi-asserted-by":"crossref","unstructured":"H\u00fcttel, H., Lanese, I., Vasconcelos, V.T., Caires, L., Carbone, M., Deni\u00e9lou, P., Mostrous, D., Padovani, L., Ravara, A., Tuosto, E., Vieira, H.T., Zavattaro, G.: Foundations of session types and behavioural contracts. ACM Comput. Surv. 49(1), 3:1\u20133:36 (2016)","DOI":"10.1145\/2873052"},{"key":"8_CR20","unstructured":"Imai, K., Neykova, R., Yoshida, N., Yuen, S.: Multiparty session programming with global protocol combinators. In: ECOOP. LIPIcs, vol.\u00a0166, pp. 9:1\u20139:30. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2020)"},{"key":"8_CR21","unstructured":"Jongmans, S.: Multiparty session typing, embedded (artifact) (2025), https:\/\/doi.org\/10.5281\/zenodo.14201951"},{"key":"8_CR22","unstructured":"Jongmans, S.: Multiparty session typing, embedded (technical report) (2025), https:\/\/doi.org\/10.48550\/arXiv.2501.17741"},{"key":"8_CR23","unstructured":"Jongmans, S., Ferreira, F.: Synthetic behavioural typing: Sound, regular multiparty sessions via implicit local types. In: ECOOP. LIPIcs, vol.\u00a0263, pp. 42:1\u201342:30. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik(2023)"},{"key":"8_CR24","doi-asserted-by":"crossref","unstructured":"Jongmans, S., Yoshida, N.: Exploring type-level bisimilarity towards more expressive multiparty session types. In: ESOP. LNCS, vol. 12075, pp. 251\u2013279. Springer (2020)","DOI":"10.1007\/978-3-030-44914-8_10"},{"key":"8_CR25","doi-asserted-by":"crossref","unstructured":"Kouzapas, D., Dardha, O., Perera, R., Gay, S.J.: Typechecking protocols with mungo and stmungo: A session type toolchain for java. Sci. Comput. Program. 155, 52\u201375 (2018)","DOI":"10.1016\/j.scico.2017.10.006"},{"key":"8_CR26","doi-asserted-by":"crossref","unstructured":"Lagaillardie, N., Neykova, R., Yoshida, N.: Implementing multiparty session types in rust. In: COORDINATION. LNCS, vol. 12134, pp. 127\u2013136. Springer (2020)","DOI":"10.1007\/978-3-030-50029-0_8"},{"key":"8_CR27","unstructured":"Lagaillardie, N., Neykova, R., Yoshida, N.: Stay safe under panic: Affine rust programming with multiparty session types. In: ECOOP. LIPIcs, vol.\u00a0222, pp. 4:1\u20134:29. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2022)"},{"key":"8_CR28","doi-asserted-by":"crossref","unstructured":"Miu, A., Ferreira, F., Yoshida, N., Zhou, F.: Communication-safe web programming in typescript with routed multiparty session types. In: CC. pp. 94\u2013106. ACM (2021)","DOI":"10.1145\/3446804.3446854"},{"key":"8_CR29","doi-asserted-by":"crossref","unstructured":"Neykova, R., Hu, R., Yoshida, N., Abdeljallal, F.: A session type provider: compile-time API generation of distributed protocols with refinements in f#. In: CC. pp. 128\u2013138. ACM (2018)","DOI":"10.1145\/3178372.3179495"},{"key":"8_CR30","unstructured":"Scalas, A., Dardha, O., Hu, R., Yoshida, N.: A linear decomposition of multiparty sessions for safe distributed programming. In: ECOOP. LIPIcs, vol.\u00a074, pp. 24:1\u201324:31. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2017)"},{"key":"8_CR31","doi-asserted-by":"crossref","unstructured":"Scalas, A., Yoshida, N.: Less is more: multiparty session types revisited. Proc. ACM Program. Lang. 3(POPL), 30:1\u201330:29 (2019)","DOI":"10.1145\/3290343"},{"key":"8_CR32","doi-asserted-by":"crossref","unstructured":"Scalas, A., Yoshida, N., Benussi, E.: Verifying message-passing programs with dependent behavioural types. In: PLDI. pp. 502\u2013516. ACM (2019)","DOI":"10.1145\/3314221.3322484"},{"key":"8_CR33","doi-asserted-by":"crossref","unstructured":"Tu, T., Liu, X., Song, L., Zhang, Y.: Understanding real-world concurrency bugs in go. In: ASPLOS. pp. 865\u2013878. ACM (2019)","DOI":"10.1145\/3297858.3304069"},{"key":"8_CR34","doi-asserted-by":"crossref","unstructured":"Yoshida, N.: Programming language implementations with multiparty session types. In: Active Object Languages: Current Research Trends, Lecture Notes in Computer Science, vol. 14360, pp. 147\u2013165. Springer (2024)","DOI":"10.1007\/978-3-031-51060-1_6"},{"key":"8_CR35","doi-asserted-by":"crossref","unstructured":"Yoshida, N., Zhou, F., Ferreira, F.: Communicating finite state machines and an extensible toolchain for multiparty session types. In: FCT. LNCS, vol. 12867, pp. 18\u201335. Springer (2021)","DOI":"10.1007\/978-3-030-86593-1_2"},{"key":"8_CR36","doi-asserted-by":"crossref","unstructured":"Zhou, F., Ferreira, F., Hu, R., Neykova, R., Yoshida, N.: Statically verified refinements for multiparty protocols. Proc. ACM Program. Lang. 4(OOPSLA), 148:1\u2013148:30 (2020)","DOI":"10.1145\/3428216"}],"container-title":["Lecture Notes in Computer Science","Tools and Algorithms for the Construction and Analysis of Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-031-90643-5_8","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,4,30]],"date-time":"2025-04-30T06:08:26Z","timestamp":1745993306000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-031-90643-5_8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025]]},"ISBN":["9783031906428","9783031906435"],"references-count":36,"URL":"https:\/\/doi.org\/10.1007\/978-3-031-90643-5_8","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025]]},"assertion":[{"value":"1 May 2025","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"TACAS","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Tools and Algorithms for the Construction and Analysis of Systems","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Hamilton, ON","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Canada","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2025","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"3 May 2025","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"8 May 2025","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"31","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tacas2025","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/etaps.org\/2025\/conferences\/tacas\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}