---
title: "A Charm-ed life for Go CLI tooling"
publication: "Go Weekly"
issue: 483
published_at: "2023-11-07"
canonical_url: "https://golangweekly.com/issues/483"
---

Plus oapi-codegen v2, detecting goroutine leaks, and using Go instead of Rust to build a desktop app. |        

#​483 — November 7, 2023 

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

Together with [![Dragonfly\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_1296,h_236/e_make_transparent/co_white,e_outline:17/s0zmgewhr5q9s8jl1gfd.png)](https://www.dragonflydb.io/cloud?utm_campaign=cooperpress_go_nov23&utm_source=ppc&utm_medium=newsletter)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/juzgfucfglgralmvavdb.jpg)](https://charm.sh/blog/the-next-generation/)  

[Charm Raises $6M to Build the Next Generation of the Command Line](https://charm.sh/blog/the-next-generation/) — Like much of the Go community, we’ve been huge fans of [Charm’s](https://charm.sh/) approach to building useful Go-based tools and CLI libraries (such as [Bubble Tea](https://github.com/charmbracelet/bubbletea)), so this is fantastic news. It’s mostly _not_ about the money raised, either, but a roundup of Charm’s work in the area of CLI development and the projects they’ve released so far. 

Toby Padilla and Christian Rocha (Charm)   

[Why a Team Used Go Instead of Rust to Develop a Desktop App](https://blog.moonguard.dev/why-golang-instead-of-rust-to-develop-the-krater-desktop-app) — [Krater](https://moonguard.dev/krater), a desktop app for debugging Laravel apps, was initially developed in Rust using Tauri, but shifted to using Go with Wails due to Go’s developer experience. 

Ronald Pereira   [![\](https://copm.s3.amazonaws.com/b59bec3e.png)](https://www.dragonflydb.io/cloud?utm_campaign=cooperpress_go_nov23&utm_source=ppc&utm_medium=newsletter) 

[A Data Store Built for Modern Workloads](https://www.dragonflydb.io/cloud?utm_campaign=cooperpress_go_nov23&utm_source=ppc&utm_medium=newsletter) — Dragonfly is a drop-in Redis replacement. Applications built on Dragonfly get the speed, reliability, and scalability that modern apps require, allowing you to deliver incredible experiences to your users while reducing costs and complexity. 

Dragonfly sponsor   

[Go, Containers, and the Linux Scheduler](https://www.riverphillips.dev/blog/go-cfs/) — If you’re running Go in containers, the runtime will create one thread per CPU core regardless of any limit set by the container runtime. This can lead to significant GC cycle times, but `GOMAXPROCS` is your friend and it’s easy to apply. 

River Phillips   

_QUICK BITS:_ 

- 🎤 Filippo Valsorda and Roland Shoemaker of the Go team joined the _Go Time_ podcast to [discuss what's new in Go's cryptography libraries.](https://changelog.com/gotime/295)
- 📗 [Automate Your Home Using Go](https://pragprog.com/titles/gohome/automate-your-home-using-go/) is a forthcoming _Pragmatic Bookshelf_ ebook by Ricardo Gerardi and Mike Riley focusing on using Go on the Raspberry Pi to build motion detectors, temperature sensors, and more.   

[Generic Sorting in Go 1.21: A Tale of Two Performances](https://aead.dev/news/sort-strings/) — An analysis of the performance of the new generic `slices.Sort` function introduced in Go 1.21 reveals that while it provides a faster sorting method for numbers, it unexpectedly underperforms when sorting _strings_. [This issue on GitHub](https://github.com/golang/go/issues/61725) might help you understand why, and how it may be resolved. 

Andreas Auernhammer   

[Running the “Reflections on Trusting Trust” Compiler](https://research.swtch.com/nih) — Russ tells the story of Ken Thompson (co-creator of Unix) giving a talk on how to create a backdoor in a C program in the early 80s, which Russ attempts to recreate in Go. 

Russ Cox       

📰 Classifieds   

[Join Sticker Mule's "kick ass" team as a Site Reliability Engineer!](https://jobs.ashbyhq.com/stickermule/2482befb-4aa7-4372-98d7-042aaf774315?utm_source=Cooperpress) Our software team operates from 17 countries and we're looking for more exceptional engineers to join our Security team. 

--- 

[Lead a team of engineers to shape the future of live video](https://jobs.lever.co/dyte-io/d038d490-f7c8-423e-900d-ec4ad1e4e69f) at [Dyte](https://dyte.io/): Lead an engineering team responsible for critical backend systems and APIs. Optimize, scale, and play a pivotal role in shaping product direction. 

--- 

💻 Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. [Create a free profile now](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=find-your-next-job).      

[How We Reduced oapi-codegen's Dependency Overhead by ~84%](https://www.jvt.me/posts/2023/10/23/oapi-codegen-v2-decrease/) — How to reduce the size of a module’s dependencies by taking advantage of module pruning. _(More on the actual release, below.)_ 

Jamie Tanna   

[Exploring Columnar Compression Challenges in Go](https://www.scattered-thoughts.net/writing/columnar-kernels-in-go/) 
Jamie Brandon  

🛠 Code & Tools  

[oapi-codegen v2: OpenAPI Client and Server Code Generator](https://github.com/deepmap/oapi-codegen/releases/tag/v2.0.0) — A popular set of utilities for generating Go boilerplate code for services based on OpenAPI 3.0 API definitions, now with [far fewer dependencies](https://www.jvt.me/posts/2023/10/23/oapi-codegen-v2-decrease/) than before. If you want to see how to use it, [start here.](https://github.com/deepmap/oapi-codegen#overview) 

DeepMap, Inc   

[The Redis Client for Go v9.3 – Now with JSON](https://github.com/redis/go-redis/releases/tag/v9.3.0) — The official Redis client takes a big step forward with direct support for JSON (which is directly supported by Redis when using the [RedisJSON module](https://github.com/RedisJSON/RedisJSON/)). 

Redis Team   

[Free Course: Introduction to Temporal Cloud](https://t.mp/3QqrX3l) — Check out our new course on the role and features of Temporal Cloud, designed for new and experienced users alike. 

Temporal Technologies sponsor   

[DoltgreSQL: Postgres-Compatible Database with Version Control Functionality](https://www.dolthub.com/blog/2023-11-01-announcing-doltgresql/) — [Dolt](https://github.com/dolthub/dolt) is a long-standing Go-powered database providing a ‘`git` for data’-style experience with branching, cloning, merging and more, using the MySQL wire protocol. DoltgreSQL offers the same but emulates a _Postgres_ server. 

Daylon Wilkins   

[env 10.0: Parse Environment Variables to Structs](https://github.com/caarlos0/env) — Simple, no dependencies, and supporting all built-in types as well as `time.Duration`, `encoding.TextUnmarshaler` and `url.URL` – you can define a custom parser function for any other type you want to support, too. 

Carlos Alexandro Becker   

[GoLeak 1.3: Goroutine Leak Detector](https://github.com/uber-go/goleak) — Use this to detect if there are any unexpected goroutines running at the end of a test. 

Uber Engineering   

- [Cobra 1.8](https://github.com/spf13/cobra/releases/tag/v1.8.0) – Library for building full-featured CLI apps.
- [color 1.16](https://github.com/fatih/color) – Colorized output with ANSI codes.
- [GoReleaser 1.22.0](https://github.com/goreleaser/goreleaser) – Build and release Go binaries for several platforms.
- [validator 10.16](https://github.com/go-playground/validator) – Value validations for structs and fields based on tags.
- [progressbar 3.14](https://github.com/schollz/progressbar) – Basic thread-safe progress bar.
- [goverter 1.1](https://github.com/jmattheis/goverter) – Easily create type-safe converters.    

**_💬 QUOTE_**  

“The best programs are the ones written when the programmer is supposed to be working on something else.” 

___
Melinda Varian          

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
