2021
DOI: 10.1145/3485498
|View full text |Cite
|
Sign up to set email alerts
|

Translating C to safer Rust

Abstract: 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… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
12
0

Year Published

2022
2022
2023
2023

Publication Types

Select...
4
3

Relationship

0
7

Authors

Journals

citations
Cited by 22 publications
(12 citation statements)
references
References 26 publications
0
12
0
Order By: Relevance
“…1) Transforming C2Rust-Generated Code: A few tools have been proposed to replace C features in C2Rust-Generated code with their counterparts in Rust, but they do not target the lock API. Emre et al [28] tackled replacing C pointers in Rust with Rust pointers. Their work also requires semantic information, but they focus on pointers and sequential programs.…”
Section: Related Workmentioning
confidence: 99%
“…1) Transforming C2Rust-Generated Code: A few tools have been proposed to replace C features in C2Rust-Generated code with their counterparts in Rust, but they do not target the lock API. Emre et al [28] tackled replacing C pointers in Rust with Rust pointers. Their work also requires semantic information, but they focus on pointers and sequential programs.…”
Section: Related Workmentioning
confidence: 99%
“…During the transpilation of C libraries, c2rust treats each file as a separate compilation unit, which gets translated into a separate Rust module. Consequently, struct definitions are duplicated, and available function definitions are put in extern blocks [14]. We apply a preprocessing step similar to the resolve-imports tool of Laertes [14] that links those definitions across files.…”
Section: Preprocessingmentioning
confidence: 99%
“…In response to this demand, automated tools translating C code to Rust emerge from both industry and academia [14,21,26]. Among them, the industrial strength translator C2Rust [21] rewrites C code into the Rust syntax while preserving the original semantics.…”
Section: Introductionmentioning
confidence: 99%
See 2 more Smart Citations