Comment by ryukoposting
3 years ago
> This seems totally misconceived to me as a basis for standardizing a language in 2022. You are optimizing for the few at the expense of the many.
Sure, but it's the same line of reasoning that made C relevant in the first place, and keeps it relevant today - some library your dad wrote for a PDP-whatever is still usable today on your laptop running Windows 10.
Because it's antiquated, it's also extremely easy to support, and to port to new and/or exotic platforms.
The library my dad wrote (lol) for the PDP-11 is probably full of undefined behaviour and won't work now that optimizers are using any gap in the standard to miscompile code.
> using any gap in the standard to miscompile code
For code to be miscompiled, there has to be a definition of what correctly compiling it would mean, and if there were, it would not be undefined behavior.
Instead of "miscompiled" you can read "Doesn't do what it did on the PDP-11 with the compilers of the time".
Yeah, but if that definition is constantly shifting, you cannot expect it to work with existing codebases.
1 reply →
The standard doesn't do that often, but it does sometimes. E.g. realloc to null which was previously defined, and is now UB :(
1 reply →
What a useless and jaded assumption that code written in the past is bad.
The assumption being made here is "any useful C program relies on undefined behavior" which is pretty much true.
4 replies →
I certainly didn't say it was bad. Just that it went outside the boundaries of a standard that was written 25 years later.
> PDP-whatever is still usable today on your laptop running Windows 10
No, it isn't. Go on. Go ahead and try
See it break in a million weird ways. (Or, for a start, it will have the K&R C format, which is a pain to maintain)
"If your computer doesn't have 8-bit bytes" at this day and age? It belongs in a dumpster, sorry.
(I think the only "modern" arch that does this is PIC, and even only for program data - where you're not running anything "officially" C89 or later)
When I first learned C, it was K&R, pre-ANSI with old style function parameters. It is trivial to convert to ANSI C. The truth is C has barely changed in decades.
You should take a look at plan9port - a bunch of userspace tools from Plan 9, carefully ported to Linux with few changes. Maybe that's not PDP-whatever, but it is Sun-whatever. Either way, it's code that was written decades ago for a dead architecture.