chore: make go.mod the single source of truth for the Go floor - #575
Merged
Conversation
The minimum Go version was stated four ways and three of them were wrong. go.mod and all nine submodules say 1.27.0, and CI pins 1.27.0, while: README.md (x2) Go 1.26.4+ CONTRIBUTING.md Go 1.26.3+ test/autobahn/README.md Go 1.22+ The README number is the one that matters: it is what a user reads before trying to build, and 1.26.4 cannot build a module whose go directive is 1.27.0. Rather than correct three copies of a number that has now drifted twice, each site states the current floor AND points at the go directive as the source of truth, so the next bump has one place to change. CONTRIBUTING's parenthetical justified 1.26.3 by the stdlib CVEs govulncheck surfaced on 1.26.2. That rationale expired with the floor it explained. Also drops the stale "in v1.4.0" stamps the issue lists, plus four more it does not: driver/postgres/rows.go, dsn.go and types_numeric.go. Every one marks a limitation that is still true, dated to a release three minors back, so a reader cannot tell whether the limitation or the date is the stale part. The limitations stay; the dates go. Left alone: SECURITY.md's "a Go 1.26.3 toolchain bump", which is a historical statement about what v1.4.2 shipped, and driver/redis/state.go's "before v1.4.0", which dates a past optimisation rather than a current limitation. Both are correct as history.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #417.
The minimum Go version was stated four ways and three were wrong.
go.modand all nine submodules say 1.27.0, and CI pins 1.27.0, against:README.md(x2)CONTRIBUTING.mdtest/autobahn/README.mdThe README one is the one that bites. It is what a user reads before their first build, and 1.26.4 cannot build a module whose
godirective is 1.27.0.Rather than correct three copies of a number that has already drifted twice, each site now states the current floor and points at the
godirective as the source of truth, so the next bump has one place to change and the docs cannot silently fall behind it again.CONTRIBUTING's parenthetical justified 1.26.3 by the stdlib CVEs govulncheck surfaced on 1.26.2. That rationale expired along with the floor it explained.Stale version stamps
The issue lists four
in v1.4.0stamps. There are eight; the other four are indriver/postgres/rows.go,dsn.goandtypes_numeric.go. Each marks a limitation that is still true, dated to a release three minors back, so a reader cannot tell whether the limitation or the date is the stale part — which is the actual cost of a version stamp on a standing limitation. The limitations stay, the dates go.Two are deliberately left alone because they are correct as history rather than stale:
SECURITY.md: "a Go 1.26.3 toolchain bump" — describes what v1.4.2 shipped.driver/redis/state.go: "before v1.4.0" — dates a past optimisation, not a current limitation.Docs and comments only; no code paths touched.