How AdaCore’s Rust Fork May Make the Language More Adoptable
There’s a lot of interest in Rust in safety- and security-minded industries. Heck, even Microsoft recently acknowledged that Rust may be the best chance at safe systems programming. But for industries such as automotive, aerospace and defense, the open source language’s rate of change is a challenge.
“There’s an increasing sense of eagerness, if you will, to adopt Rust into these long-lived certification-focused projects,” said Tony Aiello, a product manager and technology strategist at AdaCore. “We know because we’ve heard from customers that they’re not really sure how to pull this off at the moment because the open source tools are moving too fast and there isn’t the professional support with guarantees that we’re able to offer available from the open source community. “
Aillo is referring to the level of support that can turn around a bug fix in two days or address an esoteric problem a company may have with the toolchain within their own organization. Most open source projects just aren’t designed to respond to reported issues in days, he and AdaCore Product Manager Jose Ruiz told the New Stack in a joint interview.
“This becomes very important in aerospace and defense in particular because these systems are very long-lived,” Aiello explained. “You have aircraft that had been flying for many tens of years and these aircraft have software stacks that have been in some sense stable for many tens of years.”
There’s also interest in using Rust for embedded devices — another use that requires long-lived support.
“There’s a lot of people who are clamoring to do Rust,” he said. “A lot of people are excited about it, and that carries a lot of weight even in aerospace and defense, because they’ve got to be able to find programmers who are excited and motivated to do their job.”
From Ada to Rust
AdaCore specializes in providing software development and verification tools to these types of industries. AdaCore was specifically created to support Ada, which was developed by the U.S. Department of Defense (DoD) in the early 1980s as a replacement for its previous complex and error-prone programming languages. AdaCore now supports more than 50 different platforms, when the combination between operating systems and hardware is taken into account.
Ada’s syntax is Pascal-derived. The language shares a lot in common with Rust, including memory safety. Both are also strongly typed languages, which means that the types of data that can be stored in variables are strictly enforced, preventing errors caused by type mismatches. Rust is more strongly typed than C or even C++, Aiello added. Like Rust, Ada is also a statically typed language, which means that the types of data are checked at compile time, not runtime, which can help to prevent errors.
GNAT Pro is a development platform that includes a compiler, a linker, a debugger and language runtimes. AdaCore’s GNAT Pro subscribers will be able to develop safety- and security-certifiable embedded applications using Rust while benefiting from the AdaCore support, Aiello said.
“We deliver all of this with a warranty and so this makes us very different from what folks who are used to engaging with open source toolchains,” Aiello told The New Stack. “What this means in practice is professional development teams, if in using our tools they encounter a bug in the tool, they can write a ticket to us and we’ll fix it as quickly as possible.”
AdaCore forked Rust in order to provide long-term support and to provide backward compatibility. They’re taking the compiler rust, a build and package manager (Cargo) and a debugger (gdb) for x86_64 Linux and Linux cross targets. When GNAT Pro for Rust 25 launches officially next October, it will offer full integration with gprbuild and will provide advanced Ada-Rust bidirectional bindings while supporting more platforms, the company said.
“It’s in some sense a very unique service and again it positions us very differently from the typical open source market where you don’t really know what’s going to happen to old versions of the compiler,” he said. “Probably if there are bugs that are that are discovered in old versions, they’re not going to be fixed because everybody’s moving on, everybody’s looking down the road. That’s appropriate in some development context. It really isn’t appropriate in contexts that require long lifetimes and certification.”
AdaCore is also offering Rust support through its GNAT Pro Assurance, which provides long-term support via sustained branches for the complete toolchain for as long as customers require it.
To support its fork of Rust, AdaCore regularly will pull from the update stream to determine what should be integrated into their version. That includes having ongoing discussions with customers about what features they want or don’t want.
“We’re taking the whole repository, creating a copy of it, updating perhaps multiple branches on that repository as we do our work,” he said. “As we are porting Rust to new platforms, we fully intend to upstream the support packages that enable these ports back up to the community.”