Litcius/Paper detail

Aliasing Limits on Translating C to Safe Rust

Mehmet Emre, Peter Boyland, Aesha Parekh, Ryan Schroeder, Kyle Dewey, Ben Hardekopf

2023Proceedings of the ACM on Programming Languages25 citationsDOIOpen Access PDF

Abstract

The Rust language was created to provide safe low-level systems programming. There is both industrial and academic interest in the problem of (semi-)automatically translating C code to Rust in order to exploit Rust's safety guarantees. We study the effectiveness and limitations of existing techniques for automatically translating unsafe raw pointers (in Rust programs translated from C) into safe Rust references via ownership and lifetime inference. Our novel evaluation methodology enables our study to extend beyond prior studies, and to discover new information contradicting the conclusions of prior studies. We find that existing translation methods are severely limited by a lack of precision in the Rust compiler's safety checker, causing many safe pointer manipulations to be labeled as potentially unsafe. Leveraging this information, we propose methods for improving translation, based on encoding the results of a more precise analysis in a manner that is understandable to an unmodified Rust compiler. We implement one of our proposed methods, increasing the number of pointers that can be translated to safe Rust references by 75% over the baseline (from 12% to 21% of all pointers).

Topics & Concepts

Rust (programming language)Computer scienceCompilerMemory safetyPointer (user interface)Programming languageExploitArtificial intelligenceComputer securitySoftware Engineering ResearchSoftware Reliability and Analysis ResearchSoftware Testing and Debugging Techniques
Aliasing Limits on Translating C to Safe Rust | Litcius