Why is it that a language needs to be fully released? I am pretty ignorant on these matters, but it seems like a pain to be stuck with design decisions in C,C++ that were made 30, 40 years ago. Couldn’t there just be versions, like there are now?
andrew has stated, that breaking changes after 1.0 will still occur if they are deemed to be worth it.
So yes, the main thing about 1.0, is the guarantee of stability.
The lack of constant breaking changes makes learning and getting good with zig is much easier.
It means there is little chance of the compiler doing something bad, and if it does occur, then you wouldn’t have to deal with any breaking changes just when updating to fix it.
There are ways to alleviate these problems while still having more active development, but even then more stability still makes things easier.
Because there is a lot of people who write software that will be used for years or even decades. Think of a software written for a plane. Zig is supposed to be a generalist language that can be used everywhere. So you might want to write software for the next airbus in Zig. This plane is going to be in production for decades. Imagine that 10 years from now they find a bug that is caused by solar radiation. You want to be able to patch that software, compile it and deploy it. And you want to do that with an up to date compiler, able to use the operating system and technology of 10 years from now and not stuck with a bitrot compiler. So for this, you need stability in the language.
C is able to do it, zig should be to.
As long as the compiler can specify the version for compilation, it won’t be a problem. There are actually a lot of breaking changes in C language. A large number of common writing methods in c89 have problems in the new standard, and the unique extensions of various compilers have exacerbated the fragmentation of the C language ecosystem. It’s just that the compiler can specify the version and compile with various options.
The recent Airbus solar radiation bug only happened on the newest version of FMGC. This version can be easily reverted or updated by using the latest modern computers and compilers you are using nowadays.
Operators of older Airbus won’t affected by this bug, because their FMGCs have not been updated for decades, and cannot be updated anymore. They are still in super old versions, and they HAVE CRITICAL BUGS too. In this cases, Airbus issues something called OEBs to the operators, which basically tell the pilots how to deal with these bugs, because they can’t fix it anymore. One of the infamous OEBs is that many Airbus can’t automatically release the passenger oxygen masks, so Airbus sent an OEB to operators that, the first officer has to push the “MASK MAN PB“ for more than 2 secs to manually release the passenger oxygen masks during an emergency decent. The other one is that during a missed approach, Airbus lock itself in a certain navigation mode, and cannot go back to the normal mode, Airbus release an OEB to tell the pilots manually reset the flight directors and not to use ILS GS mode in the next approach. Those OEBs basically mean that Airbus can’t fix these bugs anymore. Your aircraft either go to the junk yard, or you manually deal with them, or upgrade the whole avionic system…
Nowadays, the line between stable version and unstable version is very blurred actually. Even the most stable languages and compilers like C, Cobal, Ada have breaking changes version by version. Even the most life critical software like Airbus FMGC, Boeing’s FMC, will eventually reach a line that they can’t fix them anymore, but the aircraft are still operating, surprisingly.