---
title: "Keeping generics away from the core libraries.. for a while."
publication: "Go Weekly"
issue: 383
published_at: "2021-10-15"
canonical_url: "https://golangweekly.com/issues/383"
---

Plus how an optimization by Tailscale improved Go's linker for all of us, and an Elm-inspired TUI framework. |        

#​383 — October 15, 2021 

[Unsubscribe](https://golangweekly.com/leave/*|UID|*)|[Read on the Web](https://golangweekly.com/issues/383)   

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/qfbscdxnuhnuqoakr2f5.jpg)](https://github.com/golang/go/issues/48918)  

[Proposal: _Don't_ Add Generics to Go's Core Libraries in 1.18](https://github.com/golang/go/issues/48918) — Rob is suggesting that new versions of the core libraries be placed in the experimental namespace so folks can test them _before_ core gets ‘genericized’. The idea is that while we get generics in 1.18, we can take more time to figure out how the core libraries will use them. 

Rob Pike    

"How to use these ideas in the standard library requires great thought and planning. Putting them in the library now also adds a significant burden to rolling out the release. I propose that we do not update the libraries in 1.18." 

___
Rob Pike     

['Hey Linker, Can You Spare a Meg?'](https://tailscale.com/blog/go-linker/) — Tailscale, a mesh VPN service, has its core code written in Go, but on iOS their network extension is limited to a mere 15MB of memory. Ensuring they stayed within this limit involved the Tailscale engineers digging deep into Go’s runtime, garbage collector, and more, ultimately resulting in improvements for _all_ Go users coming to Go 1.18. 

Josh Bleecher Snyder (Tailscale)   [![\](https://copm.s3.amazonaws.com/28b38a6a.png)](https://www.pulumi.com/cloud-engineering-summit/?utm_source=golang-weekly&utm_medium=sponsored-link&utm_campaign=ces-2021) 

[Cloud Engineering Summit Speakers Announced](https://www.pulumi.com/cloud-engineering-summit/?utm_source=golang-weekly&utm_medium=sponsored-link&utm_campaign=ces-2021) — Join the summit on October 20th to hear from keynote speakers Kelsey Hightower and Emily Freeman, plus more than 40 other cloud engineering leaders and practitioners from companies like AWS, Google, Microsoft, Snowflake, Docker, Netflix, and more. 

Pulumi sponsor   

[GoReleaser Can Now Create macOS Universal Binaries](https://goreleaser.com/customization/universalbinaries/) — [GoReleaser](https://goreleaser.com/) is a popular tool for cross-compiling and releasing Go projects. Universal binaries are necessary on macOS now due to supporting both `amd64` and `arm64` architectures with Apple’s new chip releases (i.e. the M1). 

GoReleaser   

[Safer Enums in Go](https://threedots.tech/post/safer-enums-in-go/) — For those of us that give more than an iota about enums, this post is a nice exploration of ways to make them better (integers bad, strings good) but certainly not perfect. 

Miłosz Smółka   

[Where Go and GraphQL Collide: Behind The Curtain with `genqlient`](https://blog.khanacademy.org/where-go-and-graphql-collide-behind-the-curtain-with-genqlient/) — How the authors of genqlient (a GraphQL client) handled some of the thornier problems around code generation, JSON, interfaces, and more. 

Ben Kraft (Khan Academy)   

▶[Go in 100 Seconds](https://www.youtube.com/watch?v=446E-r0rXHI) — There’s nothing in this video you don’t already know, but you can store it away as a quick intro for potential Gophers. 

Fireship      

Jobs  

[Senior Software Engineer, Platform | Remote within US Timezones | Full-Time](https://grnh.se/caf836d01us) — Build the platform our teams use to ship innovative telehealth and workflow tools for over 1.8 million clinicians. 
Doximity   

[Senior Golang Engineer (Cloud, Microservices, REST APIs) (Romania Remote)](https://crowdstrike.wd5.myworkdayjobs.com/en-US/crowdstrikecareers/job/Romania---Remote/Sr-Software-Engineer--Discover---Romania-or-Germany--Remote-_R5191?_ga=2.254546824.1415722864.1632139815-699343068.1543847975) — CrowdStrike is the leader in cloud-delivered endpoint protection, which helps protect our customers from cybersecurity attacks. 
Crowdstrike   

[Find a Job Through Hired](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) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired     

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/jh9vyoobobvx64sllzoi.jpg)](https://github.com/charmbracelet/bubbletea)   

[Bubble Tea: A Powerful Elm-Inspired TUI Framework](https://github.com/charmbracelet/bubbletea) — Based on the [Elm architecture](https://guide.elm-lang.org/architecture/), this is aimed at interactive terminal apps. 

Charm   

[GoPlus (Go+): A More Scripty Variant of Go](https://github.com/goplus/gop) — It’s not going to win any awards for having a good, non-confusing name, but the overall idea of having a Go compatible language that leans more towards Python-style simplicity for scripting and data science use cases is interesting nonetheless. 

GoPlus   

[OpenTelemetry and Observability: Achieving Full System Visibility](https://go.lightstep.com/register-opentelemetry-and-observability-achieving-full-system-visibility-co21?utm_campaign=golang&utm_source=cooper&utm_medium=Email) 

Lightstep sponsor   

[Decimal: Arbitrary-Precision Fixed-Point Decimal Numbers](https://github.com/shopspring/decimal) — We love that the library laments that it can only represent decimal numbers with up to 2 billion digits after the decimal point :-) Why not just use float64, you ask? [They’ve answered that](https://github.com/shopspring/decimal#why-dont-you-just-use-float64), and more. 

Spring Engineering   

[Kratos 2.1: A Go Framework for Microservices](https://github.com/go-kratos/kratos) — A _“microservice-oriented governance framework”_ built around gRPC. 

Kratos   

[truthy: Truthy Condition Testing with Go Generics](https://github.com/carlmjohnson/truthy) — While this is “a little bit of a joke package”, it’s still something we should start to see once 1.18 is out. 

Carl Johnson   

[Broadcast: Send Notifications to Multiple Goroutines with Guaranteed Delivery](https://github.com/teivah/broadcast) 
Teiva Harsanyi   

[hostsfile: A Go-Powered Tool for Working with `/etc/hosts` Files](https://github.com/kevinburke/hostsfile) 
Kevin Burke     

🕰 **ICYMI** _(Some older stuff that's worth checking out...)_ 

- [This step-by-step tutorial](https://t.co/8Hs0lWkPb8?amp=1) shows us how to implement domain-driven design (DDD) in Go.
- Tyler Bui-Palsulich shows us [how to go about finding and fixing memory leaks](https://dev.to/googlecloud/finding-and-fixing-memory-leaks-in-go-1k1h) in Go.
- [Here's a look at how to use structured JSON logging in Go apps](https://betterprogramming.pub/how-to-use-structured-json-logging-in-golang-applications-7fc5e2751dbd) — a first step to making your logs more searchable.
- Sam Lewis built a VPN tool in Go to figure out just [how mesh VPNs work](https://www.samlewis.me/2021/07/creating-mesh-vpn-tool-for-fun/).         

Curated by [Glenn Goodrich](https://twitter.com/ruprict) and [Peter Cooper](https://twitter.com/peterc). 

[Change your email address](https://golangweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
