At the recent Open Source Technology Summit (OSTS) Josh Triplett, lead engineer at Intel, explained his company’s interest in seeing Rust achieve “parity” with C, still the dominant language for systems and low-level development, in the near future. In a talk titled “Intel and Rust: The Future of Systems Programming” he also talked about the history of systems programming, how C became the “default” systems programming language, what capabilities Rust has over C, and how in the near future it could completely replace C in this programming area.
Lead Intel engineer Josh Triplett gave a terrific talk at the Open Source Technology Summit on how he thinks Rust will replace C as the default language for system programming in the near future, and Intel is ready to get involved
System programming is the development and management of software that serves as a platform for creating application applications, ensuring that they interact with the processor, main memory, input/output devices, and network equipment. The system software creates a special abstraction in the form of interfaces, which help to create application software without going into details of how the “iron” works directly.
Triplett himself defines system programming as “anything that is not an application. It includes things like BIOS, firmware, loaders and operating system kernels, various kinds of embedded low-level code, and virtual machine implementations. Interestingly, Triplett believes that the Web browser is also system software, because the browser has long been more than “just a program,” evolving into a stand-alone “platform for Web sites and Web applications.
In the past, most system software, including BIOS, loaders, and firmware, was written in assembly language. In the 1960s, experiments began to provide hardware support for high-level languages, leading to the creation of such languages as PL/S, BLISS, BCPL, and ALGOL 68.
Then, in the 1970s, Dennis Ritchie created the C (C) programming language for the Unix operating system. Created with the B programming language, which didn’t even have support for typing, C was filled with powerful high-level functions that were best suited for writing operating systems and drivers. Several UNIX components, including its kernel, were eventually rewritten in C. Subsequently, many other system programs, including the Oracle database, much of the Windows source code, and the Linux operating system, were also written in C.
C received tremendous support in this direction. But what exactly made developers switch to it? Triplett believes that in order to motivate developers to switch from one programming language to another, the latter must first provide new features without losing old capabilities.
First, the language must offer “reasonably impressive” new features. “It can’t be a little better. It has to be significantly better to justify the effort and time it takes engineers to make the transition,” he explains. Compared to the assembly language, C had many things to offer. It supported somewhat secure typing, provided better portability and performance with high-level constructs, and generated generally much more readable code.
Second, the language had to provide support for old features, which meant that in the story of the move to C, developers had to make sure that it was just as feature-rich as the assembly language. Triplett explains, “The new language can’t just be better, it also has to be just as good. In addition to being faster and supporting all the data types that the assembly language could use, C also had what Triplett called an “escape hatch,” namely, it supported assembly language code inserts within it.
Triplett at the Rustconf 2019 conference in Portland, Ore.