this post was submitted on 17 Oct 2024
43 points (100.0% liked)

Programming

423 readers
4 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

cross-posted from: https://lemmy.ml/post/21458338

The GNU Compiler Collection (GCC) support for the C23 programming language standard is now considered "essentially feature-complete" with GCC 15. As such they are preparing to enable the C23 language version (using the GNU23 dialect) by default for the C language version of GCC when not otherwise specified.

Preparations are now underway to set the default C language version of GCC to GNU23 as the GNU dialect of C23. Or in other words, implying -std=gnu23 when no other C standard is specified.

top 5 comments
sorted by: hot top controversial new old
[–] BB_C@programming.dev 4 points 1 month ago (2 children)

That's good and all, but we all explicitly pass -std=gnu99 (or -std=c99 if you don't care about MSYS2 compat) in our build scripts buddy πŸ˜‰

Okay, maybe not all all. But you get the idea.

Are there any relevant projects who use the increasingly C++-infested newer versions of the language?

[–] thingsiplay 11 points 1 month ago (1 children)

I'm not a C programmer, but looking at the changes and improvements, there are lot of good advancements I would not want to miss out on: C11 (C17 just fixes a few little issues from C11) > C23

Stuff like Multi-threading support, Improved Unicode support, Add memccpy() and whats so bad about Various syntax changes improve compatibility with C++? C doesn't exist in a vacuum. If you don't want learn the new changes or do not want rely on it because of compatibility reasons, I can understand. But why would you not use newer C versions, if there is no compatibility with older version "required"?

[–] BB_C@programming.dev 4 points 1 month ago

Multi-threading support

Who stopped using pthreads/windows threads for this?

Unicode support

Those who care use icu anyway.

memccpy()

First of all, πŸ˜„.
Secondly, it's a library feature, not a language one.
Thirdly, it existed forever in POSIX.
And lastly, good bait πŸ˜„.

whats so bad about Various syntax changes improve compatibility with C++

It's bad because compiler implementations keep adding warnings and enabling them by default about completely valid usage that got "deprecated" or "removed" in "future versions of C" I will never use or give a fuck about. So my CI runs which all minimally have -Wall -Werror can fail with a compiler upgrade for absolutely irrelevant stuff to me. If it wasn't for that, I wouldn't even know about these changes' existence, because I have zero interest in them.

Those who like C++ should use C++ anyway. They can use the C+classes style if they like (spoiler alert: they already do).

I can understand. But why would you not use newer C versions, if there is no compatibility with older version β€œrequired”?

Because C doesn’t exist in a vacuum, and Rust exists. Other choices exist too for those who don't like Rust.

My C projects are mature and have been in production for a long time. They are mostly maintenance only, with new minor features added not so often, and only after careful consideration.


^Still^ ^interested^ ^in^ ^knowing^ ^what^ ^relevant^ ^projects^ ^will^ ^be^ ^using^ ^C23.^

[–] zarenki@lemmy.ml 4 points 1 month ago (1 children)

Newer than C99? Both the Linux kernel and systemd build with gnu11. I'd call those pretty relevant.

C23 is still far too new (still a draft) for any major projects that care about compiler compatibility.

[–] BB_C@programming.dev 2 points 4 weeks ago

systemd

Interesting. So they did it two years ago for the ~~lols~~.. i mean for the u8"πŸ˜€"s*...which wasn't even really needed as one of the PR comments pointed out.

* Yes, the mission creep is so bad the shit show that is systemd has emoticons.