As many people never tire of explaining, the C language is obsolete, unsafe, unwelcome in polite company and generally looked down on by thought leaders and adepts of λ calculus alike. Here’s a program that exhibits the lamentably low level
Threads in C
There is a nice example thread semantics in a paper by David Goldblatt (P1916R0) which illustrates a couple of things about multi-core processing – including how interesting it is and how poorly defined the C11 atomic/thread extension is . A
PLOS 2021 paper: How ISO-C became unusable for operating system development
Memory model and semantics for C
A perceptive note from Linus Torvalds about the C/C++ “memory model” is reproduced below. From Linus Torvalds <> Date Thu, 7 Jun 2018 08:40:49 -0700 Subject Re: LKMM litmus test for Roman Penyaev’s rcu-rr share 0 On Thu, Jun 7,
unfashionable C
In computer science academia, C along with UNIX, and PDP11s, is as unfashionable as can be: the equivalent of other 1970’s relics, like polyester leisure suits and mullets. In 2018 ACM Queue published an essay by David Chisnall called: C
Undefined behavior in C is a reading error.
Considering how important “undefined behavior” has become to C semantics and the ISO/IEC JTC1/SC22/WG14 Committee, the lack of any reference to it in the K&R ANSI book is notable and the description in the 1999 C Rationale was quite modest.
C is not a serious programming language
The C Standards process over the last few decades has addressed both optimization and pointer type safety largely through a concept called “undefined behavior”. The idea is that instead of positive rules for what compilers and programmers can do, the
Dennis Ritchie on alias analysis in the C programming language 1988
This 1998 note by Dennis Ritchie from comp.lang.c (and also here ) is very current since the concept of noalias has definitely crept back into the standard. I have reproduced it verbatim, but lightly formatted for readability. For further reading
undefined behavior and the purpose of C
The C programming language is designed to let programmers work at both low and high levels. In particular, for applications like operating system development, cryptography, numerical methods, and network processing, programmers can go back and forth between treating data as
Three modest proposals for the C standard WG14
Note: these were sent to WG14 as official proposals. See also a longer paper, something on alias and Torvalds remarks and Regehr’s paper. 6.12 Proposal to clarify undefined behavior range for implementations [N 2278] 6.13 Proposal to make aliasing consistent [N