Oxide: The Essence of Rust

03/03/2019
by   Aaron Weiss, et al.
0

Rust is a major advancement in industrial programming languages due in large part to its success in bridging the gap between low-level systems programming and high-level application programming. This success has ultimately empowered programmers to more easily build reliable and efficient software, and at its heart lies a novel approach to ownership that balances type system expressivity with usability. In this work, we set out to capture the essence of this model of ownership by developing a type systems account of Rust's borrow checker. To that end, we present Oxide, a formalized programming language close to source-level Rust (but with fully-annotated types). This presentation takes a new view of lifetimes as approximate provenances of references, and our type system is able to automatically compute this information through a flow-sensitive substructural typing judgment for which we prove syntactic type safety using progress and preservation. The result is a simpler formulation of borrow checking - including recent features such as non-lexical lifetimes - that we hope researchers will be able to use as the basis for work on Rust.

READ FULL TEXT
research
06/07/2018

Rust Distilled: An Expressive Tower of Languages

Rust represents a major advancement in production programming languages ...
research
12/19/2022

@C – augmented version of C programming language

The augmented version of C programming language is presented. The langua...
research
01/05/2023

The Usability of Advanced Type Systems: Rust as a Case Study

Advanced type systems that enforce various correctness and safety guaran...
research
08/22/2020

Assurance of Distributed Algorithms and Systems: Runtime Checking of Safety and Liveness

This paper presents a general framework and methods for complete program...
research
02/05/2019

Fearless Concurrency? Understanding Concurrent Programming Safety in Real-World Rust Software

Rust is a popular programming language in building various low-level sof...
research
11/15/2020

Coming to Terms with Your Choices: An Existential Take on Dependent Types

Type-level programming is an increasingly popular way to obtain addition...
research
06/07/2022

Dependently-Typed Data Plane Programming

Programming languages like P4 enable specifying the behavior of network ...

Please sign up or login with your details

Forgot password? Click here to reset