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

A Lightweight Formalism for Reference Lifetimes and Borrowing in Rust

Abstract: Rust is a relatively new programming language that has gained significant traction since its v1.0 release in 2015. Rust aims to be a systems language that competes with C/C++. A claimed advantage of Rust is a strong focus on memory safety without garbage collection. This is primarily achieved through two concepts, namely, reference lifetimes and borrowing . Both of these are well-known ideas stemming from the literature on region-based memory manageme… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
18
0

Year Published

2021
2021
2024
2024

Publication Types

Select...
3
3
2

Relationship

1
7

Authors

Journals

citations
Cited by 20 publications
(18 citation statements)
references
References 151 publications
0
18
0
Order By: Relevance
“…The goal of this lambda calculus is to serve as a model to demonstrate particular features and their type safety. We do not attempt to capture all of the semantics of Rust and Verus, since formalizing Rust semantics is by itself a large and challenging problem [Jung et al 2018a;Pearce 2021;Weiss et al 2019]. Instead, we focus on a small set of topics that are novel to Verus and are particularly relevant for type safety:…”
Section: Formalizationmentioning
confidence: 99%
See 1 more Smart Citation
“…The goal of this lambda calculus is to serve as a model to demonstrate particular features and their type safety. We do not attempt to capture all of the semantics of Rust and Verus, since formalizing Rust semantics is by itself a large and challenging problem [Jung et al 2018a;Pearce 2021;Weiss et al 2019]. Instead, we focus on a small set of topics that are novel to Verus and are particularly relevant for type safety:…”
Section: Formalizationmentioning
confidence: 99%
“…Third, our lambda calculus is a mostly-functional language that manipulates values, rather than an imperative language that mutates values stored in locations. (This contrasts with more detailed formalizations of Rust centered on locations [Pearce 2021;Weiss et al 2019].) The model language does, however, include two forms of mutation.…”
Section: Formalizationmentioning
confidence: 99%
“…Ownership was first developed as a framework for understanding aliasing in object-oriented languages [34], and is intended to give a high-level structural view of objects and references in much the same way that powerful type systems give a high-level structural view of data. Ownership is now most familiar due to being pervasive in the Rust programming language, for which multiple formalisations have been attempted; RustBelt [24] gives a lower-level encoding of Rust intended for formal verification while Oxide [64] is a higher-level encoding designed for more theoretical work, among others [39]. Extending these ideas to other languages is an active area of research; RefinedC [44] is one example.…”
Section: Compilation and Evaluationmentioning
confidence: 99%
“…Rust [23,19,24] is well-known as a language that combines control of memory use, safe concurrency, and excellent compiler error messages. Rust achieves this balance thanks to a version of ownership types [13,32,12] (also known in the literature as "ownership types" [22,28]) which statically track the lifetime (or owner) of each allocated object; when an object goes out of scope, all the memory owned by that object is deallocated. So far, so C++ [31], but Rust's ownership types ensure that programs remain memory safe, so really not C++.…”
Section: Rusty Linksmentioning
confidence: 99%