> I still stay with C89 because I know it will be portable anywhere

With respect, that sounds a bit nuts. It's been 37 years since C89; unless you're targeting computers that still have floppy drives, why give up on so many convenience features? Binary prefixes (0b), #embed, defined-width integer types, more flexibility with placing labels, static_assert for compile-time sanity checks, inline functions, declarations wherever you want, complex number support, designated initializers, countless other things that make code easier to write and to read.

Defer falls in roughly the same category. It doesn't add a whole lot of complexity, it's just a small convenience feature that doesn't add any runtime overhead.

To be honest I have similar reservations.

The one huge advantage of C is its ubiquity - you can use it on the latest shiny computer / OS / compiler as well as some obscure embedded platform with a compiler that hasn't been updated since 2002. (That's a rare enough situation to be unimportant, right? /laughs in industrial control gear.)

I'm wary of anything which fragments the language and makes it inaccessible to subsections of its traditional strongholds.

While I'm not a huge fan of the "just use Rust" attitude that crops up so often these days, you could certainly make an argument that if you want modern language features you should be using a more modern language.

(And, for the record, I do still write software - albeit recreationally - for computers that have floppy drives.)

C has its unique advantages that make some of us prefer it to C++ or Rust or other languages. But it also has some issues that can be addressed. IMHO it should evolve, but very slowly. C89 is certainly a much worse language than C99 and I think most of the changes in C23 were good. It is fine to not use them for the next two decades, but I think it is good that most projects moved on from C89 so it is also good that C99 exists even though it took a long time to be adopted. And the same will be true for C23 in the future.

I know this a four day old comment, but based on your post history I think you are probably the best person to ask to be more specific. So, you start out stating “C has its unique advantages”, an assertion I agree with but more for ‘vibes’ than because I can articulate the actual advantages (other than average compilation times). If you see this I would love to hear your list of C’s unique advantages.

My list of advantages:

  - long-term stability: the code I wrote two decades ago is still valuable to me
  - short (!) compilation times: this is a huge productivity boost
  - the language is very explicit: one can see and understand what is going on
  - mature tooling: good compilers and many other tools
  - simplicity and elegance: the language is small and not much I need to remember
  - portability: supported on many different systems
  - performance: C code can be very performance and usually it is without effort
  - lean: there is no bloat anywhere
  - interoperability: it can interoperate with everything
  - no lock-in: it does not lock you into specific frameworks or ways to do things
  - maintained using an open and (relatively) fair process: not controlled by specific companies
  - what needs to be done, can be done: there are never showstoppers

I should also talk about disadvantages and which I think are real and which are not, or not serious

  - no abstractions: i think this is completely wrong, one can build great abstractions in C
  - no package manager: IMHO languages should not have packager managers
  - difficult to learn: I think this wrong (but see below)
  - safety: partially true, but there are ways to deal with this effectively (also the advantages of alternatives are exaggerated)
  - out-dated: partially true with respect to the library
  - weird syntax: partially true, but hardly serious
  - not enough investments in tooling: rarely discussed, but I think this a problem (tools are mature, but still a lot could be improved)
  - difficult for beginners: the out-of-the-box experience is bad. one needs to learn how to do stuff in C, find good libraries, etc.

> The one huge advantage of C is its ubiquity - you can use it on the latest shiny computer / OS / compiler as well as some obscure embedded platform with a compiler that hasn't been updated since 2002.

First, for all platforms supported by mainstream compilers, which includes most of embedded systems (from 8 bit to 64 bit), this is not really a concern. You're cross-compiling on your desktop anyway. You'd need to deliberately install and use gcc from the early 1990s, but no one is forcing you. Are you routinely developing software for systems so niche that they aren't even supported by gcc?

But second, the code you write for the desktop is almost never the code you're gonna run in these environments, so why limit yourself across the board? In most embedded environments, especially legacy ones, you won't even have standard libc.