You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jan 25, 2025. It is now read-only.
To get a sense of the terminology and why the semantics is structured how it is (i.e. into levels),
I highly recommend reading Niko's post about observational equivalence in Rust. This should
at least be sufficient to understand why we're talking about levels of Rust, but it may well provide
other useful insights as well. Niko's recent work on non-lexical lifetimes features some key
similarities to our approach, and may aid in its understanding.
Terminology
Safe Rust — the core of Rust, without any unsafe code.
Language level — a combination of safe Rust and a set of unsafe abstractions that increase
the overall expressivity of the language, e.g. Rust1 is safe Rust + Vec<T>.
Unsafe abstraction — an abstraction that cannot be implemented in safe Rust (absolute) or the
current language level (relative) without the use of Rust's unsafe block.
Lifetime — the span of time from when a value is allocated to when it is deallocated.
Region — the space on the stack where a value is allocated for its lifetime (see also:
why-regions.md).
Navigating this repository
This repository is split into six parts:
history/ — largely-iterative prior attempts at building & designing Oxide
ownershipv1 and ownershipv2 both have
some notes included that might be insightful to some degree. Evidently, I got lazy afterward
and stopped writing actual prose in the models. Afterward, I switched to LaTeX.