---
title: "Flight recording for Go apps"
publication: "Go Weekly"
issue: 500
published_at: "2024-03-19"
canonical_url: "https://golangweekly.com/issues/500"
---

Plus fail-safe HTTP clients, Hugging Face transformers in Go, and writing better READMEs. |        

#​500 — March 19, 2024 

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

Together with [![Three Dots Labs\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_953,h_262/e_make_transparent/co_white,e_outline:12/xcwl1qvzr9sdxpbcami1.png)](https://threedots.tech/event-driven/?utm_source=golang-weekly)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dklgdc36philzy7d9ebf.jpg)](https://go.dev/blog/execution-traces-2024)  

[More Powerful Go Execution Traces](https://go.dev/blog/execution-traces-2024) — Over the last two releases, the Go team has worked to fix and enhance execution tracing, resulting in a 10x drop in overhead and much more scalable traces. These enhancements have spawned two experimental features: the ability to constantly trace execution (i.e. so-called ‘[flight recording](https://pkg.go.dev/golang.org/x/exp/trace#FlightRecorder)’) and a trace reader API. 

Michael Knyszek   [![\](https://copm.s3.amazonaws.com/58dfcb2f.png)](https://threedots.tech/event-driven/?utm_source=golang-weekly) 

[Learn Building Scalable & Resilient Go Backend](https://threedots.tech/event-driven/?utm_source=golang-weekly) — The next edition of Go Event-Driven starts soon. Learn one of the hottest skills and stand out from the crowd. 

Three Dots Labs sponsor   

[Measuring a System’s Performance with Go](https://lemire.me/blog/2024/03/17/measuring-your-systems-performance-using-software-go-edition/) — You can run up a benchmark in any programming language, but Go offers some features to make it relatively easy to measure CPU and memory performance, memory usage, and even dig into some of Go’s optimizations. Lots of examples here. 

Daniel Lemire   

[The _One Billion Row Challenge_ (Again!) – From 95s to 1.96s](https://r2p.dev/b/2024-03-18-1brc-go/) — Gunnar Morling’s [One Billion Row Challenge](https://www.morling.dev/blog/one-billion-row-challenge/) to read and aggregate stats from a one billion line file has caught on! We’ve linked to [Shraddha Agrawal](https://www.bytesizego.com/blog/one-billion-row-challenge-go) and [Ben Hoyt](https://benhoyt.com/writings/go-1brc/)’s solutions before, but here’s a _very_ in-depth look at going even further with lots of neat lower level details. 

Renato Pereira   

_QUICK BITS:_ 

- 🔒 The EFF has been [wondering if Caddy and Traefik should replace Certbot](https://www.eff.org/deeplinks/2024/03/should-caddy-and-traefik-replace-certbot) one day (notably, [Caddy](https://caddyserver.com/) and [Traefik](https://traefik.io/traefik/) are both Go-based projects.)
- 🤖 [Mechanoid](https://mechanoid.io/) is a new project from Ron Evans (of TinyGo and [Gobot](https://gobot.io/) fame) aiming to [bring WASM to embedded systems at IoT](https://www.infoworld.com/article/3714347/mechanoid-brings-wasm-to-embedded-systems-and-iot.html) – Built in Go but, unlike Gobot, you can use Go, Rust, Zig, and other languages that compile to WASM with it.   

[Debugging a Go Bug with Non-Blocking Reads](https://scratchdata.com/blog/go-nonblocking-pipes-bug/) — A case where things acted differently on different operating systems, which led to a quick patch in Go. But, if you can’t wait, there’s a simple workaround. 

Scratch Data   

[For Loops and More in Go](https://www.ardanlabs.com/blog/2024/03/for-loops-and-more-in-go.html) — `for` loops may seem like a beginners' topic, but there’s a lot to understanding their full use. How do you handle multiple loop variables? When should you use label breaks? How do range loop semantics affect updating loop structs? Miki shows off some examples. 

Miki Tebeka (Ardan Labs)   

[How to Write a '4000 Stars' GitHub README for Your Project](https://www.daytona.io/dotfiles/how-to-write-4000-stars-github-readme-for-your-project) — The creators of the Go-powered [Daytona](https://github.com/daytonaio/daytona/) project have a few tips to share about creating good READMEs. 

Ivan Burazin   

[Let's Embed a Go Program into the Linux Kernel](https://sigma-star.at/blog/2023/07/embedded-go-prog/) — Probably not something you'll generally want to do, but.. 
Richard Weinberger   

[Using GitHub Actions to Add Go Binaries to a Release](https://akrabat.com/using-github-actions-to-add-go-binaries-to-a-release/) 
Rob Allen   

[How I Built My Own Go Package Index](https://sazak.io/articles/how-i-built-my-own-go-package-index---gosazakio-2024-03-10) 
Ozan Sazak  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qpurw0zcab1itzkqunsm.jpg)](https://github.com/cohesivestack/valgo)  

[Valgo 0.3: An Expressive Validator Library](https://github.com/cohesivestack/valgo) — Type-safe and extensible validator library built upon generics. _“Valgo differs from other validation libraries in that the rules are written in functions and not in struct tags. This allows greater flexibility and freedom when it comes to where and how data is validated.”_ 

Cohesive Stack   

[Hugot: Hugging Face Transformer Pipelines in Go](https://github.com/knights-analytics/hugot) — A project with a goal of making it easy to run [Hugging Face](https://huggingface.co/) transformer pipelines from Go, without needing to call out to Python or external APIs (note it’s not _pure_ Go – it leans on ONNX Runtime). It supports only ONNX models and a few pipelines so far. 

Knights Analytics   

[Failsafe: Fault Tolerance and Resilience Patterns](https://failsafe-go.dev/) — A library for building fault-tolerant apps where you can wrap code in resilience policies such as Retry, CircuitBreaker, RateLimiter, Timeout, and Fallback. We linked to this months ago, but as of [v0.6](https://github.com/failsafe-go/failsafe-go/releases/tag/v0.6.0), it now can [integrate with HTTP clients.](https://failsafe-go.dev/http/) 

Jonathan Halterman   

[Hookdeck: The Amazon EventBridge Alternative](https://hookdeck.com?ref=goweekly-500) — Receive, transform, filter, route, and send messages across your EDA with an event gateway for engineering teams. 

Hookdeck sponsor   

[Konf 1.0: A Flexible Configuration Loader](https://github.com/nil-go/konf) — If you don’t want to be tightly coupled to any one source of configuration settings for your app, Konf might be for you – it’ll work with local sources like files and environment variables, but also with things like S3, AWS AppConfig, and GCP Secret Manager. 

Kuisong Tong   

[Codoworks Go Boilerplate: Prod-Ready RESTful API Boilerplate](https://github.com/codoworks/go-boilerplate) — An opinionated boilerplate app based around [Echo](https://echo.labstack.com/) to get CRUD APIs up and running quickly. 

Codoworks   

- [wazero 1.7](https://github.com/tetratelabs/wazero/releases/tag/v1.7.0) – Zero dependency WebAssembly runtime for Go. A significant upgrade with the final release of a new optimizing compiler.
- [fx 33.0](https://github.com/antonmedv/fx/releases/tag/33.0.0) – The popular JSON viewer and processor gains terminal autocomplete.
- [Toxiproxy 2.9](https://github.com/Shopify/toxiproxy) – TCP proxy to simulate chaotic network conditions.
- [Gonum 0.15](https://www.gonum.org/) – Numeric libraries for Go (algebra, probability, etc.)
- [Resty 2.12](https://github.com/go-resty/resty) – Simple HTTP and REST client library.
- [SCS 2.8](https://github.com/alexedwards/scs/releases/tag/v2.8.0) – HTTP session management in Go.
- [go-ora 2.8.10](https://github.com/sijms/go-ora) – Pure Go Oracle Database driver.
- [Bloom 3.7](https://github.com/bits-and-blooms/bloom) – Bloom filter implementation.         

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
