opinion Rust eats into our systems. The first Rusted drivers are being welded into Linux, while Microsoft’s Azure CTO Mark Russinovich said C/C++ – previously the preferred system language – should henceforth be dropped in favor of Rust.
That doesn’t get everyone’s approval. No change in the ecosystem ever is, and language wars have been a part of the tech landscape for as long as there has been one. This time it’s different: the stakes are much higher.
C++ first appeared in commercial form in 1985, the year the Nintendo Entertainment System came to the United States. A generation of systems programmers has progressed from hip young codeslingers to senior management, and they can truthfully say that the fundamental underpinnings of IT have been successfully built the older way. Anything Rust can do, the current C++ can do, too; It’s even insulting to say that programmers need extra help.
Yes, you can build something new from old ideas. Many are useful enough to earn this perseverance through merit. Therefore, any sufficiently old system contains fossils of the past. The legal and medical professions are replete with Latin terminology, while religion can date back as far as the Iron Age. And so it is.
But, as religion so aptly attests, sooner or later the language of the past cannot fully support the needs of the present. People still have fun creating Latin terms for “internet router”” (ductor interretussince you ask), but Christianity has largely recomposed itself for better compatibility with the present.
The fundamental change disrupting C/C++’s compatibility with the real world is the ubiquity of heterogeneously distributed computing. Everyone confuses it everywhere. Don’t run a test on your own daily computing power, but on the computing power of your elderly mother or school-age niece. How many tasks are run on how many operating system instances and where does the code come from? All of them are in shared environments and rely on some low-level magic for sandboxing, partitioning, or isolating.
A bug that in NES days would have led to a bug fix in the next point release can now compromise the privacy of millions of people at once or leave a ransomware-sized hole in a nation’s healthcare system. Global consequences arise from what you type into your IDE, and fast. Rust knows all about it, C/C++ expects you to sort of do it yourself.
“But we can do it ourselves,” say some hardcore kernel kings. “Look, some of this has been running for 30 years with no problems.” As a matter of fact. But just because a skilled surgeon can safely whip out a spleen doesn’t mean you can sell scalpels with “immediate appendectomy” instruction booklets on eBay. Rust reduces risk without sacrificing performance, which means more people can write better code, faster. Who doesn’t hurt?
No, Rust is not magic. But it understands how vulnerable data is to programming errors in a modern environment, and it knows how to enforce compile-time security in a way that doesn’t impact performance. That’s where you want to start by default, not a place where your skills allow you to end up.
Successful languages are responsive to needs and direct the times that produce them. C grew up with the minicomputer, bridging the bridge to the 8-bit micro, environments where efficiency and portability were everything. C++ addressed the increasing volume of software as personal computers became powerful enough to perform complex tasks with complex data. it stabilized in the early 1990s. Rust came of age in the mid-2010s – designed for security, reliability, and concurrency, the leading themes of the distributed age.
Transitions are never easy. Open source relies on large pools of skilled developers to build and skilled eyeballs to review and fix code, and those pools of system-level skills in C/C++ are much larger than Rust. But a really good systems engineer, and they should all be really good, thinks in terms of form and abstraction, much of which is common to all programming languages. Much depends on culture and ego rather than technical ability. No programming class teaches humility in the face of a good idea, but making things better over time is the great secret.
We are privileged to be a part of it. Since the 1970s, information technology has evolved from a distant concept primarily of interest to banks, spies and scientists to a shimmering mirror world woven into everyone’s lives. All of this has happened with only two generations of system languages. It’s like having only two sets of wrenches between Kitty Hawk and Cape Canaveral, and kudos to the Kernighans, Ritchies and Stroustrups who led the way. Few people outside of IT can understand the day-to-day magic behind it.
Rust has all the indications of being third generation. It builds on what came before to solve today’s problems and unleash the talents of more people to create what’s next. It’s going to be both a cultural and a technical shift, and as a species we’re good at making heavy weather out of it. Yet by 2028 it seems to have been inevitable. Enjoy experiencing the story – and refresh your Rust. ®
#Rust #eats #systems #good