This release contains many bug fixes, particularly related to problems that would require restarting gopls.
Note about network usage: among these fixes was a change to allow network usage when reloading the workspace. Reloading occurs when a go.mod, go.sum, or go.work file changes on disk. In the past, gopls would only allow network during the first workspace load. This resulted in confusing behavior when, for example, a new dependency is added to a go.mod file and gopls could not load it, but loading succeeded on restart. See #54069 for more details.
Configuration changes
directoryFilters at arbitrary depth
The "directoryFilters" setting now supports excluding directories at arbitrary depth, using the ** operator. (note that for v0.9.2, the default value for this setting is still ["-node_modules]". In the next release, this will change to ["-**/node_modules"]).
Bug fixes and Performance improvements...
This release contains the following notable bug fixes / performance improvements:
Additional change optimization - Following up on the work to optimize change processing from the v0.9.0 release, this release contains additional optimizations that result in around 50% faster change processing (measured via edits in the Kubernetes repo).
Fix for a long-standing memory leak - #53780 fixed a long-standing bug that caused gopls to hold on to its initial state, gradually leaking memory as state changed during the editing session.
Fewer restarts - This release contains many fixes for cache-invalidation bugs that would cause gopls to get confused and require restarting. Additionally, see the note at top about enabling the network when reloading the workspace. We believe we are close to our goal that restarting gopls should never be required to fix workspace errors. If you encounter such a bug, please file an issue!
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps golang.org/x/tools from 0.9.1 to 0.9.3.
Release notes
Sourced from golang.org/x/tools's releases.
Commits
0dda7d6
go/pointer: remove replace directive98f1b4d
gopls/internal/lsp/cache: check number of orphaned files after filteringa260315
go/pointer: create submodule96844c3
cmd/{guru,callgraph}: stop using go/pointercd694d8
go/packages: include "unsafe".GoFiles=["unsafe.go"]33c741d
gopls/internal/lsp: add min/max builtin933c7cc
internal/lsp/source: use exact match in import highlighting5974258
gopls/internal/lsp: clear vuln diagnostics on config changesf3faea1
go/packages: pass -pgo=off on go1.21 and later5f74ec7
internal/lsp/debug: add links to profiles and GCDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)