K-Rust: An Executable Formal Semantics for Rust
Rust is a system programming language designed for providing better memory safety whilst maintaining performance. Formalizing Rust is a necessary way to prove its memory safety and construct formal analysis tools for Rust. In this paper, we introduce an executable formal semantics of Rust using K-Framework (K), called K-Rust. K-Rust includes two parts: (1) the formal model of the ownership system, which is one of Rust's most compelling features for realizing its memory safety and zero-coast abstraction; (2) the formal operational semantics of Rust based on a core-language. The formal models are tested against various programs and compared with Rust's compiler to ensure the semantics consistency between K-Rust and the compiler. Through the construction of K-Rust we detected inconsistencies of the ownership mechanism between the Rust compiler and the specification in The Rust Programming Language.
READ FULL TEXT