- GNU extensions, such as zero-length arrays, ?: with nothing in between, and statements inside of expressions
- Less confusing syntax for types
- Full LLVM features
- Non-Unicode
- Both normal include files and token macros, as well as namespacing and hygienic macros supported too
- Standard macros for testing alignment, endianness, etc
- Macros that can call compile-time execution of codes which can deal with the AST
- Reduced runtime requirements
- Support for setjmp/longjmp with catch blocks; if you longjmp past such a block, it should execute the catch block to clean up as needed before that block jumps again back to the target of the longjmp operation
- The goto command.
The worst thing about C is I think the confusing syntax for types. Pointer arithmetic and goto are both good, though, so keep those.
I can do without automatic memory management.