#453 — March 24, 2023
The Go Weekly Newsletter
Make Your Go Programs Use Less Memory.. Maybe — betteralign is a tool to detect structs that would use less memory if their fields were sorted and to then, optionally, sort such fields. It’s a fork of Go’s own fieldalignment tool that skips generated or test files, skips specially marked structs, doesn’t drop comments, and similar DX enhancements.
Dinko Korunic
Implementing a Generic Set Type — To celebrate the first anniversary of generics in Go (Go 1.18 was released in March 2022), John decided to build something useful with them: a generic Set type, complete with useful methods.
John Arundel
Go! Experts at Your Service — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital.
Ardan Labs Consulting sponsor
The Power of Single-Method Interfaces — Eli shows why single-method interfaces (sometimes called SMIs) can do whatever higher order functions can do and more, and why they provide a more general and powerful approach even if they’re more verbose in some cases.
Eli Bendersky
🕹 Ebitengine 2.5: The 2D Game Engine for Go — v2.5 of the long standing library includes initial, limited Xbox support, extra vector drawing functions, improved control over the blending of graphics and colors, and more. Project homepage.
Ebitengine Team
a[low:high:max] — An Uncommon Slice Trick — You might be used to seeing a slice like a[low:high] but what about one with a third index? This third index can be used for setting the capacity of a slice and James quickly shows it off here.
James Smith
IN BRIEF:
-
Go cryptography expert Filippo Valsorda has outlined the plans around cryptography work in Go 1.21. It's detailed but essential stuff.
-
Be aware that GitHub has changed their RSA SSH host key so you may see a warning when pushing, pulling or cloning.
-
Congratulations to the London Gophers group celebrating their tenth anniversary this week.
-
Preslav Rachev wonders why Go hasn't got an equivalent of Spring (a large scale app framework in the Java world).
Replay 2023: Call for Presenters Is Now Open! — It’s our 2nd year of Replay and we want you to be a part of it! Check out our blog post on why you should submit your exciting talk today.
Temporal Technologies sponsor
Synchronization Patterns in Go — A concise article that plays a little with mutexes, semaphores, channels, and problems that can occur like race conditions.
Noam Yadgar
How We Solved an OOM Issue in TiDB with GOMEMLIMIT — GOMEMLIMIT, introduced in Go 1.19, is a variable for setting a soft memory limit for the Go runtime.
Xiqian Shao
The Simplicity of Single-File Go Deployments
Stephan Schmidt
🛠 Code & Tools
Participle 2.0: A Simple Parser Package — Aims to provide a straightforward and idiomatic way to define parsers in Go using a familiar approach of using struct field tags to define a grammar, so if you’ve used encoding/json before, you’re well on your way.
Alec Thomas
v8go 0.9.0: Execute JavaScript from Go — Lets you create V8 contexts and run code eval-style. v0.9 updates the V8 versions supported (10.9 and 11.1).
Roger Chapman
Go OpenAI: Use OpenAI's APIs from Go — Provides access to ChatGPT, GPT-3, GPT-4, DALL-E, and Whisper. Formerly known as go-gpt3.
Sasha Baranov
O’Reilly’s Identity-Native Infrastructure Access for Kubernetes — Get your free copy to learn about identity-based infrastructure access and how it differs from secret-based approaches.
TELEPORT | goteleport.com sponsor
hot-reload: Hot Reload Development for Go in Docker Containers — Just a bit of configuration, and you’re off. (Also, we love that a hospital open-sourced this.)
Departement of Clinical Research, University Hospital Basel
Frenzy: Postgres Wire Protocol Aware Mirroring Proxy — It’s early days for this Go-based Postgres proxy, but it’s fun to see something at this stage that does actually work and may be useful if you need to build something similar of your own.. "It’s suuuuuper hacky but in 2 hours of work I was able to proxy some queries!"
Kelly Sommers
-
Chroma 2.7
↳ Pure Go general purpose syntax highlighter. -
Listmonk 2.4
↳ Newsletter and mailing list manager. -
Go Micro 4.10
↳ Microservices framework. -
Gitea 1.19
↳ Go-powered self-hosted Git forge. -
SSE 2.10
↳ Server Sent Events server and client library. -
go-github 50.2
↳ GitHub API v3 client library. -
Wish 1.1
↳ Build custom SSH server apps. -
Log 0.2
↳ Minimal, colorful logging library.
Jobs
Site Reliability Engineer — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers.
Sticker Mule
Find a Job Through Hired — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.
Hired
🧑💻 Got a job listing to share? Here's how .
🕰 ICYMI (Older stuff we may have missed...)
-
Jonathan Hall shows us ▶️ how to bootstrap a Go project for CI/CD with GitLab.
-
A benchmark from Markus Wüstenberg extolls the production virtues of SQLite performance in Go.
-
Derek Parker looks at how debugging Go programs with Delve and EBPF "is faster" (than ptrace).
-
A golden-oldie ▶️ 20-minute talk from Bryan Boreham on how to measure the performance of your Go code, garbage collection, and reducing memory allocations.
-
Kevin Kelche shares a diagram heavy explanation of how the runtime scheduler works.