Paul Krill
Editor at Large

Mozilla Rust language approaches 1.0 milestone

news analysis
Sep 18, 20143 mins

Mozilla project expands beyond browser engines to support concurrency and quick systems programming

Hand interacting with virtual website http browser
Credit: Thinkstock

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.”

Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

More from this author