#359 — April 23, 2021 |
⭐️ This week we're lucky to have been able to interview Jon Bodner, the author of Learning Go which has just been published by O'Reilly. Check it out at the end of the issue and find out what Go features you should be avoiding :-) |
Go Weekly |
Go 1.17 (..Hopefully) to Provide Better Performance via Register-Based Calling Convention — The details (which are quite technical) are all in this GitHub issue, but the takeaway is in the headline. More performance is good and a 6.5% bump is suggested here. This is on AMD64 for now, but ARM64 is the next architecture they’re planning to work on. Go Team |
Maybe Go Executable Files Aren't Full of 'Non-Useful Bits' — Last week we featured an update to 2019’s Why are my Go executable files so large? where the author argued that modern Go binaries continue to be full of ‘non-useful bits.’ This article has now become a retraction as Russ Cox hit Hacker News to clear up what was going on, noting that the piece was ‘full of misinformation.’ Russ Cox |
The Sooner a Build Turns Red, the Sooner You Can Unblock Your Pipeline — The ability to cancel builds as soon as possible provides developers with a quicker feedback loop, saving time and reducing the cost of running agents. Buildkite sponsor |
Excelize 2.4.0: A Library for Reading and Writing Excel Files — Read and write XLSX files, set and read cell values, add charts. This latest release adds a lot with support for 152 formula functions, a new API to get rich text from cells, and lots of bug fixes. 360 Enterprise Security Group, Endpoint Security, inc. |
Go 1.17 Will Allow Converting a Slice to an Array Pointer — Well, sometimes. 1.17 adds this ability without using Chris Siebenmann |
📘 Tutorials and Stories |
Writing Good Unit Tests; Don't Mock Database Connections — While most of this post is 101 stuff, the take on mocking external dependencies might generate some opinions. Lane Wagner |
Seven Years of Open-Source Database Development: Lessons Learned — The developer of rqlite, a Go-powered, distributed SQLite-backed database system, has some high-level reflections on what it’s like to work on such a project. Philip O'Toole |
How to Scale Prometheus (Hint: It’s Not Prometheus) Lightstep sponsor |
Go Generics Beyond the Playground — Sindre attempts to rewrite a test matcher library using generics, diving into how they solved the problem pre-generics and what is possible now. Sindre Myren |
▶ Talking TCP and UDP with Adam Woodbeck — Along with the author of Network Programming with Go, the Go Time podcast heads into the thorny weeds of networking with a look at two protocols that the entire Internet relies upon. Go Time Podcast podcast |
Concurrent API Patterns in Go — Five simple rules (using three steps) to follow for building concurrent, leak-free API code. Mark Salpeter |
|
🛠 Code & Tools |
Vugu: Vue-Like Frontends in Pure Go, HTML, and CSS — We called this ‘bleeding edge’ two years ago and it’s still a pretty novel idea. Vugu targets WebAssembly, so it will work in the latest major browsers but is also still a bit gooey in the middle. More discussion here on Hacker News. Vugu |
Tunny: A Goroutine Pool Library — A library for spawning and managing a pool of goroutines such as for when you need to limit the concurrent processing of jobs. Ashley Jeffs |
Book a Demo. Ship Fast. Rest Easy. LaunchDarkly — Testing in production is scary until it's not. Get control of your code to reduce risk & reclaim your nights and weekends. LaunchDarkly sponsor |
xsek: An (Almost) Compliant XPath 1.0 Library — It’s really only missing one bit (but it adds others) and it’s extensible so you might be able to make “almost” into “entirely.” Chris Trenkamp |
Fiber 2.8.0: An Express.js Inspired Web Framework — If you know Express (from the Node world) than Fiber will look very familiar. Fiber |
sx: Fast, Modern, Easy-to-Use Network Scanner — Handles ARP, TCP, UDP, ICMP scans and more. v-byte-cpu |
Raft 1.3.0: A Go Implementation of the Raft Consensus Protocol
|
gronx: Fast, Dependency-Free Cron Expression Parser
|
|