11 April 2022

Software Development

Rust projects – why large IT companies use Rust?

12 minutes reading

Rust projects – why large IT companies use Rust?

Choosing the right technology for the project is not an easy decision and depends on many factors. If a programming language does not meet the application’s requirements, the project can fail. Nobody wants to lose time and money because of a rash decision. 

More and more, Rust is an option on the table, but many enterprises prefer to keep it at arm’s length. Why? This technology is younger than well-known, older veterans like C and C++ and has not had enough time to prove itself. 

Read the article to check out what is Rust used for in IT and how other large IT companies use Rust lang in production and why you also should be ready for it. 

What is the Rust language? 

Rust was established in Mozilla by one of their employees, but now it has its own foundation. Rust is a multi-paradigm, general-purpose programming language. The Rust language is often compared to C or C++ and it's often asked whether Rust is better than C++ or not. This is not without reason – Rust and C++ have similar syntax, which makes Rust a bit harder to learn at the beginning for the developers, especially if they do not have experience in C++. 

Despite the more stiff learning curve, Rust is appreciated among the developers' community as the programming language that provides a higher level of memory safety and ensures great performance. Another classic comparison is Python vs Rust.

New call-to-action

How can Rust boost your project? Rust’s benefits 

In Rust it is both possible to program high-level tasks, and go down to the bare metal and operate close to the hardware like using any other low-level language. 

How else can Rust’s features improve your project? 

Memory safety 

Ensuring memory safety is one of Rust's priorities. Rust safe mode implements safe memory management and protects software from possible bugs and security vulnerabilities.

If memory safety is a significant main problem, e.g. while working in C++, Rust is a great choice. Anytime there is a need to loosen safety restrictions, the developer can switch to unsafe mode in Rust

Performance level in Rust 

Besides the possibility of compiling to native code, Rust has no runtime, no garbage collection, and, if needed,has direct access to memory. 

Rust provides two modes: safe and, as mentioned above, unsafe Rust. In cases when the Rust compiler is too restrictive for current needs, there is always the possibility of switching to Rust's unsafe mode. However, beware – in unsafe mode, the developer is fully responsible for the correctness of the code.

Rust was created to achieve high performance without sacrificing safety and these features allow for that. Nevertheless, do they make Rust better than C? Check out our previous article if you’re wondering how Rust's performance looks compared to C language

Rust vs. C webinar

Concurrency and parallel programming in Rust 

In Rust, some concurrent programming-related problems are solved, as they are detected at compile time, making the concurrent programs easier to write. One example is the fact that Rust language prevents data races. Data races are easy to make and hard to find, making them one of the most destructive types of concurrency bug – with the ownership feature, we can create only one mutable reference to a particular piece of data at a time. That's why Rust ensures that no data races are created. 

Rust community 

Behind Rust stands a strong and active community. It works on the language’s development by keeping libraries up-to-date, creating new ones and coming forward with proposed modifications. The Rust community has forums and chat platforms to share knowledge and support each other. There is one minor drawback – Rust, as a quite young language, still has fewer open-source projects available. 

Is Rust cross-platform?

Rust supports a variety of platforms, such as Linux, macOS, and Windows, which helps companies to migrate and deploy applications. 

What is more, Rust publishes many binary releases from the standard library and, for some platforms, also a full compiler

The above-mentioned benefits sound great, but how do others use Rust? In the following section, you will find some real-life cases. Keep reading to find out how this language can support your project. 

Which companies use Rust? 

The list of companies that use Rust in production is extensive. The highlighted examples aim to show Rust's opportunities and the variety of environments in which it does its job well. 

  • Mozilla 

