{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,8]],"date-time":"2026-10-08T11:49:38Z","timestamp":1791460178031,"version":"4.3.4"},"reference-count":40,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T00:00:00Z","timestamp":1634256000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2021,10,20]]},"abstract":"<jats:p>Rust is a relatively new programming language that targets efficient and safe systems-level applications. It includes a sophisticated type system that allows for provable memory- and thread-safety, and is explicitly designed to take the place of unsafe languages such as C and C++ in the coding ecosystem. There is a large existing C and C++ codebase (many of which have been affected by bugs and security vulnerabilities due to unsafety) that would benefit from being rewritten in Rust to remove an entire class of potential bugs. However, porting these applications to Rust manually is a daunting task.<\/jats:p>\n          <jats:p>In this paper we investigate the problem of automatically translating C programs into safer Rust programs--that is, Rust programs that improve on the safety guarantees of the original C programs. We conduct an in-depth study into the underlying causes of unsafety in translated programs and the relative impact of fixing each cause. We also describe a novel technique for automatically removing a particular cause of unsafety and evaluate its effectiveness and impact. This paper presents the first empirical study of unsafety in translated Rust programs (as opposed to programs originally written in Rust) and also the first technique for automatically removing causes of unsafety in translated Rust programs.<\/jats:p>","DOI":"10.1145\/3485498","type":"journal-article","created":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T19:18:28Z","timestamp":1634325508000},"page":"1-29","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":68,"title":["Translating C to safer Rust"],"prefix":"10.1145","volume":"5","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-8744-6459","authenticated-orcid":false,"given":"Mehmet","family":"Emre","sequence":"first","affiliation":[{"name":"University of California at Santa Barbara, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ryan","family":"Schroeder","sequence":"additional","affiliation":[{"name":"University of California at Santa Barbara, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7998-3104","authenticated-orcid":false,"given":"Kyle","family":"Dewey","sequence":"additional","affiliation":[{"name":"California State University at Northridge, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ben","family":"Hardekopf","sequence":"additional","affiliation":[{"name":"University of California at Santa Barbara, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,10,15]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"[n.d.]. Rust Compiler Error Index. https:\/\/doc.rust-lang.org\/error-index.html  [n.d.]. Rust Compiler Error Index. https:\/\/doc.rust-lang.org\/error-index.html"},{"key":"e_1_2_2_2_1","unstructured":"[n.d.]. Rust support hits linux-next. https:\/\/lwn.net\/Articles\/849849\/  [n.d.]. Rust support hits linux-next. https:\/\/lwn.net\/Articles\/849849\/"},{"key":"e_1_2_2_3_1","unstructured":"[n.d.]. Supporting Linux kernel development in Rust. https:\/\/lwn.net\/Articles\/829858\/  [n.d.]. Supporting Linux kernel development in Rust. https:\/\/lwn.net\/Articles\/829858\/"},{"key":"e_1_2_2_4_1","unstructured":"2021. NVD - CVE-2021-21148. https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-21148  2021. NVD - CVE-2021-21148. https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-21148"},{"key":"e_1_2_2_5_1","unstructured":"2021. NVD - CVE-2021-3156. https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-3156  2021. NVD - CVE-2021-3156. https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-3156"},{"key":"e_1_2_2_6_1","unstructured":"Lars Ole Andersen. 1994. Program Analysis and Specialization for the C Programming Language.  Lars Ole Andersen. 1994. Program Analysis and Specialization for the C Programming Language."},{"key":"e_1_2_2_7_1","volume-title":"Experience Report: Developing the Servo Web Browser Engine using Rust. arXiv:1505.07383 [cs], May, arxiv:1505.07383 arXiv: 1505.07383.","author":"Anderson Brian","year":"2015"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428204"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-01090-4_32"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2993600.2993604"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582440"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/781131.781168"},{"key":"e_1_2_2_13_1","unstructured":"David Bryant. 2016. A Quantum Leap for the Web. https:\/\/medium.com\/mozilla-tech\/a-quantum-leap-for-the-web-a3b7174b3c12  David Bryant. 2016. A Quantum Leap for the Web. https:\/\/medium.com\/mozilla-tech\/a-quantum-leap-for-the-web-a3b7174b3c12"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168054.1168073"},{"key":"e_1_2_2_15_1","unstructured":"Citrus Developers. [n.d.]. Citrus \/ Citrus. https:\/\/gitlab.com\/citrus-rs\/citrus  Citrus Developers. [n.d.]. Citrus \/ Citrus. https:\/\/gitlab.com\/citrus-rs\/citrus"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2663716.2663755"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.5442253"},{"key":"e_1_2_2_18_1","doi-asserted-by":"crossref","unstructured":"Mehmet Emre Ryan Schroeder Kyle Dewey and Ben Hardekopf. 2021. Supplementary Material on \u201cTranslating C to Safer Rust\u201d. https:\/\/cs.ucsb.edu\/~benh\/research\/papers\/oopsla21-supplementary.pdf  Mehmet Emre Ryan Schroeder Kyle Dewey and Ben Hardekopf. 2021. Supplementary Material on \u201cTranslating C to Safer Rust\u201d. https:\/\/cs.ucsb.edu\/~benh\/research\/papers\/oopsla21-supplementary.pdf","DOI":"10.1145\/3485498"},{"key":"e_1_2_2_19_1","doi-asserted-by":"crossref","unstructured":"Mehmet Emre Ryan Schroeder Kyle Dewey and Ben Hardekopf. 2021. Translating C to Safer Rust \u2013 Extended Version. https:\/\/cs.ucsb.edu\/~benh\/research\/papers\/oopsla21-extended.pdf  Mehmet Emre Ryan Schroeder Kyle Dewey and Ben Hardekopf. 2021. Translating C to Safer Rust \u2013 Extended Version. https:\/\/cs.ucsb.edu\/~benh\/research\/papers\/oopsla21-extended.pdf","DOI":"10.1145\/3485498"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3377811.3380413"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0020-0190(00)00196-4"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45251-6_29"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512558"},{"key":"e_1_2_2_24_1","unstructured":"Tim Hutt. 2021. Would Rust secure cURL? https:\/\/timmmm.github.io\/curl-vulnerabilities-rust\/  Tim Hutt. 2021. Would Rust secure cURL? https:\/\/timmmm.github.io\/curl-vulnerabilities-rust\/"},{"key":"e_1_2_2_25_1","unstructured":"Immunant inc.. 2020. c2rust Manual Examples. https:\/\/c2rust.com\/manual\/examples\/index.html  Immunant inc.. 2020. c2rust Manual Examples. https:\/\/c2rust.com\/manual\/examples\/index.html"},{"key":"e_1_2_2_26_1","unstructured":"Immunant inc.. 2020. immunant\/c2rust. https:\/\/github.com\/immunant\/c2rust original-date: 2018-04-20T00:05:50Z.  Immunant inc.. 2020. immunant\/c2rust. https:\/\/github.com\/immunant\/c2rust original-date: 2018-04-20T00:05:50Z."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158154"},{"key":"e_1_2_2_28_1","unstructured":"S. Klabnik and C. Nichols. 2018. The Rust Programming Language. No Starch Press. isbn:978-1-59327-851-9 lccn:2018019844 https:\/\/doc.rust-lang.org\/book\/  S. Klabnik and C. Nichols. 2018. The Rust Programming Language. No Starch Press. isbn:978-1-59327-851-9 lccn:2018019844 https:\/\/doc.rust-lang.org\/book\/"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1993.274940"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2818302.2818306"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2926697.2926707"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386036"},{"key":"e_1_2_2_33_1","volume-title":"Patina: A formalization of the Rust programming language. Master\u2019s thesis","author":"Reed Eric","year":"2015"},{"key":"e_1_2_2_34_1","unstructured":"Jamey Sharp. 2020. jameysharp\/corrode. https:\/\/github.com\/jameysharp\/corrode original-date: 2016-05-05T21:12:52Z.  Jamey Sharp. 2020. jameysharp\/corrode. https:\/\/github.com\/jameysharp\/corrode original-date: 2016-05-05T21:12:52Z."},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237727"},{"key":"e_1_2_2_36_1","unstructured":"Jeff Vander Stoep and Stephen Hines. 2021. Rust in the Android platform. https:\/\/security.googleblog.com\/2021\/04\/rust-in-android-platform.html  Jeff Vander Stoep and Stephen Hines. 2021. Rust in the Android platform. https:\/\/security.googleblog.com\/2021\/04\/rust-in-android-platform.html"},{"key":"e_1_2_2_37_1","unstructured":"The Rust developers. [n.d.]. The Rust Reference. https:\/\/doc.rust-lang.org\/stable\/reference\/  The Rust developers. [n.d.]. The Rust Reference. https:\/\/doc.rust-lang.org\/stable\/reference\/"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2015.44"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/TASE.2018.00014"},{"key":"e_1_2_2_40_1","unstructured":"Aaron Weiss Daniel Patterson Nicholas D Matsakis and Amal Ahmed. [n.d.]. Oxide: The Essence of Rust. 27.  Aaron Weiss Daniel Patterson Nicholas D Matsakis and Amal Ahmed. [n.d.]. Oxide: The Essence of Rust. 27."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485498","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485498","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:40Z","timestamp":1750191520000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485498"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,10,15]]},"references-count":40,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2021,10,20]]}},"alternative-id":["10.1145\/3485498"],"URL":"https:\/\/doi.org\/10.1145\/3485498","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,10,15]]},"assertion":[{"value":"2021-10-15","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}