#404 — March 18, 2022
🥳 Woo-hoo, Go 1.18 is finally here. And yes, we stole our subject line's joke from Brad Fitzpatrick :-)
The Go Weekly Newsletter
Go 1.18 Released
Given the extra excitement around Go 1.18 recently, it's hard to believe Go 1.17 was only released seven months ago! 1.18 is a big enough release that rather than link solely to the main release announcement, we want to cover a variety of things you might find useful:
- The official release post is a good place to start – the headline features of generics, fuzz testing, and workspaces are mentioned, but without going into details.
- The official Go 1.18 release notes cover the technicalities of the release at a high level in bulletpoint fashion.
- Carl Johnson covers three lesser explored 'minor' features in Go 1.18.
- The New Stack's Darryl K. Taft calls 1.18 Go's 'biggest release yet'.
- If you like such things, the release provoked a particularly large discussion on Hacker News including, predictably, a lot of to-and-fro over the pros and cons of generics.
- A handful of simple tutorials on using generics.
Secure Redis Hosting from RedisGreen — The latest Redis features, instrumented and scaled with the tools teams need as they grow.
RedisGreen sponsor
Write Once, Store Anywhere: Extensible File Systems for Go — Shows off a new, extensible file system pattern for use from Go – use hackpadfs to take fs "to a whole new level", says the author.
John Starich
Quick bits:
-
The author of Mastering Go went on the Go Time podcast to talk about ▶️ what it actually takes to 'master' a language like Go.
-
The popular Strange Loop dev conference is taking place in Missouri this September and they're keen to have some Go talks on the schedule if you want to speak.
-
We found Justin Ribeiro's neat 3D model of the Go gopher and used it in today's header graphic. Thanks Justin.
Jobs
Backend Engineer | Remote within CET (-3/+3 hours) | Full-Time — Europe's leading business finance solution. You will help us simplify everything from everyday banking and financing, to bookkeeping and spend management.
Qonto
Backend / API Engineer at Textile (Remote) — Written primarily in Go, built on top of protocols like Libp2p, IPFS, & Filecoin, and is deployed to Google Kubernetes Engine. You'll interact with layers throughout the stack and own responsibilities from R&D to implementation and production monitoring.
Textile
Find a Job Through Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers.
Hired
Hacking Sum Types with Go Generics — Sum types are found in Haskell and other languages and are super convenient to group different types together. Generics (kind of) gives us the ability to create them in Go.
Lawrence Jones
Building a gRPC Client in Go — This is about as simple as it gets because it relies on generating code from a Protobuf file (which is covered in an earlier creating a gRPC server in Go article).
Sahan Serasinghe
Creating a Go App with Alpine.js and Webview — It depends how you define a GUI app but if using some JavaScript and a web-view control (specifically webview) works for you, this tutorial covers one approach. This only covers the basics, with the example code being perhaps more useful to read.
Thomas Schühly
Implementing Java-esque Streams in Go with Generics — The author isn’t entirely satisfied with the outcome, but it was a worthwhile experiment to see what sort of opportunities generics could open up.
Filip Borkiewicz
🛠 Code & Tools
Freecache 1.2.1: A Cache Library for Go with Zero GC Overhead — Store millions of entries without expensive GC overhead. (When so many projects fizzle out within months, I always love it when a project we last featured 7 years ago gets an update!)
Evan Zhou
Mage 1.13.0: A Make-Like Build Tool That Uses Go Functions — Write regular Go functions and Mage then turns them into Make-style runnable targets. Fantastic use of the Go gopher in its logo too :-) GitHub repo.
Nate Finch
A ClickHouse Client for Go 1.18+ — We’re already beginning to see client libraries leaning on generics, such as this one for the Clickhouse open source column oriented database system.
Uptrace
Seamlessly Integrate Video into Your Go App
Mux sponsor
cli 2.4: A Fast Way to Build Go CLI Apps — The manual outlines all of the key features, but think shell auto-completion, subcommands, option parsing, help text, etc.
Jeremy Saenz and Contributors
LazyDocker: A Terminal-Based UI for Working with Docker — Not only is this a useful app for working with Docker, it’s a great example of a terminal-based app with a complete UI (powered by gocui) too.
Jesse Duffield
The Official Go Driver for ArangoDB — ArangoDB is a popular open source multi-model (graph, document, and search) database.
ArangoDB
A CGo-Free Port of SQLite for Go Users — Supports AMD64 and/or ARM64 on multiple platforms, but the latest release adds support for Linux on 64 bit RISC-V too.
cznic / modernc
GoCV 0.30.0: Computer Vision in Go using OpenCV 4+ — Gets a bump up to OpenCV 4.5.5. GitHub repo.
The Hybrid Group