Project Details
Description
As a young programing language, Rust features its safety and performance. The key innovation of Rust is to rule out memory bugs and concurrency bugs through strict safety checks during compilation, while keeping the runtime performance of its compiled programs as good as C programs. Rust's popularity is increasing significantly these years and has already been adopted to build many safety-critical software systems. Unfortunately, Rust is known to have a steep learning curve and its safety checks cannot capture all bugs. This project will address these limitations by improving Rust's programmability and strengthening its post-compilation testing. The completion of the project will advance the state of the art in Rust learning and programming and further secure the ecosystem of Rust. The project team will also use the work to design new courses on software security and programming languages and to explore novel approaches to teach new programming languages.
This project aims to enhance Rust's toolchain by answering two research questions. First, Rust's safety mechanism is unique, and the related grammar and semantics are different from traditional programming languages. Thus, programmers can easily write code violating Rust's safety checks and be rejected by the Rust compiler. How can one identify and resolve the programming difficulties incurred by the safety checks? Second, Rust leverages LLVM as its backend, and thus many existing dynamic techniques invented for C/C++ can be applied to Rust programs to capture bugs missed by the safety checks. How can one improve the efficiency and effectiveness of the existing techniques when reusing them to Rust programs? Specifically, the project team will (1) identify programming challenges caused by the safety checks and resolve the challenges using novel visualization techniques, (2) improve the effectiveness of existing testing input generation techniques, (3) accelerate existing dynamic bug-detection and failure-diagnosis techniques, and (4) build automated bug-fixing techniques for bugs detected by the safety checks and dynamic bug-detection techniques.
This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.
Status | Active |
---|---|
Effective start/end date | 2/1/22 → 1/31/27 |
Funding
- National Science Foundation: $105,467.00