GCC 15.1

gcc.gnu.org

280 points by jrepinc 14 days ago


Calavar - 14 days ago

> {0} initializer in C or C++ for unions no longer guarantees clearing of the whole union (except for static storage duration initialization), it just initializes the first union member to zero. If initialization of the whole union including padding bits is desirable, use {} (valid in C23 or C++) or use -fzero-init-padding-bits=unions option to restore old GCC behavior.

This is going to silently break so much existing code, especially union based type punning in C code. {0} used to guarantee full zeroing and {} did not, and step by step we've flipped the situation to the reverse. The only sensible thing, in terms of not breaking old code, would be to have both {0} and {} zero initialize the whole union.

I'm sure this change was discussed in depth on the mailing list, but it's absolutely mind boggling to me

omoikane - 14 days ago

Really excited about #embed support:

> C: #embed preprocessing directive support.

> C++: P1967R14, #embed (PR119065)

See also:

https://news.ycombinator.com/item?id=32201951 - Embed is in C23 (2022-07-23)

elvircrn - 14 days ago

"C++ Modules have been greatly improved."

It would be nice to know what these great improvements actually are.

pjmlp - 14 days ago

Interesting to see some improvements being done to Modula-2 frontend as well.

codr7 - 14 days ago

Finally, musttail, can't wait to try that out.

fithisux - 14 days ago

Any Hope for HaikuOs + Winlibs. GDC would be greatly appreciated.