![Ryan Fleury Profile](https://pbs.twimg.com/profile_images/1880848502856794112/vov-iBxz_x96.jpg)
Ryan Fleury
@ryanjfleury
Followers
13K
Following
7K
Statuses
6K
Digital Grove | Working on the RAD Debugger at @radgametools / @epicgames (opinions my own)
Washington, USA
Joined November 2016
@MrJayLC No, you need to care about the former contract between old code and old versions of the toolchains. That’s much higher priority. That is often at odds with evolutions in the spec or new abuses of it.
1
0
0
RT @TheGingerBill: I have people asking about "Idiomatic Odin" all the time; I try to tell them: Just write code, stop trying to find shor…
0
11
0
@MrJayLC I don't care about the spec, I care what the toolchains do, and I want to emphasize a preference for responsible *toolchain* management, which by-and-large includes *disregarding the spec*
1
0
2
@valigo_gg @croloris It is not even UB, it’s legal in C99+, the only nonstandard part was the anonymous structures (which everyone supports) My point was that it became legal in C99+ because the spec is downstream—not upstream—from the toolchains, and the toolchains have been doing this forever.
1
0
3
@Tpouhuk2 (Actually I was wrong, the only nonstandard part about this is the anonymous structures which are ubiquitously supported—the type-punning is legal in C)
0
0
22
I don’t advocate “putting in UB knowingly”, if it isn’t doing something widely done & obvious. I made a broader point that the specification is not (and in C, cannot be) where the meaningful definitions of behavior are. Near 100% of the value and thus near 100% of the power are within the actual providing of the platforms & toolchains itself, which C definitionally abstracts over.
0
0
16
@JintoFox Because the spec is abstract, it is widespread. But because it’s abstract, the fact that it’s widespread means nothing. It has not avoided any fundamental problem, it’s just attached the name “C” to something less fundamental.
0
0
9
In any case, the idea of “taking old source code, rebuilding it with a new compiler, and expecting the same results” was always as dumb as the idea to use dynamic dependencies for everything (in the Linux world for instance), because it’s another example of the same problem—changing guarantees while using the same API shape. Your idea that “we’ll just do that, except better” reveals a deep misunderstanding of the problem.
1
2
33
This is an example of the weird tendency in online programming debates which—despite being nominally about “engineering”—is to take a rhetorical relationship and extrapolate it as if it were a law of the universe. The result is very silly conclusions, like “C:ASM” is “ChatGPT:C”.
1/ Every major abstraction in computing faced the same pushback: Assembly → 'But what about memory control?' C → 'Too slow, need assembly' Python → 'Real engineers use C++' React → 'Just write vanilla JS' AI → 'You don't understand the code' They were wrong every time.
7
7
109