---
title: "gopls can now suggest ways to modernize your Go code"
publication: "Go Weekly"
issue: 543
published_at: "2025-02-26"
canonical_url: "https://golangweekly.com/issues/543"
---

Plus a Go-powered OpenGL Minecraft implementation. |        

#​543 — February 26, 2025 

[Unsub](https://golangweekly.com/leave/*|UID|*)|[Web Version](https://golangweekly.com/issues/543)  

Together with [![Stytch logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_686,h_212/e_make_transparent/co_white,e_outline:17/sxadrfitso54gphepg4p.png)](https://stytch.com?utm_source=go-newsletter&utm_medium=paid_sponsorship&utm_campaign=go-newsletter-02-26-2025&utm_content=primary-listing)   

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cp1skcyodpbilcmdbmho.jpg)](https://go.dev/blog/synctest)  

[Testing Concurrent Code with `testing/synctest`](https://go.dev/blog/synctest) — Concurrency is one of Go’s natural strengths, but testing heavily concurrent programs can be tricky. Go 1.24 introduces a new (though experimental and hidden behind an environment variable) package for testing code involving time or concurrency. The Go team wants you to have a play and send in your feedback. 

Damien Neil   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/0775ab93.jpg)](https://stytch.com?utm_source=go-newsletter&utm_medium=paid_sponsorship&utm_campaign=go-newsletter-02-26-2025&utm_content=primary-listing) 

[Prepare Your App for AI Agents](https://stytch.com?utm_source=go-newsletter&utm_medium=paid_sponsorship&utm_campaign=go-newsletter-02-26-2025&utm_content=primary-listing) — [Stytch](https://stytch.com?utm_source=node-weekly&utm_medium=paid_sponsorship&utm_campaign=node-weekly-01-21-2025&utm_content=primary-listing) extends auth to handle permissions for AI agents—so your app can securely delegate [access to agents](https://stytch.com/blog/stytch-connected-apps/?utm_source=go-newsletter&utm_medium=paid_sponsorship&utm_campaign=go-newsletter-02-26-2025&utm_content=primary-listing) or protect against [agent-powered threats](https://stytch.com/blog/stytch-fraud-and-risk-prevention-major-enhancements/?utm_source=go-newsletter&utm_medium=paid_sponsorship&utm_campaign=go-newsletter-02-26-2025&utm_content=primary-listing). Check out our [Go quickstart](https://stytch.com/docs/quickstarts/go?utm_source=go-newsletter&utm_medium=paid_sponsorship&utm_campaign=go-newsletter-02-26-2025&utm_content=primary-listing). 

Stytch sponsor   

[Extensible Wasm Applications with Go](https://go.dev/blog/wasmexport) — _“… the ability to build a WASI reactor and export Go functions to Wasm in Go 1.24 represent a significant step forward for Go’s WebAssembly capabilities. These features empower developers to create more versatile and powerful Go-based Wasm applications …”_ 

Cherry Mui   

**IN BRIEF:** 

- Go's LSP server (`gopls`) has [a new version out](https://github.com/golang/tools/releases/tag/gopls%2Fv0.18.0) that adds a `modernize` analyzer that can suggest ways your Go code could be updated to take advantage of new language features and standard library APIs.
- Ben Boyter's [Searchcode](https://searchcode.com/) code search engine is a fantastic project and it's now [powered entirely by Go and an epic 6 terabyte SQLite file.](https://boyter.org/posts/searchcode-bigger-sqlite-than-you/)
- Former core team member Brad Fitzpatrick ran into a memory leak with `unique.Handle` and has [written up his findings.](https://github.com/golang/go/issues/71772)
- 📺 Go had its own track at the recent [FOSDEM](https://fosdem.org/2025/) conference and you can [enjoy videos of most of the talks here.](https://cuddly.tube/w/p/2H3BJMkJZEJRUSUGkAaYGw?playlistPosition=1) Topics covered included eBPF, garbage collection, gRPC, and how Go 1.24's swiss maps implementation works. _(I find the player on this site very flaky, but the 'Download' option works fine.)_
- 🇪🇺 [GopherCon Europe 2025](https://gophercon.eu/) is.. a go! It takes place this June in Berlin.   

[How to Manage Tool Dependencies in Go 1.24+](https://www.alexedwards.net/blog/how-to-manage-tool-dependencies-in-go-1.24-plus) — We’ve touched on the new `go tool` subcommand a few times before, but this is a bit more usage-focused and includes a nice tip about separating your tools into their own module file. 

Alex Edwards   

[gno.land Offers Grants & Bounties for Building Go-Powered Decentralized Apps](https://github.com/gnolang/bounties) — App builders, Go enthusiasts, tinkerers: come and build on gno.land, a smart contract platform for a freer, fairer world. 

gno.land sponsor   

📄 [Building RAG Systems in Go with Ent, Atlas, and pgvector](https://entgo.io/blog/2025/02/12/rag-with-ent-atlas-pgvector/) Rotem Tamir (Ent) 

📄 [Building a BitTorrent Client from the Ground Up in Go](https://blog.jse.li/posts/torrent/) – We linked this in 2020 but it’s been doing the rounds on social media again and is fun to revisit. Jesse Li 

📺 [From Strong to Weak: Weak Pointers in Go 1.24](https://www.youtube.com/watch?v=4E4IPB5cstw) Flo Woelki 

📄 [Scaling gRPC with Kubernetes and Go](https://nyadgar.com/posts/scaling-grpc-with-kubernetes-using-go/) Noam Yadgar 

📄 [Practical OpenAPI in Go](https://packagemain.tech/p/practical-openapi-in-golang) Alex Pliutau  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/t2msc7xtmxwvij8ylznl.jpg)](https://github.com/GianlucaP106/minecraft)  

[Minecraft From Scratch: A Simple Go Minecraft Clone](https://github.com/GianlucaP106/minecraft) — A fun project to replicate Minecraft’s infinite, procedurally-generated navigable landscapes using Go and OpenGL 4.1 (as provided via the [go-gl/gl bindings](https://github.com/go-gl/gl) – yes, cgo is required here). 

Gianluca Piccirillo   

[nativewebp: Native WebP Image Support for Go](https://github.com/HugoSmits86/nativewebp) — WebP is a modern raster graphics format commonly used on the Web and this library lets you work with it (though only its VP8L lossless form, for now) from Go _without_ dependencies. 

Hugo Smits   

[WAX: JSX-Based Server-Side Rendering for Go](https://github.com/michal-laskowski/wax) — Generate server-side HTML with TSX/JSX templates in Go. 

Kita   

[godoc.nvim: Fuzzy Search Go's Docs from Neovim](https://github.com/fredrikaverpil/godoc.nvim) — Adds a quick way to search and browse Go documentation from within the [Neovim](https://neovim.io/) editor. 

Fredrik Averpil   

[GoChromecast: Discover Devices and Stream Media to Chromecast Devices](https://github.com/vjerci/gochromecast) — A Go-powered tool that implements the protocol used by Chromecast devices. 

Vjeran   

- [FastHTTP 1.59](https://github.com/valyala/fasthttp/releases/tag/v1.59.0) – Performance-oriented alternative to `net/http` for [specific high-volume scenarios.](https://github.com/valyala/fasthttp#fasthttp-might-not-be-for-you)
- [Sloc Cloc and Code (scc) 3.5](https://github.com/boyter/scc) – Fast and accurate code counter with complexity calculations and COCOMO calculations.
- [wazero 1.9](https://github.com/tetratelabs/wazero) – Zero dependency WebAssembly runtime for Go. Now boasting Go 1.24 compatibility.
- [Revive 1.7](https://github.com/mgechev/revive) – Fast, configurable, extensible, flexible linter for Go.
- [Go-MySQL-Driver 1.9](https://github.com/go-sql-driver/mysql/releases/tag/v1.9.0) – MySQL driver for`database/sql`.
- [graphql-go 1.6](https://github.com/graph-gophers/graphql-go) – GraphQL server with a focus on ease of use
- [River 0.18](https://github.com/riverqueue/river/releases/tag/v0.18.0) – Fast and reliable Postgres-powered background jobs for Go.
- 🔎 [errcheck 1.9](https://github.com/kisielk/errcheck) – Checks for unchecked errors in Go code.
- 🤖 [Gobot 2.5](https://github.com/hybridgroup/gobot) – The robotics / drones / IoT framework.
- 🤖 [Go OpenAI 1.38](https://github.com/sashabaranov/go-openai/releases/tag/v1.38.0) – An OpenAI API wrapper library.
- [Go gRPC Middleware 2.3](https://github.com/grpc-ecosystem/go-grpc-middleware)      

📰 Classifieds   

🔥 **Free. As in zero dollars. Why haven’t you signed up?** Get instant access to [CarsXE](https://api.carsxe.com/?utm_source=Cooper+Press&utm_medium=email&utm_campaign=Cooper-press-feb-26)’s API with a free trial. No risk, just great data. [Try for Free now!](https://api.carsxe.com/?utm_source=Cooper+Press&utm_medium=email&utm_campaign=Cooper-press-feb-26) 

--- 

Elevate Infrastructure Resiliency and Engineering Velocity with [Infrastructure Identity](https://goteleport.com/infrastructure-identity/?utm_campaign=brand&utm_content=webinar&utm_medium=partner&utm_source=cooperpress%20).     

📢 Elsewhere in dev  

A quick roundup of some of other interesting stories in the broader landscape, in case you've missed them: 

- [Anthropic released Claude 3.7](https://www.anthropic.com/news/claude-3-7-sonnet), a new version of its popular large language model, and reports and benchmarks so far show it's _really_ good for coding.
- An interesting look at [how Git's core contributors configure their own `git`setups.](https://blog.gitbutler.com/how-git-core-devs-configure-git/)
- Browser developers collaborate via a project called _Interop_ and focus on features to bring to the Web platform each year. [Interop 2025's priorities](https://web.dev/blog/interop-2025) include the Storage Access API, CSS improvements, WebAssembly enhancements, and more.
- [The XOR operator, and logic gate, explained.](https://www.chiark.greenend.org.uk/~sgtatham/quasiblog/xor/) (You can use bitwise XOR yourself in Go with the [`^` operator.](https://go.dev/ref/spec#Arithmetic_operators))         

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*)
[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
