#415 — June 10, 2022 |
The Go Weekly Newsletter |
Go has passed 100,000 stars on GitHub. There was no obvious top feature this week, so what better way to celebrate than to mark the (arguably quite arbitrary) milestone of Go passing into the six figure GitHub stars club? I mean, it's twice as many as Ruby on Rails has, and GitHub was built with that.. :-) |
Data Race Patterns in Go — Uber's engineers analyzed over 1,100 data races and found that it’s much easier than you might think to introduce them in Go "due to certain language design choices." This post breaks down seven of the most common reasons – your code probably engages in one of them too. Chabbi and Ramanathan (Uber) |
Ebiten, the 2D Game Library for Go, Becomes Ebitengine™ — If you want to create a 2D game in Go, whether for desktop, mobile, or even the Nintendo Switch, this remains a great place to start, and now it’s got a new name too (in order to land a trademark in Japan, I'm told). There’s also an Ebitengine Game Jam starting next week, if you want some motivation to give it a try. Hajime Hoshi |
Flaky Tests Slowing You Down? BuildPulse Can Help — BuildPulse automatically detects and tracks flaky tests in your projects so you can stop wasting time chasing broken builds and get back to coding. To top it off, BuildPulse works seamlessly with Go, and you can set it up in just a few minutes. BuildPulse sponsor |
▶ Why a Dev Built a Faster Bryan Cockfield / Michael Stapelberg |
Fyne 2.2: Cross Platform GUI Toolkit for Go — Fyne is a continually improving option for building both desktop and mobile UIs with Go and now includes extra controls like a rich text widget, system tray support, JSON theming, and more. Is there a tutorial? Yes there is. Fyne.io |
Quicker bits:
|
How to Embed a React App in a Go Binary — While you can use Go to write a backend API, you might use something like React on the front end. Given Go’s power in producing single distributable binaries, could you put your front end code into the binary too? Sure. Nils Caspar |
Generating a Random Brandur Leach |
(Mostly) Automatic Go Dependency Updates with GitHub Actions — When there’s no defined process ensuring dependencies get updated, well.. you’re going to end up with some outdated packages in your stack. This isn’t a hard task, really, but one that people don’t always think about. Brandur Leach |
Performance of Coroutine-Style Lexers in Go — Spoiler alert: They’re fast. But, does speed really matter for a lexer? Well, if you’re interested enough to read this article, then you probably already know that answer. Eli Bendersky |
Using Go's Standard Library Interfaces — A more introductory item. Nice to see more people going back to cementing knowledge through blogging. Elton Minetto |
|
🛠 Code & Tools |
GoPlus (Go+) 1.1: A More Script-y Variant of Go — A confusingly named but well intentioned Go variant, of sorts, that leans more towards Python-style simplicity for scripting, educational, and data science use cases. v1.1 brings in a lot more module support. There’s a little demo on their home page. GoPlus |
Mo: Monads and Popular FP Abstractions for Go 1.18+ — One for the functional programming fans with a fistful of monads (including family favorites like Samuel Berthe |
Benthos 4.2: A Stream Processor for 'Mundane Tasks' — It’s been nearly a year since we mentioned Benthos but it’s been coming along so well recently. Define pipelines to connect together various sources and sinks (e.g. S3, Elasticsearch, files, Redis, etc.) and perform operations on the payloads. Ashley Jeffs |
Issue Tracking Has Never Been Easier With Shortcut Shortcut (formerly Clubhouse.io) sponsor |
Ddosify 0.8: High-Performance HTTP Load Testing Tool — Supports both HTTP and HTTP/2. Be sure to use this with permission and for good. Ddosify |
gta: Find Which Go Packages Have Deviated from Upstream — Does transitive analysis to find packages whose dependencies have changed. DigitalOcean |
DurationLint: Linter to Disallow Use of Untyped Literals and Constants as Gabriele Viglianisi |
garr: High Performance, Thread-Safe, Lock-Free Data Mechanisms — Currently includes a circuit breaker, adder, queue, retry/backoff, and worker pool. LINE |
SFTPGo 2.3: A Full Featured SFTP Server Built in Go — Note the GNU AGPLv3 license.
|
go-srpc: Simple Streaming RPC for Go
|
SyMon: A Simple Linux System Monitoring and Alerting Tool
|