---
title: "What's missing from Go's generics?"
publication: "Go Weekly"
issue: 535
published_at: "2024-12-10"
canonical_url: "https://golangweekly.com/issues/535"
---

Plus Go 1.23.4 sounds nice, comparing templating approaches, and soft serve yourself a git server. |        

#​535 — December 10, 2024 

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

Together with [![Frontend Masters logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_300,h_70/e_make_transparent/co_white,e_outline:5/nk0tfdvalivacz8rw7rt.png)](https://frontendmasters.com/courses/go-basics/?utm_source=email&utm_medium=golangweekly&utm_content=gobasics)   

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wgkm7l1jlnyl74h3mhgg.jpg)](https://danp.net/posts/synctest-experiment/)  

🕒 [Coming in Go 1.24: An Experiment for Time and Concurrency Testing](https://danp.net/posts/synctest-experiment/) — A look at another feature coming to Go 1.24 early next year. This time it’s the experimental `testing/synctest` package which opens up some added opportunities for testing code involving time or concurrency: _“It seems that testing/synctest will significantly improve testing code that involves time or concurrency. At work, I’ve already tried it on some flaky tests like the ones above and it’s helped.”_ 

Dan Peterson   

[What's Missing from Go's Generics?](https://www.dolthub.com/blog/2024-12-05-whats-missing-from-golang-generics/) — Follow-up to an article we recently linked that posited that [Go’s generics are ‘incomplete’](https://www.dolthub.com/blog/2024-11-22-are-golang-generics-simple-or-incomplete-1/) which spurred some lively discussion. Here, Nick responds to that discussion with specific features and how Go may or may not benefit from their inclusion. 

Nick Tobey (DoltHub)   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/960b6d83.png)](https://frontendmasters.com/courses/go-basics/?utm_source=email&utm_medium=golangweekly&utm_content=gobasics) 

[Master the Basics of Go](https://frontendmasters.com/courses/go-basics/?utm_source=email&utm_medium=golangweekly&utm_content=gobasics) — Join Maximiliano Firtman for this detailed video course covering the fundamentals of all things Go. You'll gain a thorough understanding of structures, goroutines, channels, async API calls, and much much more. 

Frontend Masters sponsor   

**IN BRIEF:** 

- Mostly noteworthy for its nice sounding version number, [Go 1.23.4 has been released.](https://go.dev/doc/devel/release#go1.23.4)
- 🤖 [An interesting result](https://radar.cloudflare.com/year-in-review/2024#api-client-language-popularity) in Cloudflare's 2024 year in review: Go has overtaken Node.js as the most common language they see being used to power 'API clients'/automated requests.
- [Microsoft has released new versions](https://devblogs.microsoft.com/go/go-1-23-4-1-and-1-22-10-1-microsoft-builds-now-available/) of its custom Go builds covering Go 1.23.4 and 1.22.10. (You'd use these for FIPS compliance in the MS ecosystem.)
- 🤖 If you're into working with LLMs and AI from Go, [/r/LLMGophers](https://www.reddit.com/r/LLMgophers/) is a new sub-Reddit you might want to help populate.
- Simon Willison tries to figure out what the [absolute simplest possible Hugo-powered site](https://til.simonwillison.net/hugo/basic) would be.   

[Templ vs Gomponents vs `html/template`](https://nuage.quimerch.com/-/ewen/articles/templ-vs-gomponents) — A comparison of three view related libraries for Go, including old favorite `html/template` (which, perhaps unfairly, gets a one star rating). 

Ewen Quimerc’h   

📄 [Building BLE Applications with BleuIO and Go](https://www.bleuio.com/blog/building-ble-applications-with-bleuio-and-go/) – BLE meaning [Bluetooth Low Energy](https://en.wikipedia.org/wiki/Bluetooth_Low_Energy), in this case. They have a device they’re trying to sell, but it’s interesting to get a basic look at the idea. BleuIO 

📄 [Data Structures as Jigs for Programmers (Go Edition)](https://lemire.me/blog/2024/12/08/data-structures-as-jigs-for-programmers-go-edition/) Daniel Lemire 

📄 [Mitigating SSRF Vulnerabilities in Go](https://snyk.io/blog/mitigating-ssrf-vulnerabilities-in-go/) Liran Tal (Snyk) 

📄 [Disable Slog Messages in Go Tests](https://boyter.org/posts/golang-slog-disable-tests/) Ben E. C. Boyter  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/n0uqnossozpmqrclhjzl.jpg)](https://github.com/charmbracelet/soft-serve)  

[Soft Serve 0.8: A Self-Hostable Go-Powered Git Server](https://github.com/charmbracelet/soft-serve) — Another handy project from the folks at _Charm._ Soft Serve is a self-hostable Git server that offers up a nice terminal UI (TUI) over SSH, has various access control features for collaborative use cases, and even supports Git LFS. 

Charm   

⚙️ [Orchestrion: Compile-Time Auto-Instrumentation for Go](https://www.datadoghq.com/blog/go-instrumentation-orchestrion/) — Instrumenting code is tedious and inconsistent when done manually, but automating it is difficult. Enter _Orchestrion_, which injects instrumentation at compile-time and supports many third-party libraries so you can instrument your code, create tracers, etc. without changing the dev process. 

Datadog Team   

[Zero Ops Apache Kafka Replication and Data Mirroring](https://www.warpstream.com/orbit-apache-kafka-migration-and-replication?utm_source=go_weekly&utm_medium=email&utm_campaign=dec_10_24_sponsored_link_go_weekly) — Moving to WarpStream to reduce your Kafka costs by 80+% and simplify ops is easy with 1:1 replication provided by Orbit. 

WarpStream sponsor   

[go-wasm-http-server 2.0: Embed Go HTTP Handlers in a Service Worker](https://github.com/nlepage/go-wasm-http-server) — Embed your Go HTTP handlers in a Service Worker using WebAssembly and emulate an HTTP server browser-side. Some of [the examples](https://github.com/nlepage/go-wasm-http-server?tab=readme-ov-file#examples) might give you some inspiration. 

Nicolas Lepage   

[Goverter: A Type-Safe Go Converter Generator](https://goverter.jmattheis.de/) — Generate type-safe converters by writing signatures of the type conversions and then Goverter will write the code you need to make it happen. [GitHub repo.](https://github.com/jmattheis/goverter) 

Jannis Mattheis   

[Echo: Extensible, Minimalist Go Web Framework](https://echo.labstack.com/) — Though it’s not _too_ minimal, offering HTTP routing, automatic TLS, data binding, templating, middleware, and different ways to render data out of the box. [v4.13.0](https://github.com/labstack/echo/releases/tag/v4.13.0) removes the JWT middleware from Echo core due to security issues. [GitHub repo.](https://github.com/labstack/echo) 

LabStack LLC   

[GTML: Make Writing HTML in Go a Breeze](https://github.com/phillip-england/gtml) — This package touts itself with _“Think of it like JSX for Go,”_ allowing you to take an HTML-like syntax and generate a StringBuilder that renders it in Go code. 

Phillip England      

📰 Classifieds   

How Authorization fits into the Architecture of Secure AI RAG stacks? [Watch AuthZed CEO Jacob Moshenko addressing this topic, and more with The Cube](https://authzed.com/blog/interview-vcs-and-founders-in-ai-presented-by-thecube-nyse-wired?utm_source=sponsored_newsletter&utm_medium=display&utm_campaign=golang_newsletter%20). 

--- 

📬 [Hookdeck](https://hookdeck.com/?ref=goweekly-535): A serverless queue to reliably send, receive, transform, filter, and route events across your event-driven apps. 

--- 

👋 Tired of failures and outages? [Let Temporal keep your code running flawlessly](https://t.mp/40pakHN). Start on [Temporal Cloud](https://t.mp/40pakHN) with $1,000 in free credits.      

[gARM: An ARM64 Compiler for Go](https://github.com/go-dockly/garm) — The author thinks we can do better than [Go’s assembly approach](https://go.dev/doc/asm) for high performance ARM64 use cases, so has set out to make his own approach. It's early days, however. 

Sven Woldt   

- [golang-set 2.7](https://github.com/deckarep/golang-set) – Robust generic set type. Now supports proper JSON marshalling/unmarshalling without workarounds.
- [FastHTTP 1.58](https://github.com/valyala/fasthttp) – Performance-oriented alternative to `net/http` for [specific scenarios.](https://github.com/valyala/fasthttp?tab=readme-ov-file#faq)
- 🤖 [go-pot 1.0](https://github.com/ryanolee/go-pot) – A Go 'HTTP tarpit' designed to 'maximize bot misery.'
- 🔒 [Fibratus 2.3](https://github.com/rabbitstack/fibratus) – 'Adversary tradecraft detection' tool for MS Windows.
- [Mockery 2.50](https://vektra.github.io/mockery/latest/) – Generate mocks for interfaces.
- [webdav 5.5](https://github.com/hacdias/webdav) – Standalone WebDAV server.         

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
