You can switch from writing C to D, and still use all of the existing C libraries and code you do today. You can even use D libraries in your C projects.
There is the betterC flag that can be used as well which essentially turns off the D Lang runtime.
The runtime allows garbage collection and other memory safety that more modern languages like Java and C# have spoiled use with. Also allowing for write once, compile every where. Making it a very portable language.
The other benefit is it is a language not owned and developed by a corporation like Java, C#, objective-C and go. So there is no ulterior motive’s or agendas by said corporation.
I would also remove the distinction between 'class' and 'struct' and just have 'struct'.
I would add the bracket shorthand [] for arrays and {} for maps (and add a map type, maybe.)
And honestly, the more I think about it, the more a "better C" starts to look like a "better Lua," with the ability to return multiple values from a function.
Also a better C would have to be as simple as C, C++ is the definition of complexity. Might look simple on the surface but heck even Meyers can't make heads or tails of the spec ;)
As for the need, there are plenty of contenders like Zig, Odin, Jai, etc. For the most part tho they seem to be about fixing the tooling pipeline, module system and standard library. Syntax might differ ever so slightly but feature set is more or less the same.
1. Eliminate all UB
2. Ability to strictly define memory layouts
3. Ability to safely construct ABI stack frames.