Paradigms | |
---|---|
Designed by | Graydon Hoare |
Developer | The Rust Team |
First appeared | May 15, 2015 |
Stable release | 1.82.0[1]
/ October 17, 2024 |
Typing discipline | |
Implementation language | OCaml (2006–2011) Rust (2012–present) |
Platform | Cross-platform[note 1] |
OS | Cross-platform[note 2] |
License | MIT, Apache 2.0[note 3] |
Filename extensions | .rs , .rlib |
Website | www |
Influenced by | |
Influenced | |
Rust is a general-purpose programming language emphasizing performance, type safety, and concurrency. It enforces memory safety, meaning that all references point to valid memory. It does so without a traditional garbage collector; instead, memory safety errors and data races are prevented by the "borrow checker", which tracks the object lifetime of references at compile time.
Rust does not enforce a programming paradigm, but was influenced by ideas from functional programming, including immutability, higher-order functions, algebraic data types, and pattern matching. It also supports object-oriented programming via structs, enums, traits, and methods. It is popular for systems programming.[13][14][15]
Software developer Graydon Hoare created Rust as a personal project while working at Mozilla Research in 2006. Mozilla officially sponsored the project in 2009. In the years following the first stable release in May 2015, Rust was adopted by companies including Amazon, Discord, Dropbox, Google (Alphabet), Meta, and Microsoft. In December 2022, it became the first language other than C and assembly to be supported in the development of the Linux kernel.
Rust has been noted for its rapid adoption, and has been studied in programming language theory research.
legal
was invoked but never defined (see the help page).Those of you familiar with the Elm style may recognize that the updated --explain messages draw heavy inspiration from the Elm approach.
influences
was invoked but never defined (see the help page).They are inspired by ... ownership types and borrowed pointers in the Rust programming language.
Project Verona
was invoked but never defined (see the help page).Jaloyan
was invoked but never defined (see the help page).Lattner
was invoked but never defined (see the help page).
Cite error: There are <ref group=note>
tags on this page, but the references will not show without a {{reflist|group=note}}
template (see the help page).