"Redesigning Gopls for 10x Scale"
summary
Claim: gopls is rearchitected to avoid one giant pointer graph by using object paths, per-package-level indexes and a persistent content-addressable file cache with GC and atomic-write tricks. Implementation uses export data, method-set fingerprints, and fine-grained invalidation to index references and interfaces. Results: second-open startup drops (kubernetes ~20s), steady memory falls from ~3GB to ~800MB and extreme cases report 17GB → 1.5GB, and gopls v0.12 ships these changes.
AI-written summary · about
chapters (35)
- 0:00Introduction
- 0:39What is Go
- 1:41Agenda
- 1:57Language Servers
- 4:27Performance Improvements
- 6:02Scaling
- 6:23Startup Latency
- 6:55Steady State Memory
- 7:10Post keystroke latency
- 7:53Autocompletion latency
- 8:27Large repositories
- 9:54Why Gopl
- 11:14Working Backward
- 12:23References Algorithm
- 13:14transitive importers
- 13:33symbolic programming
- 13:54Improving Gopls
- 15:20Export Data
- 16:20Object Paths
- 16:52Success
- 17:40Type Check
- 19:14completeness
- 19:47references index
- 20:04reference index
- 21:36method set index
- 25:29implementation
- 27:00rename
- 27:30filelocking
- 29:46why didnt we reuse an existing database
- 30:40incremental build systems
- 34:14Finegrained invalidation
- 36:20Results
- 37:10Key Metrics
- 39:06Sublinear Scaling
- 40:04Conclusion








