{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T10:43:50Z","timestamp":1770288230318,"version":"3.49.0"},"reference-count":27,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","license":[{"start":{"date-parts":[[2024,6,20]],"date-time":"2024-06-20T00:00:00Z","timestamp":1718841600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CCF-1816837"],"award-info":[{"award-number":["CCF-1816837"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"crossref","award":["No. N66001-21-C-4023"],"award-info":[{"award-number":["No. N66001-21-C-4023"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,6,20]]},"abstract":"<jats:p>\n            Safe, shared-memory interoperability between languageswith different type systems and memory-safety guarantees is an intricate problem as crossing language boundaries may result in memory-safety violations. In this paper, we present RichWasm, a novel richly typed intermediate language designed to serve as a compilation target for typed high-level languages with different memory-safety guarantees. RichWasm is based on WebAssemblyand enables safe shared-memory interoperability by incorporating a variety of type features that support fine-grained memory ownership and sharing. RichWasm is rich enough to serve as a typed compilation target for both typed garbage-collected languages and languages with an ownership-based type system and manually managed memory. We demonstrate this by providing compilers from core ML and\n            <jats:italic toggle=\"yes\">L<\/jats:italic>\n            <jats:sup>3<\/jats:sup>\n            , a type-safe language with strong updates, to RichWasm. RichWasm is compiled to regular Wasm, allowing for use in existing environments. We formalize RichWasm in Coq and prove type safety.\n          <\/jats:p>","DOI":"10.1145\/3656444","type":"journal-article","created":{"date-parts":[[2024,6,20]],"date-time":"2024-06-20T16:27:20Z","timestamp":1718900840000},"page":"1656-1679","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["RichWasm: Bringing Safe, Fine-Grained, Shared-Memory Interoperability Down to WebAssembly"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0009-0009-1115-3081","authenticated-orcid":false,"given":"Michael","family":"Fitzgibbons","sequence":"first","affiliation":[{"name":"Northeastern University, Boston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0009-0001-2352-9818","authenticated-orcid":false,"given":"Zoe","family":"Paraskevopoulou","sequence":"additional","affiliation":[{"name":"Ethereum Foundation, Berlin, Germany"},{"name":"Northeastern University, Boston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-7181-8136","authenticated-orcid":false,"given":"Noble","family":"Mushtak","sequence":"additional","affiliation":[{"name":"Northeastern University, Boston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4189-0727","authenticated-orcid":false,"given":"Michelle","family":"Thalakottur","sequence":"additional","affiliation":[{"name":"Northeastern University, Boston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-1745-2882","authenticated-orcid":false,"given":"Jose","family":"Sulaiman Manzur","sequence":"additional","affiliation":[{"name":"Northeastern University, Boston, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7424-572X","authenticated-orcid":false,"given":"Amal","family":"Ahmed","sequence":"additional","affiliation":[{"name":"Northeastern University, Boston, USA"}]}],"member":"320","published-online":{"date-parts":[[2024,6,20]]},"reference":[{"key":"e_1_3_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086365.1086376"},{"key":"e_1_3_1_3_1","first-page":"397","volume-title":"In: Fundamenta Informaticae 77.4 (June 2007), pp","author":"Ahmed Amal","unstructured":"Amal Ahmed, Matthew Fluet, and Greg Morrisett.\u201cL3 : A Linear Language with Locations\u201d. In: Fundamenta Informaticae 77.4 (June 2007), pp. 397-449. https:\/\/content.iospress.com\/articles\/fundamenta-informaticae\/fi77-4-06."},{"key":"e_1_3_1_4_1","unstructured":"WasmFX developers. Effect handlers for WebAssembly. 2022. https:\/\/wasmfx.dev."},{"key":"e_1_3_1_5_1","doi-asserted-by":"publisher","unstructured":"Michael Fitzgibbons et al. RichWasm Artifact. 2024. https:\/\/doi.org\/10.5281\/zenodo.10906088 10.5281\/zenodo.10906088.","DOI":"10.5281\/zenodo.10906088"},{"key":"e_1_3_1_6_1","unstructured":"WebAssembly GitHub. Component Model Design and Specification. 2022. https:\/\/github.com\/WebAssembly\/component-model\/blob\/main\/design\/mvp\/Explainer.md."},{"key":"e_1_3_1_7_1","unstructured":"WebAssembly GitHub. GC Extension Proposal. 2021. https:\/\/github.com\/WebAssembly\/gc\/blob\/master\/proposals\/gc\/Overview.md."},{"key":"e_1_3_1_8_1","unstructured":"WebAssembly GitHub. Interface Types Proposal. 2021. https:\/\/github.com\/WebAssembly\/interface-types\/blob\/main\/proposals\/interface-types\/Explainer.md."},{"key":"e_1_3_1_9_1","unstructured":"WebAssembly GitHub. Multi Memory Proposal for WebAssembly. 2022. https:\/\/github.com\/WebAssembly\/multi-memory\/blob\/main\/proposals\/multi-memory\/Overview.md."},{"key":"e_1_3_1_10_1","unstructured":"WebAssembly GitHub. Threading Proposal for WebAssembly. 2022. https:\/\/github.com\/WebAssembly\/threads\/blob\/main\/proposals\/threads\/Overview.md."},{"key":"e_1_3_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062363"},{"key":"e_1_3_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190315.1190323"},{"key":"e_1_3_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3571208"},{"key":"e_1_3_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237791"},{"key":"e_1_3_1_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/11417170_22"},{"key":"e_1_3_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/319301.319345"},{"key":"e_1_3_1_17_1","first-page":"43","volume-title":"In: Journal of Functional Programming 12.1 (2002), pp","author":"al Greg Morrisett et","unstructured":"Greg Morrisett et al. \u201cStack-based typed assembly language\u201d. In: Journal of Functional Programming 12.1 (2002), pp. 43-88. https:\/\/doi.org\/10.1017\/S0956796801004178."},{"key":"e_1_3_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263712"},{"key":"e_1_3_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/238721.238781"},{"key":"e_1_3_1_20_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.SNAPL.2017.12"},{"key":"e_1_3_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3609027.3609405"},{"key":"e_1_3_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3519939.3523703"},{"key":"e_1_3_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3622814"},{"key":"e_1_3_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/3591265"},{"key":"e_1_3_1_25_1","first-page":"81","volume-title":"In: Scheme and Functional Programming Workshop (Scheme). Sept. 2006, pp","author":"Siek Jeremy G.","unstructured":"Jeremy G. Siek and Walid Taha. \u201cGradual Typing for Functional Languages\u201d. In: Scheme and Functional Programming Workshop (Scheme). Sept. 2006, pp. 81-92."},{"key":"e_1_3_1_26_1","doi-asserted-by":"publisher","unstructured":"Asumu Takikawa et al. \u201cIs Sound Gradual Typing Dead?\u201d In: ACM Symposium on Principles of Programming Languages (POPL) St. Petersburg Florida. 2016. https:\/\/doi.org\/10.1145\/2837614.2837630 10.1145\/2837614.2837630.","DOI":"10.1145\/2837614.2837630"},{"key":"e_1_3_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176617.1176755"},{"key":"e_1_3_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2015.9"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3656444","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3656444","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,4]],"date-time":"2025-07-04T20:40:40Z","timestamp":1751661640000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3656444"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,6,20]]},"references-count":27,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2024,6,20]]}},"alternative-id":["10.1145\/3656444"],"URL":"https:\/\/doi.org\/10.1145\/3656444","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,6,20]]},"assertion":[{"value":"2024-06-20","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}