Difference between revisions of "Rust"

From RogueBasin
Jump to navigation Jump to search
(Update to present day situation: The pointer variety is gone and GC values aren't really used anymore.)
Line 2: Line 2:
|company = Mozilla
|company = Mozilla
|influences = C++, Erlang, Haskell, Standard ML
|influences = C++, Erlang, Haskell, Standard ML
|updated = 2013-07-03 (0.7)
|updated = 2014-11 (0.12)
|status = Beta
|status = Beta
|licensing = Open Source (MIT License)
|licensing = Open Source (MIT License)
Line 8: Line 8:
|site = http://www.rust-lang.org/}}
|site = http://www.rust-lang.org/}}


Rust is a systems programming language from Mozilla Research. It is aiming to be a viable replacement for C++ and used by Mozilla to write a next-generation web browser engine. Unlike most high-level programming languages that use garbage collection, Rust uses the scope-delimited memory management idiom of C++ with stronger enforcement at language level. It uses an abstraction idiom similar to Haskell's type classes instead of OO, and supports reasonably extensive generic programming with type parameters that can be constrained to implemented traits. It has a macro system. Values can be specifically annotated to be garbage collected, and then work as values in a GC language. The standard library does not require the GC system.
Rust is a systems programming language from Mozilla Research. It is aiming to be a viable replacement for C++ and used by Mozilla to write a next-generation web browser engine. Unlike most high-level programming languages that use garbage collection, Rust uses the scope-delimited memory management idiom of C++ with stronger enforcement at language level. It uses an abstraction idiom similar to Haskell's type classes instead of OO, and supports reasonably extensive generic programming with type parameters that can be constrained to implemented traits. It has a macro system.


The language and type system have been designed to make it impossible to create memory leaks or null pointer references unless you really try, while maintaining C++-style explicit memory handling. The cost for this is a somewhat complex core language, with several pointer types, separate annotations for explicit value lifetimes and so on.
The language and type system have been designed to make it impossible to create memory leaks or null pointer references outside regions explicitly marked as unsafe, while maintaining C++-style explicit memory handling. The cost for this is a somewhat complex core language with various smart pointer types and explicit value lifetime annotations.


Writing FFI bindings to C code is easy. The language comes with its own build system and unit testing framework.
Writing FFI bindings to C code is easy. The [https://crates.io/ Cargo] tool handles builds and dependencies to third-party packages. There is built-in unit test support.


As of 2013-09, the language is still under heavy development and existing source code can be expected to break in several ways whenever a new version is released.
The stable 1.0 release [http://blog.rust-lang.org/2014/12/12/1.0-Timeline.html is scheduled] for early in 2015.

Revision as of 10:33, 20 December 2014

Rust
Programming Language
Company Mozilla
Influences C++, Erlang, Haskell, Standard ML
Updated 2014-11 (0.12)
Status Beta
Licensing Open Source (MIT License)
Platforms Linux, OS X, Windows, FreeBSD
Official site of Rust


Rust is a systems programming language from Mozilla Research. It is aiming to be a viable replacement for C++ and used by Mozilla to write a next-generation web browser engine. Unlike most high-level programming languages that use garbage collection, Rust uses the scope-delimited memory management idiom of C++ with stronger enforcement at language level. It uses an abstraction idiom similar to Haskell's type classes instead of OO, and supports reasonably extensive generic programming with type parameters that can be constrained to implemented traits. It has a macro system.

The language and type system have been designed to make it impossible to create memory leaks or null pointer references outside regions explicitly marked as unsafe, while maintaining C++-style explicit memory handling. The cost for this is a somewhat complex core language with various smart pointer types and explicit value lifetime annotations.

Writing FFI bindings to C code is easy. The Cargo tool handles builds and dependencies to third-party packages. There is built-in unit test support.

The stable 1.0 release is scheduled for early in 2015.