Abstract
Gopls is Go’s implementation of the Language Server Protocol, which turns any text editor into an IDE. In this talk, Alan of the Go team at Google will present the results of his year-long effort (along with his colleague Robert Findley) to rearchitect Gopls to enable it to work efficiently in the largest of Go projects. By exploiting the dependency structure of Go programs at various levels of scale (identifiers, imports, types, modules) and using techniques from compilers and build systems, the new design enables Gopls to start more quickly and to serve much larger codebases, while consuming dramatically less memory. It also fixes a number of longstanding bugs and unlocks some new features, such as modular static analysis.