←back to thread

The C23 edition of Modern C

(gustedt.wordpress.com)
515 points bwidlar | 9 comments | | HN request time: 1.383s | source | bottom
Show context
israrkhan ◴[] No.41855279[source]
Most important aspect of C is its portability. From small microcontrollers to almost any computing platform. I doubt that any new version of C will see that much adoption.

If I want to live on cutting edge I would rather use C++2x or Rust rather than C.

Am I missing something? What benefit this supposedly modern C offers?

replies(7): >>41855343 #>>41855410 #>>41855595 #>>41855880 #>>41856401 #>>41858691 #>>41860058 #
1. vitaminka ◴[] No.41855343[source]
these features will eventually trickle down into the mainstream, kind of like C11 is doing at the moment

also, unless you're targeting embedded or a very wide set of architectures, there's no reason why you couldn't start using C23 today

replies(1): >>41855853 #
2. bboygravity ◴[] No.41855853[source]
Or in other words, for embedded and existing code: most use c99, some use c11 and nobody uses c23 until at least 10 years from now.
replies(2): >>41855978 #>>41855982 #
3. dhhfss ◴[] No.41855978[source]
This depends on the platform. Many embedded systems are based on arm these days and have modern toolchains available.

I cannot remember the last time I saw C99 used. C codebases generally use C11 or C17, and C++ code bases use C++20

replies(2): >>41856523 #>>41886801 #
4. vitaminka ◴[] No.41855982[source]
most non-embedded and non-legacy codebases could use c23, that's not an insignificant set
replies(1): >>41886816 #
5. pjmlp ◴[] No.41856523{3}[source]
Unless you can vouch for the C++ compiler, the best C++ portable code can offer today is C++17.

Also 8 and 16 bit embedded toolchains are certainly not on C11 / C17, they can hardly afford full C89.

replies(1): >>41857834 #
6. flohofwoe ◴[] No.41857834{4}[source]
SDCC is a niche C compiler for 8-bit CPUs and is more uptodate than MSVC ;P

https://sdcc.sourceforge.net/

That's the nice thing with C: it's much easier for small teams to fully support than the latest C++ standards.

replies(1): >>41859229 #
7. pjmlp ◴[] No.41859229{5}[source]
Now try to use it on the embedded deployments that require certification.
8. bboygravity ◴[] No.41886801{3}[source]
Most devices that are 6+ years old (as far as I can tell) use C99. If not C89. And/or C++17, if that.

That's A LOT of devices out there. A lot of which still get maintenance and even get feature updates (I'm working on one right now, C99).

So the claim that "C codebases generally use C11 or C17, and C++ code bases use C++20" intuitively sounds like totally untrue to someone working in embedded C/C++. I've been doing this for 15+ years and I've never touched anything higher than C99 or C++17.

If you're talking about gaming, sure. But that's not "C code bases generally".

9. bboygravity ◴[] No.41886816{3}[source]
I would argue that is an insignificant set.

Unless you think that code-bases created in the past year are a significant part of code bases that have been created since the inception of humanity.