Go 1.21 offers two essential features not matched by any other language ecosystem:
1. A GODEBUG setting for each change, together with per-change opt-out and per-change metric for detecting use of the prior implementation.
2. A per-module toolchain version, together with automatic fetching of both older and newer go toolchains (deployed safely as modules)
As an amazing bonus, if you specify a given version of go (e.g., 1.21.2), then when running under a newer version of go, go will automatically apply the relevant opt-out configuration so you won't get the new behavior until you ask for it.
Finally, as ever you can declare things in code, in go.mod, and in environment.
That basically covers all the use-cases for compatibility, from developers through deployers.
Simple, and beautiful.