← Back to context

Comment by quelsolaar

3 years ago

We can! Many of us still use c89.(c99 has problems, like variable length arrays).

The reality however is that you cant escape never versions entirely. Not all code you interact with was written in the subset you want, so when your favorite OS or library starts using header files with newer features you need to run that version of the language too.

Another less appreciated detail, is that a lot of WG14 work is not about adding new features but clarifying how existing features are meant to work. When the text is clarified this gets back-ported to all previous versions of C in major compilers. An example of this is "provenance". This is a concept that implicitly been standard since the first ISO standard, but only now is becoming formalized. This means that if you want to adhere to the C89 standard, you will find a lot of clarifications about how things should work in the C23 standard.

VLAs are optional since C11. There is no reason why a vendor can't support a modern language.

  • VLAs are not the only thing added to C since 1999.

    • They are one of the few things added that require the target platform, rather than the compiler, to do something different. (And the other big things like that, like atomics, are similarly optional.)