▲ | VyseofArcadia a day ago | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I feel like once a language is standardized (or reaches 1.0), that's it. You're done. No more changes. You wanna make improvements? Try out some new ideas? Fine, do that in a new language. I can deal with the footguns if they aren't cheekily mutating over the years. I feel like in C++ especially we barely have the time to come to terms with the unintended consequences of the previous language revision before the next one drops a whole new load of them on us. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | seritools a day ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> If the size of the new type is larger than the size of the last-written type, the contents of the excess bytes are unspecified (and may be a trap representation). Before C99 TC3 (DR 283) this behavior was undefined, but commonly implemented this way. https://en.cppreference.com/w/c/language/union > When initializing a union, the initializer list must have only one member, which initializes the first member of the union unless a designated initializer is used(since C99). https://en.cppreference.com/w/c/language/struct_initializati... → = {0} initializes the first union variant, and bytes outside of that first variant are unspecified. Seems like GCC 15.1 follows the 26 year old standard correctly. (not sure how much has changed from C89 here) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | pjmlp a day ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Programming languages are products, that is like saying you want to keep using vi 1.0. Maybe C should have stop at K&R C from UNIX V6, at least that would have spared the world in having it being adopted outside UNIX. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | a day ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[deleted] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | ryao a day ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I suspect this change was motivated by standards conformance. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | Ragnarork a day ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> I feel like once a language is standardized (or reaches 1.0), that's it. You're done. No more changes. You wanna make improvements? Try out some new ideas? Fine, do that in a new language. Thank goodness this is not how the software world works overall. I'm not sure you understand the implications of what you ask for. > if they aren't cheekily mutating over the years You're complaining about languages mutating, then mention C++ which has added stuff but maintained backwards compatibility over the course of many standards (aside from a few hiccups like auto_ptr, which was also short lived), with a high aversion to modifying existing stuff. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | _joel a day ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Perl 6 and Python 3 joined the chat | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | hulitu a day ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
It's careless development. Why think something in advance when you can fix it later. It works so well for Microsoft, Google and lately Apple. /s The release cycle of a software speaks a lot about its quality. Move fast, break things has become the new development process. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|