The Rust language is a low-level systems programming language from Mozilla Research. Under official development since 2009, Rust saw its first pre-alpha release in 2012 and its first stable release in 2015. This makes it one of the newest programming languages on the block. However, it’s growing quickly in popularity.
Developers love using the Rust language. It has won the title of “most loved programming language” for the past three years straight (2016-2018) in Stack Overflow’s annual Developer Survey. Rust can replace much of the functionality of C or C++ in systems-level programming. It’s designed for safety and concurrency while being easier to use than its predecessors.
Coming from Mozilla, the Rust language t is an open source project. It comes with its own compiler – rustc – and build management system – Cargo. While Mozilla engineers are active on the project, a large portion of current commits come from community members.
If you’re interested in learning systems programming, Rust might be a good language to get your feet wet. While most systems programming is still done in C or C++, Rust is easier to learn, handles memory safety so you don’t have to worry about pitfalls, and has the capacity to replace C or C++ in the coming years.
Why the Rust Language?
Rust appeals to both experienced systems programmers and beginners:
- Experienced systems programmers will find that Rust points out data security weaknesses and doesn’t allow for common mistakes. This means you can spend less time and attention worrying about security and more energy on building ambitious projects.
- For beginners, Rust provides similar syntax and familiar tools that you can carry over to C++, but it uses a more modern type system and is more consistent and reliable. It also checks data security at the compiler level, so you can spend less time learning data security pitfalls in other languages.
Over time, with a more mature ecosystem, Rust could eventually be a good language for creating large-scale applications. It’s designed with scale in mind. Rust’s community has won high praise from developers and newcomers, making it likely that continued development will make Rust increasingly viable for large projects.
Companies are using Rust in production, including Dropbox, npm, Atlassian, Mozilla, Coursera, Samsung, and Baidu among others.
Introduction to Rust Concepts
The Rust language has three core focuses as a language: safety, speed, and concurrency. It’s designed to give low-level control over resources and performance while also allowing for high-level abstraction. This makes it a potential language for device drivers, operating systems, browser engines (e.g. Servo), and other applications that demand high security and performance.
Rust is statically typed and doesn’t include garbage collection, unlike other new languages like Go. This lack of garbage collection means Rust allows for predictable cleanup of resources, lower overhead for memory management, and essentially no runtime system.
While you could create web applications and other high-level tools using Rust, it really shines in situations where you need to work closer to the hardware to achieve faster code execution. It checks for security and resource management at the compiler level, and the compiler error messages provide clear messages and act as a second programmer, pointing out errors in your code before it will compile. If you run into issues, the community is helpful in getting your code working properly.
Data Safety & Concurrency
Rust doesn’t permit null pointers, dangling pointers, or data races by design. Its priority is memory safety. As such, you can only initialize data values through a fixed set of forms. In message passing, Rust enforces passing via a single thread to mitigate data races.
Rust avoids garbage collection for safety and faster memory management, but it also helps with concurrency. Instead of garbage collection, Rust implements a system of ownership and borrowing. Every value in Rust has an owner (e.g. a function that controls it), and passing ownership of that value means that the previous owner can no longer access the value, restricting data without restricting code.
The manager also runs tests, generates documentation, and uploads your libraries to crates.io – Rust’s package registry.
Getting Started with Rust
This guide to developing your first project with Rust was the inspiration for this post and is a great place for complete beginners to start.
The official Rust bible is The Rust Programming Language. It’s a free online resource with all the documentation you need to go from beginner to intermediate Rust programmer in no time.
This beloved language is growing in popularity, and it’s a great way to get your feet wet with systems programming. Consider giving the Rust language a try!