Mozilla's Rust, a systems programming language designed to prevent data races and most crashes, is moving toward a 1.0 release.
Intended to support concurrency and parallelism, Rust features a static type system as well as modern programming constructs with a performance model. "We have nailed down a concrete list of features and are hard at work on implementing them," said Mozilla's Niko Matsakis, a senior researcher, in the Rust blog this week. "We plan to ship the 1.0 beta around the end of the year. If all goes well, this will go on to become the 1.0 release after the beta period."
The language is focused on the concepts of ownership and borrowing. "This is very exciting, because any library we can write, you can write too," Matsakis said. "This really gives us confidence that Rust will not only achieve its original goals, but also go beyond and be used for all kinds of things that we haven't even envisioned."
Ownership was introduced as a means of safely transferring data between tasks, but the Rust team learned the same mechanism allows for moving capabilities like threading and reference-counted data into libraries, resulting in a closer-to-the-metal design. "All Rust language constructs have a very direct mapping to machine operations, and Rust has no required runtime or external dependencies," claimed Matsakis.
Rust is a multiparadigm language, drawing on Haskell/ML, C++, and more, which cover functional, imperative, and object-oriented programming. Multiparadigm programming languages is a concept that has been around for a while, said analyst Al Hilwa in an email. "Perl is a famous example. They tend to have constructs to please everybody. Sometimes it is useful to have different ways of doing things within the same umbrella of a single languages."
The language has stuck to its goal of providing the safety and convenience of modern languages while offering the efficiency and low-level control of C and C++, Matsakis said. "Basically, if you want to get your hands dirty with the bare metal machine but you don't want to spend hours tracking down segfaults and data races, Rust is the language for you." But work still needs to be done on capabilities like dynamically sized types, unboxed closures, and associated types.
Mozilla's Servo browser engine leverages Rust. The original goal of Rust was to be a good platform for building client applications, such as browsers, said Matsakis. "That's still important, but Rust is already finding use in other areas that we weren't considering initially, such as servers or integrating with Ruby and other dynamic languages."