MENU

Rust turns 10: From challenger to the system language of the future

Rust turns 10: From challenger to the system language of the future

News |
By eeNews Europe



Today Rust celebrates the 10th anniversary of the first version of a programming language that has revolutionized systems programming with its focus on safety and performance. Over the past decade, Rust has gained popularity and has become a favourite among developers for its features and robust ecosystem.

To celebrate, Elektor Academy and eeNews are launching a birthday conference on July 16th

The popularity of the language has been on a steady rise since its inception. According to the Stack Overflow Developer Survey, Rust has been voted the most loved programming language for several years in a row. Developers appreciate Rust’s ability to provide memory safety without sacrificing performance, making it suitable for a wide range of applications.

The journey began in 2006 as a side project by Graydon Hoare, who was working at Mozilla at the time. The language saw significant development and community involvement, leading to the release of Rust 1.0 on May 15, 2015. Since then, Rust has continued to evolve, with regular updates and improvements driven by its active community and the Rust Foundation.

Mozilla

The development of the programming language began back in 2006, when Graydon Hoare, an engineer employed by Mozilla, started Rust as a hobby project. Incidentally, he derived the name from so-called rust fungi. The project was supported by his employer from 2009 onwards, and Rust was announced in 2010. Rust played an important role at Mozilla in Project Servo, particularly in the modernisation of the Firefox browser code.  The success of Servo demonstrated the potential for building safe and efficient systems, further solidifying its reputation in the industry.

The key differentiator is its focus on safety and concurrency. Unlike C and C++, Rust guarantees memory safety through its ownership system, which eliminates common bugs such as null pointer dereferencing and buffer overflows. Additionally, the concurrency model ensures that data races are caught at compile time, making it easier to write safe and concurrent code. 

Initially, there was still a garbage collector, but this was abandoned in favour of an ownership system and a borrowing checker. This catches memory errors at compile time, which is very important for preventing crashes and security vulnerabilities, while the borrowing checker concept prevents data races from occurring. At any time, only exactly one programme part has modifying access to a memory location. This property can be statically verified in Rust, meaning that corresponding errors are transformed from runtime errors to compilation errors. The language therefore guarantees memory and thread safety without having to rely on a garbage collector. However, the concepts of ownership and borrowing require a deeper understanding of memory management concepts.

While the syntax is similar to C and C++, many of its features have been influenced by functional programming languages such as OCaml. The type system facilitates the writing of thread-safe code, which is important for today’s embedded Linux systems. Cargo, a build and package management tool, is supplied together with the compiler. Rust’s own package format is available for distributing software components. The so-called crates can be published in a public repository and are therefore also available to other developers.

The rustc compiler, which is written in Rust itself, is based on the LLVM infrastructure. This means that it can be used on common processor architectures such as ARM, x86, PowerPC, MIPS, RISC-V and WebAssembly.

Rust has a standard library, but the lack of a formal language specification, as with C and C++, has been cited time and again when arguments against Rust are put forward. Other arguments against the use of Rust in embedded deployment scenarios include a smaller ecosystem compared to C/C++, integration with legacy code, which requires careful planning and a step-by-step approach, and the experience that not all providers of embedded systems have yet jumped on the Rust bandwagon. However, a massive amount of catching up is taking place.

The Foundation

The Rust Foundation, established in 2021, plays a pivotal role in supporting the growth and development of the Rust programming language. The foundation provides resources, infrastructure, and governance to ensure the long-term sustainability of the Rust ecosystem.

Rust has made significant strides in the embedded systems domain. Its safety guarantees and performance make it an excellent choice for developing firmware and other low-level software. The Embedded Devices Working Group, embedded-hal, and the Embedded Rust Book are some of the initiatives that support adoption in the embedded space.

Initiatives

Ferrocene is an initiative to bring Rust to the safety-critical domain. It aims to provide the tools and certifications necessary for using Rust in industries such as automotive and aerospace.

The Safety-Critical Rust Consortium is a collaborative effort to promote the use of Rust in safety-critical applications. It brings together industry leaders and experts to develop best practices and standards for using Rust in high-assurance systems.

Linux Kernel Language

The potential as a language for the Linux kernel has been recognized by the Linux community. Efforts are underway to integrate Rust into the kernel, which could lead to safer and more reliable kernel code.

As we celebrate the 10th anniversary of Rust 1.0, it’s clear the language has made a lasting impact on the programming world. With its focus on safety, performance, and community, Rust is well-positioned to continue its journey of innovation in the years to come.

Conference

Elektor International Media, to which eeNews belongs, is also hosting an online conference on the use of Rust in embedded development on 16 July. Participants will learn about the latest developments in the embedded community, the advantages of the programming language and examples of its use in embedded projects. 

Sign up for the Rust birthday conference here

If you enjoyed this article, you will like the following ones: don't miss them by subscribing to :    eeNews on Google News

Share:

Linked Articles
10s