Sourced from golang.org/x/tools's releases.
gopls/v0.9.2
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
, orgo.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 ago.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!
A full list of all issues fixed can be found in the gopls/v0.9.2 milestone. To report a new problem, please file a new issue at https://go.dev/issues/new.
Thank you to our contributors!
Thank you for your contribution,
@alandonovan
,@antoineco
,@dle8
,@euroelessar
,@findleyr
,@hyangah
,@jamalc
,@mssdvd
,@pjweinbgo
,@rentziass
, and@suzmue
!What's next
The next planned gopls release is v0.10.0. We’re excited about features and improvements on the horizon, for example:
96844c3
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 GCed90c6d
internal/diff: unexport various identifiers827f5aa
gopls/internal/lsp/source: test references bug on struct{p.T}a12e1a6
go/ssa/interp: implement min/max builtins