Rust (programming language)

This is an old revision of this page, as edited by Hexene (talk | contribs) at 22:36, 23 December 2010 (Added {{Mozilla projects}}). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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
Paradigmcompiled, concurrent, functional, object-oriented, imperative, structured, statically typed
Designed byGraydon Hoare
DeveloperMozilla Labs
First appeared2006
Typing disciplinestatic, strong, inferred, structural
OSLinux, Mac OS X, Windows
LicenseBSD
Websitegithub.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

  1. ^ "The Rust Language". Lambda the Ultimate. 2010-07-08. Retrieved 2010-10-30. {{cite web}}: |first= missing |last= (help)
  2. ^ "Project FAQ". 2010-09-14. Retrieved 2010-10-30.
  3. ^ Hoare, Graydon (2010-10-02). "Rust Progress". Retrieved 2010-10-30.
  4. ^ "Rust Language". 2010-09-14. Retrieved 2010-11-13.
  5. ^ "Language FAQ". 2010-09-14. Retrieved 2010-10-30.
  6. ^ 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)