Rust is a relatively young programming language designed to enable the development of safe and efficient systems software. Its core philosophy is to eliminate memory and concurrency bugs through strict compile-time safety checks, while maintaining runtime performance of compiled programs comparable to C. Rust relies on LLVM as its compiler backend, which allows many existing testing tools originally developed for C/C++ to be reused for detecting bugs that escape the compiler’s safety guarantees. Thanks to its strong safety features and high performance, Rust has gained significant popularity in recent years and is increasingly adopted for building safety-critical software systems.
Our work focuses on enhancing the Rust toolchain by addressing two key research questions. First, how can we identify and mitigate the programming challenges introduced by Rust’s strict safety checks? Second, how can we improve the efficiency and effectiveness of applying existing C/C++ techniques to Rust programs? Specifically, we are 1) identifying programming challenges caused by Rust’s safety checks and addressing them through novel visualization techniques, 2) improving the effectiveness of existing test input generation techniques for Rust, 3) accelerating dynamic bug detection and failure diagnosis methods, and 4) developing automated bug-fixing techniques for issues detected by both Rust’s safety checks and dynamic bug detection tools.