#​524 — September 24, 2024

Unsub  |  Web Version

Together with  Three Dots Labs

Go Weekly

What's in an (Alias) Name? — Generic alias types are coming to Go 1.24 (expected in February 2025) in line with this proposal, building on both type aliases and generics. A major use case for type aliases is the ability to refactor without breaking compatibility. Robert explains the basics of type aliases and why bringing them to generics required extra work.

Robert Griesemer

Stuck on What to Build? Guided Learning with Real Projects — Todo apps are for AI. Build a real-life project and master advanced backend patterns. Code hands-on in your IDE, no videos. Over 800 devs have joined us to create asynchronous event-driven software that solves real problems. Next cohort starts soon.

Three Dots Labs sponsor

Sets in Go: Using Maps and Recommended Packages — Go hasn’t got a native data type for sets, but maps can help you implement your own, as well as packages like golang-set. Willem shows us how.

Willem Schots

Go's Singleflight Melts in Your Code, Not in Your DB — The last post in a series on concurrency describes singleflight, a non-core package (that’s maintained by the Go team) that ensures a function is only run once and its result reused by later callers. There are loads of use cases, especially around database access.

Phuong Le

IN BRIEF:

Developing a Go Bot That Embeds Ichiban PrologIchiban Prolog is a Go-powered implementation of the Prolog logic programming language and opens up the power of the language directly within Go apps. Here’s one specific use case.

Roger Sen

Register Allocation in the Go Compiler — Vladimir maintains GCC’s register allocator system and struggled to find docs on how Go does it, so he went diving into Go’s source code. This is deep stuff, but long story short, he likes Go’s approach: “the current Go RA is a well-designed and creative RA.”

Vladimir Makarov (Red Hat)

🛠 Code & Tools

Revive 1.4: A Faster, Configurable, Flexible Linter for Go — A drop-in replacement of golint that aims to provide a little more structure, configurability, and performance. It’s used by numerous large Go projects and libraries. GitHub repo.

Minko Gechev

Counterfeiter: Generate Self-Contained, Type-Safe Test Doubles — More quickly generate fake implementations of an object’s collaborators.

Max Brunsfeld

Streamline Your Product Delivery with monday dev — From ideation to launch, monday dev makes product delivery faster and simpler, all in one place.

monday dev sponsor

Rueidis: A Fast Redis Client with Caching and More — A Redis client focused on performance, supporting auto-pipelining of non blocking commands, client-side caching implemented the official way, and support for Redis’s many official extensions. Being hosted under Redis’ official GitHub org is also quite the endorsement.

Rueian

caddy-exec: Caddy Module for Running One-Off CommandsCaddy is the fantastic Go-powered HTTP(S) server (we love it here) and this extension makes it possible to trigger commands either during startup/shutdown or via a route.

Abiola Ibrahim

go2type: A Go to TypeScript API Client Generator — Simple CLI tool that generates types and queries for frontends for Go backends.

dx314

📰 Classifieds

💰 Dragonfly (25k GitHub stars) is a modern Redis replacement. Organizations that switch to Dragonfly can reduce infrastructure costs by 80%.


🛠️ NewDevTools is a simple, daily update of new developer tools and services.

  • 👀 GoCV 0.38.0 – Bindings for the OpenCV computer vision library.

  • MongoDB Go Driver 1.17 – The official Go driver for MongoDB adds support for client authentication using OpenID Connect.

  • Buf 1.42 – CLI tool for working with Protocol Buffers. A big update introducing the ability to author custom lint and breaking change rules added with plugins.

  • automaxprocs 1.6 – Automatically set GOMAXPROCS to match Linux container CPU quota.

  • River 0.12 – Fast and reliable Postgres-powered background jobs for Go.

  • Goyave 5.3 – Enterprise REST API framework.