Going deeper, but not as far as changing the language (not hoping for memory safety here), I would like better research and documentation for undefined behavior (UB).
I'm not completely opposed to UB. I understand it is an unfortunate performance/safety trade-off that's not fully avoidable in a historical language like C. However, there are many types of UB, and for a few of them, the performance benefits feel theoretical (not supported by empirical evidence). I would love some before/after benchmarks with the types of UB that can be disabled in the compiler, and some open-minded discussion afterwards.
switch(x) { case 1: DoSomething(); case 2: DoSomethingElse(); case 3: SomePrep(); fallthrough; case 4: DoMore(); default: DoNothing; }
Only one statement needed to have case 3 fall through to case 4. No breaks needed at the end of any other cases.
get rid of Macros
adopt Pascal style pointer references... @ is an address, p^ is what p points to
adopt some form of counted strings, with a null on the end for compatibility
adopt Pascal style cast statements, with each path being exclusive (default break)
unsigned int a = 5;
signed int b = -10;
bool c = a + b > 0;
c is true.
Then, second for namespaces.
don't;
know;