Go 1.21 expands Go's commitment to backward compatibility, so that every new Go toolchain is the best possible implementation of older toolchain semantics as well.
Boring is good. Boring is stable. Boring means being able to focus on your work, not on what’s different about Go. This post is about the important work we shipped in Go 1.21 to keep Go boring.
There will not be a Go 2 that breaks Go 1 programs. Instead, we are going to double down on compatibility, which is far more valuable than any possible break with the past. In fact, we believe that prioritizing compatibility was the most important design decision we made for Go 1.
The backwards compatibility promises of Go definitely makes upgrading a breeze. Java is pretty much in the same boat (except it maintains bytecode compatibility instead of source). When working with languages that don’t offer these promises it’s always a nightmare to upgrade to newer versions.
Never is a very long time. I Hope they can maintain that promise because having to write lots of code everytime there is a major upgrade is so costly. I agree with @mrkite, I wish Angular had the same idea and even Vue.