Rust is an experimental, concurrent, multi-paradigm, compiled programming language developed by Mozilla Labs.[1] It is designed to be practical, supporting pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles.
Rust | |
---|---|
Paradigm | compiled, concurrent, functional, object-oriented, imperative, structured, statically typed |
Designed by | Graydon Hoare |
Developer | Mozilla Labs |
First appeared | 2006 |
Typing discipline | static, strong, inferred, structural |
OS | Linux, Mac OS X, Windows |
License | BSD |
Website | github.com/graydon/rust |
Major implementations | |
rustc | |
Influenced by | |
Alef, C++, Camlp4, Common Lisp, Erlang, Hermes, Limbo, Napier, Napier88, Newsqueak, NIL, Sather, Standard ML |
The main developer is Graydon Hoare, who began work on the system in 2006; Mozilla became involved in 2009.[2] In 2010 work shifted from the initial compiler, written in OCaml, to the self-hosted compiler written in Rust itself.[3] The self-hosted compiler uses LLVM as its backend.
To emphasise the experimental nature of the language, the Rust wiki clearly states: “This is a very preliminary work in progress. No supported releases yet nor defined release schedule/plans. Caveat emptor. It will crash. It will change syntax and semantics. It will eat your laundry. Use at your own risk. Etc.”[4]
Description
The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet. This has led to a feature set with an emphasis on safety, control over memory layout and concurrency.
Rust intentionally does not include any novel or untested ideas. The project aims to collect the best features of already-created, old languages, and package them into a useful, practical package.
The system is designed to be memory safe, and does not permit null pointers or dangling pointers. Data values can only be initialized through a fixed set of forms, all of which require their inputs to be already initialized.[5]
In addition to conventional static typing, Rust supports typestates. The typestate system models assertions before and after program statements, through use of a special check
statement. Any discrepancies can be discovered at compile time, rather than once a program is running, as might be the case with assertions in C or C++ code. The typestate concept is not new, first being introduced in the NIL programming language.[6]
See also
References
- ^ "The Rust Language". Lambda the Ultimate. 2010-07-08. Retrieved 2010-10-30.
{{cite web}}
:|first=
missing|last=
(help) - ^ "Project FAQ". 2010-09-14. Retrieved 2010-10-30.
- ^ Hoare, Graydon (2010-10-02). "Rust Progress". Retrieved 2010-10-30.
- ^ "Rust Language". 2010-09-14. Retrieved 2010-11-13.
- ^ "Language FAQ". 2010-09-14. Retrieved 2010-10-30.
- ^ Strom, Robert E.; Yemini, Shaula (1986). "Typestate: A Programming Language Concept for Enhancing Software Reliability" (PDF). IEEE Transactions on Software Engineering. ISSN 0098-5589. Retrieved 2010-11-14.
{{cite journal}}
: Cite journal requires|journal=
(help)