Google engineers recently introduced ‘Carbon’, an open source programming language hailed as the possible successor of C++. With the new ‘experimental’ language being the talk of the internet, conversations around why ‘Rust’ didn’t become the official successor of C++ have also surfaced.
With its own community of people called ‘Rustaceans’ who use, contribute and are interested in the development of the language, Rust is a statically-typed programming language for performance and safety, especially safe concurrency and memory management. Its syntax is similar to that of C++. The open-source project was originally developed at Mozilla Research. In 2021, the Rust Foundation took the torch and drove the development of the language.
In his presentation at CPP North, Google engineer Chandler Carruth advised those using ‘Rust’ to continue using it. Carbon is for developers with large codebases in C++, which are difficult to convert into Rust. Carbon is specifically what Carruth called a ‘successor language’, built on top of an already existing ecosystem, C++ in this case.
According to a StackOverflow survey, Rust is considered to be one of the fastest-growing programming languages and has been ranked as the most liked language by its users. But, programmers say otherwise.
A good language should be safe, fast and easy to program. But is Rust?
Rust is difficult. It has a complex syntax and a steep learning curve. It is designed to uniquely solve some very challenging problems in programming. However, as a beginner, using Cuda or MPI on Rust is not very simple compared to the other options like Swift and Go. Moreover, it is slow. Rust is a snail compared to other languages. Even for small projects, the compile times are painfully long, and runtime measurements show that Rust is less efficient than the C programs.
Imagine rewriting C libraries that have had decades of scrutiny applied only to introduce new bugs. Bugs in code are programmers’ nightmare. While it does save developers from some mistakes, it does not stop them from unintentionally writing bugs. Another issue are the constant warnings appearing over parentheses, especially over if statements and while loops.
Rust is therefore a lot more complicated and inefficient and may soon be superseded by said tooling.
Not so unpopular after all?
Even though first-hand experiences tell a different story, most big techs are already using Rust, while others plan to do so. Recently, Rust joined Meta’s panel of officially supported server-side programming languages. The list previously included C++, Hack and Python.
“There’s a rapidly increasing Rust footprint in our products and services, and we’re committing to Rust long-term and welcome early adopters”, says Eric Garcia, a Meta software engineering manager.
Dropbox uses Rust for some mission-critical bits of its programming. Other internet companies would probably choose Rust when they need good security, multi-threading, and to reduce the amount of hardware. For example, a highly efficient web service written in Rust can save millions of dollars in hardware for a company running thousands of servers.
Google also plans to use Rust in the Linux kernel after bringing support for the systems programming language Rust to Android. To reiterate, the aim is to reduce security flaws. Meanwhile, Microsoft too has turned to Rust to reduce memory-related bugs in Windows components. Currently, there are 25 repositories on GitHub of the public work Microsoft is doing with Rust. Most of them have occasional commits, which is minuscule compared to 317 C++ repositories.
Facebook has also strengthened ties with Rust by joining the Rust Foundation, an organization established in 2021 to make Rust “a mainstream language of choice for systems programming and beyond”.
In 2020, Linux kernel developers proposed rewriting new Linux kernel code in Rust. The idea was to add new code in Rust to the originally written Kernel in C. However, this idea is still in the development stage, described as experimental.
In the future, Rust could become a top favorite language for the Internet of Things (IoT) devices with tiny processors and little RAM but need a high level of security. Moreover, considering its relationship with big techs, it would probably become a favorite language for internet companies that need to offer web services to millions of users.