2/6/2026 at 1:04:30 AM
None of the alternatives have stability. What was exemplary & idiomatic rust pre-pandemic would be churlish & rejected now and the toolchain use would be different anyway.Carpenters, plumbers, masons & electricians work on houses 3-300 yrs old, navigate the range of legacy styles & tech they encounter, and predictably get good outcomes.
Only C has, yet, given use that level of serviceability. C99, baby, why pay more?
When there’s an alternative that can compete with that sort of real-world durability, C will get displaced.
by nacozarina
2/6/2026 at 1:54:40 AM
Having just finished renovating a 140-year-old home with solid brick walls that was slowly collapsing and deteriorating due to the aforementioned professionals’ application of modern and chemically incompatible materials to it… I’m not sure I agree. It’s also why a lot of the UK’s building stock is slowly rotting with black mould right now. Literally none of the professionals I hired, before I trained them, knew how to properly repair a type of home that represents 30% of the UK building stock.by cannonpr
2/6/2026 at 7:24:44 PM
[flagged]by yeame
2/6/2026 at 8:35:57 AM
Outside UNIX clones, and embedded space where it is mostly a religious point of view than available compiler toolchains, C has already been displaced.Even the most relevant C compilers are no longer written in C.
by pjmlp
2/6/2026 at 9:34:43 AM
> Even the most relevant C compilers are no longer written in C.Worth to point out that most of the C compilers are also C++ compilers.
So the point is kind of distorted.
by kreco
2/6/2026 at 11:21:00 AM
On the contrary, GNU Compiler Collection is written in C++ and happens to have C as one of the supported fronteds, having moved away from C in 2008.LLVM is written in C++, also supports multiple language frontends, one of them happens to be C.
Visual C++, also written in C++, happens to still compile some form of C, and after adding some C11 and C17 support (a few items are still missing in 2026), Microsoft is in no rush to add anything else.
The language that matters is the implementation, otherwise we can also talk about the relevance of PL/I compilers from IBM and Unisys, written in C++.
by pjmlp
2/6/2026 at 3:29:10 AM
> Only C has, yet, given use that level of serviceability.On the contrary, Lisp outshines C to a large degree here. Success has nothing to do with technical merit (if such a thing even exists), it's not a rational game.
by ux266478
2/6/2026 at 3:35:14 AM
What makes you say that?by Panzer04
2/6/2026 at 4:06:49 AM
Reduce is a Lisp library that's still in active use from 1968, making it older than C itself. We can point to GNU Emacs as an ancient and venerable self-contained Lisp tortoise with more wrinkles than are finitely enumerable, and is in fact a hosted Lisp operating system. Pulling it apart and working with it is admittedly a treat even if I loathe it as a text editor. Mezzano is a modern Lisp OS that you can play with in a VM, and might give you an idea of why Lisp is such a great systems language.In short: Lisp is semantic and geared towards a living system. The basic REPL is sh + cc + ld + db (and a few others) all in one. It's almost a little mind bending how nice these systems are put together, how cleanly they work. C is like pulling teeth in comparison.
I'm not even a fan of Lisp or sexpr languages. But it's the obvious heavyweight champion of longetivity and ultra-pragmatic service record... Yes, even in the systems domain.
by ux266478
2/6/2026 at 3:45:37 PM
Not sure how viable Mezzano is. The most recent bug report was two years ago. The “beginnings of a manual” was last updated 7 years ago.A better example might be Guix, depending how “operating system” is defined.
by jklowden
2/6/2026 at 5:42:34 PM
Both of which are besides viability. It's just a usable system that gets you an idea of how an OS works when it's Lisp all the way down. It didn't invent this idea, it's just a modern example of it.by ux266478
2/6/2026 at 5:41:50 AM
FWIW, the crabi project within rust is trying to improve on some parts of it. But it is still built on (a subset of) the environments c ABI. And it doesn't fix all the problems.by thayne
2/6/2026 at 1:30:26 AM
C99, but with a million macros backporting features from newer language versions and compiler extensions. Lovely features you don't get with ordinary c99:free_sized
#embed
static_assert
Types for enum
Alignof, alignas, aligned_alloc
_Atomic
by charleslmunger
2/6/2026 at 1:41:26 AM
The replacement has already happened. It is HTTP and JSON for 99% of the software developed today. The reason C stayed has multiple reasons but most obvious ones are for me are:- People just stopped caring about operating systems research and systems programming after ~2005. Actual engineering implementations of the concepts largely stopped after the second half of 90s. Most developers moved on to making websites or applications in higher level programming languages.
- C hit a perfect balance of being a small enough language to grok, being indepedent of the system manufacturers, reflecting the computer architecture of 80s, actually small in syntax and code length and quite easy to implement compilers for. This caused lots of legacy software being built into the infrastructure that gave birth to the current contemporary popular OSes and more importantly the infrastructure of the Internet. Add in .com bubbles and other crises, we basically have/had zero economic incentive to replace those systems.
- Culture changed. We cared more about stability, repairability and reusability. Computers were expensive. So are programmers and software. Now computers are cheap. Our culture is more consumerist than ever. The mentality of "move fast and break things" permeated so well with economic policy and the zeitgeist. With AI it will get worse. So trying to make a real alternative to C (as a generic low level OS protocol) has reduced cultural value / optics. It doesn't fill the CVs as well.
It doesn't mean that people haven't tried or even succeeded. Android was successful in multiple fronts in replacing C. Its "intents" and low level interface description language for hardware interfaces are great replacement for C ABI. Windows' COM is also a good replacement that gets rid of language dependence. There are still newer OSes try like Redox or Fuchsia.
by okanat
2/6/2026 at 3:04:04 AM
I'd never thought I'd see the day that anyone praises COM.by noosphr
2/6/2026 at 9:02:56 AM
If you read Don Box’s book on COM he goes through every decision they made and the rationale for it. It all seemed to make sense.Unfortunately I think Don Box’s was the only person in the world who really understood it all.
by tonyedgecombe
2/6/2026 at 8:41:30 AM
As idea it is great, as the tooling available in C++ Builder, Delphi, VB 6, C++/CX (WinRT is basically COM with extras) also great.Using it from MFC, kind of alright.
Using it from .NET, depends if Framework, .NET Native, or modern, with various levels of usability.
Using it from ATL, WRL, C++/WinRT, is a mess unfortunely.
by pjmlp
2/6/2026 at 11:05:50 AM
Compared to wobbly types in C and hidden contracts due to C compiler internals, COM's IDL-based approach is much better!by okanat
2/6/2026 at 5:36:44 AM
> People just stopped caring about operating systems research and systems programming after ~2005.and so it was that after that date, all development of
embedded systems
kernel drivers
digital audio workstations
video editors
codecs for audio and video
anything that involved actually controlling non-computer hardware
game engines
came to a grinding halt, and no further work was done.
by PaulDavisThe1st
2/6/2026 at 10:06:03 AM
What I mean is all of those things are more of the same things we did since 90s.It is better and higher performing hardware but until Rust and Zig arrived, the most popular ways of designing system-level software stayed the same. RTOSes work the same as how they work in late 90s / early 00s. C ABI is still the majority of communication interface. Interacting with OS using system calls stayed the same. After virtual memory and paging no big change in OS design happened. Main programming design patterns in C and C++ also stayed the same.
One area that stayed interesting is GPU programming. Nowadays CPUs basically provide us a PDP-11 simulator. Most of the time you don't need to recompile programs to harness most of the gains from a CPU. GPUs expose more of their internal hardware detaila than CPUs and unlike CPUs you need to recompile programs (which is what a GPU userspace driver does) to use newer models.
by okanat
2/6/2026 at 2:37:14 PM
Nowadays, NVidia designs their GPUs for C++, not C."Designing (New) C++ Hardware" - https://www.youtube.com/watch?v=86seb-iZCnI
And now with tiled architecture, Python JIT as well.
by pjmlp
2/6/2026 at 8:38:14 AM
On Windows, macOS and Android, most of that development on that list is done in C++, not C.by pjmlp
2/6/2026 at 7:12:19 PM
If you think about it, those who shape mainstream opinion on operating systems were always mostly bought off, and invested in the mainstream operating systems. That investment meant that a niche operating system like Plan9 or BeOS was never going to see wide support from the opinion shapers, even if those OSes had some interesting ideas.by jacinabox
2/6/2026 at 3:16:07 AM
> It doesn't mean that people haven't tried or even succeeded. Android was successful in multiple fronts in replacing C. Its "intents" and low level interface description language for hardware interfaces are great replacement for C ABI. Windows' COM is also a good replacement that gets rid of language dependence. There are still newer OSes try like Redox or Fuchsia.I am not sure I buy this from a system perspective, especially when taking this[1] into consideration.
______
1. Alexis King's reply to "Why do common Rust packages depend on C code?". Link: https://langdev.stackexchange.com/a/3237
by sinnsro
2/6/2026 at 2:51:53 AM
Name me a stable binary interface that is not ints and arrays of intsby trueismywork
2/6/2026 at 9:52:46 AM
C ABI is more than how ints and array of ints sit next to each other in memory.It cares about calling conventions and what you can store in registers vs what you cannot. There are multiple possible ways of doing an RPC call and C ABI only provides one way of doing it.
by okanat
2/6/2026 at 3:50:09 PM
How big is an int?by kevin_thibedeau
2/6/2026 at 8:43:45 AM
COM, WinRT, XPC, AIDL.Now you can move the goal posts and assert that any data serialized into a memory buffer is an array of ints.
by pjmlp
2/6/2026 at 3:21:06 AM
In pieces of my code, I need to call setuserid() to manage some of the security that I designed in 2010.There was no Rust at that point, and I used the most basic tool that could do it.
Could I have done this in Java with gymnastics of JNI, linking C into the JRE?
Definite maybe.
by chasil
2/6/2026 at 8:45:57 AM
Yes, nowadays with Panama, and before Rust was around, JNA was already there so using JNI wasn't strictly necessary.by pjmlp
2/6/2026 at 12:29:34 PM
JNA is a whole dependency of its own, shame it's not built into the JREby direwolf20
2/6/2026 at 1:07:47 PM
It is nowadays, that is what Panama is for.Unless one is stuck with Android Java, Google's J++.
by pjmlp
2/6/2026 at 2:26:29 AM
>Culture changed. We cared more about stability, repairability and reusability. Computers were expensive. So are programmers and software. Now computers are cheap. Our culture is more consumerist than ever. The mentality of "move fast and break things" permeated so well with economic policy and the zeitgeist. With AI it will get worse. So trying to make a real alternative to C (as a generic low level OS protocol) has reduced cultural value / optics. It doesn't fill the CVs as well.IMO I do see this changing in the future as higher power computers become expensive once again, and I'm not just referring to the recent chip shortage.
by kogasa240p
2/6/2026 at 3:06:56 PM
Churlish can’t be the right word here.by NuclearPM