The Mozilla Corporation is an associate of the Mozilla Foundation. It harmonizes and integrates the growth of their Internet-related applications. The company supported the project from the very beginning – Firefox (Mozilla's browser) Stylo, the CSS engine, is created in Rust.

  • Android 

Android is a mobile operating system. It is designed mainly for touchscreen mobile devices. For over a year, the Android team has been working on adding Rust support to the Android Open Source Project. The company plans to share a few early adopter projects in the near future.

  • AWS (Amazon Web Services) 

AWS is an on-demand cloud computing platform and API provider to individuals, companies, and governments. Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2), Amazon CloudFront, Amazon Route 53 – these are just a few examples of Amazon services built in Rust. 

  • Iqlusion 

Iqlusion delivers infrastructure for cryptocurrency technologies. It specializes in the Cosmos Network, which accelerates crypto finance. In this project, Rust is used to develop in-house and OSS software and for both infrastructure and DevOps tools, and cryptographic key management services.

  • Discord 

Discord is a Voice over Internet Protocol (VoIP) platform, allowing users for instant messaging and digital distribution. Discord's codebase's client and server sides are both written in Rust. Also, they decided to rewrite the Read States service, which was previously built in the Go programming language. Discord appreciates Rust mostly for its type safety, great tooling, and borrow checker. 

  • Figma 

Figma is a vector graphics editor available on the web and as a mobile app. Figma's multiplayer server was originally written in TypeScript. However, it did not pass the test of increasing popularity - the server could not keep up anymore and the Figma team decided to rewrite it in Rust. 

  • Honeypot

Honeypot is a job platform, mainly for developers. Honeypot’s Searchspot service is written in Rust. Searchpot allows developers to create searchable entities in a structured but, at the same time, flexible way.

  • ThreatX

This platform is integrated with a managed service helping defend vulnerable APIs and web applications. The ThreatX Web Application Firewall (WAF) and central analysis engine are written in Rust to make the real-time analysis of high bandwidth web applications more easily manageable. 

  • npm, Inc

npm is the package manager for the Node JavaScript platform used to publish, discover, install, and develop node programs. Implementing Rust allows npm to achieve better scalability and efficiency. The team admits that rewriting the service in Rust was more time-consuming but worth the effort – the deployment of the new Rust service is more straightforward, and causes few operational issues. 

The list of satisfied companies who have switched from their initial programming language to Rust continues to grow. More and more businesses are seeing Rust's potential and taking advantage of the opportunity to boost their projects.

When to use the Rust language? 

As a rule, Rust might be a good choice for your project when your priorities include high performance, precision control over threads, and you value memory safety over simplicity. 

The common and recommended uses for Rust are: 

Embedded systems – software running on constrained devices or firmware. Rust allows for direct access to hardware and memory, which makes it a great solution for embedded and bare-metal development. 

Kernel driver development – Rust is the second official language for Linux development. C and C++ never reached this point because of their memory safety limitations. This idea is still considered experimental but good enough that kernel developers can begin working on creating drivers and other modules.

Operating systems or microcontroller applications – again, you can use Rust to get down to the bare metal and operate really close to the hardware. 

Replacement software parts – where performance plays a crucial role. Thanks to foreign-function interfaces, C libraries can be easily reused in Rust projects without the need to rewrite the entire product.

Conclusion 

If you’re considering Rust for your next project, there is no time to waste. This language is ready to support your projects and benefit your business. Rust is often called a C/C++ replacement. And this is not entirely untrue – both languages have similar usages and fit the same project types. However, Rust is something more – it has learned from C and C++ vulnerabilities to become a serious candidate for your next project language. Rust’s enormous popularity, being chosen and recommended by so many IT professionals and big companies, is not a coincidence but a consequence of its performance. 

Rust was chosen again as the most loved language (for the sixth time in a row) by around 82,000 responding developers. What's more – Rust gains almost 26,000 votes from developers as the language they want to start with or continue developing. Rust developers' community is growing, and many still wish to join.  

Rust does have some things to make up for, like fewer open source projects. All solutions have their drawbacks, but when you compare Rust’s pros and cons, the immensity of the possible business benefits is clearly visible.

Krzysztof

Krzysztof Wróbel

Director of Engineering