Personally, I’m a subscriber to the “third time’s a charm” thesis. Generally, version 3 is when a software development project really gets on track. Someone mentioned PHP earlier. How many people have seen code written for PHP 1 or 2? PHP 3 was the point when the language really took off.
Just hopping in to also give my 2ct: IMHO a strategy of how to handle breaking changes in the language and stdlib would be much more useful than any hypothetical ‘1.0 stability promise’.
A ‘stable language and stdlib’ is also a stagnating language and stdlib… and just look at OpenGL and C++ how strict backward compatibility ends up after a few decades…
There must be a way to get rid of dead-end approaches and outdated concepts, otherwise you end up with sediment layers like in GL or C++. The question is mostly how to manage the change - should there be conversion tools which help to update source code? Or should there be multiple frontends and stdlib namespaces for major versions? Should it be possible to link packages written for different major versions? Etc… etc… I guess the decision for a strategy would mostly rely on how much maintenance effort is required.
This is something I fully expect Andrew to be thinking about, probably already has a rough idea planned.
He has stated before that he is willing to do breaking changes after 1.0 if they are worth it.
I think there was also mention of separate std/language/compiler versioning after 1.0, when the language is stable.
The migration from Python2 to Python 3 usually took about half a minute per 100 LOC in my projects, as a rough estimate,
plus testing and plus finding bugs inside error handling logic mostly.
If such a fundamental breaking change happens once in a decade, I’m fine with it.
Optimally, breaking changes also change the syntax so that they cannot hide. A compiled language like Zig clearly has advantages compared to interpreted languages like Python in this regard.
Most of the problems here are not related to the language itself, but to the standard library. I’d like to have “version 1.0” meaning “the language won’t undergo any major changes.” This would open the door to alternative compilers and allow the language to be used in medicine and industry, where the planning horizon is decades long.
If the standard library changes and breaks backward compatibility, then so be it.