Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider updating declared Go version in go.mod #359

Closed
JackMordaunt opened this issue Dec 14, 2022 · 3 comments
Closed

Consider updating declared Go version in go.mod #359

JackMordaunt opened this issue Dec 14, 2022 · 3 comments
Milestone

Comments

@JackMordaunt
Copy link

JackMordaunt commented Dec 14, 2022

The go.mod file declares go 1.13 right now. Module graph pruning was added in Go 1.17, meaning that other modules can import your module and only pick up the transitive dependencies that are actually reachable based on how they use your code. Right now, importing websocket means importing, for example, a protobuf package because the declared go version predates go 1.17.

The tidiest dependency graph will come from using go 1.18, as:

The [go.sum file](https://tip.golang.org/ref/mod#go-sum-files) recorded by [go mod tidy](https://tip.golang.org/ref/mod#go-mod-tidy) for a module by default includes checksums needed by the Go version one below the version specified in its [go directive](https://tip.golang.org/ref/mod#go-mod-file-go). So a go 1.17 module includes checksums needed for the full module graph loaded by Go 1.16, but a go 1.18 module will include only the checksums needed for the pruned module graph loaded by Go 1.17. The -compat flag can be used to override the default version (for example, to prune the go.sum file more aggressively in a go 1.17 module).

Go 1.18 is also the oldest Go release still supported by the Go team, so it's a reasonable choice of language version to declare.

@nhooyr
Copy link
Contributor

nhooyr commented Mar 5, 2023

Interesting, will do.

@joshklop
Copy link

While I agree that updating the module version would be beneficial overall, I don't think it will allow other modules to avoid importing packages that are imported by nhooyr.io/websocket.

The way I understand it, module graph pruning optimizes how the go tool builds its internal representation of the dependency tree. This could potentially speed up builds and other operations like go mod tidy for downstream projects, but doesn't affect binary sizes, for example.

@nhooyr nhooyr added this to the v1.8.8 milestone Sep 28, 2023
nhooyr pushed a commit that referenced this issue Oct 10, 2023
nhooyr pushed a commit that referenced this issue Oct 10, 2023
@nhooyr
Copy link
Contributor

nhooyr commented Oct 13, 2023

Done in dev.

@nhooyr nhooyr closed this as completed Oct 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants