---
title: "The one where Go keeps getting better"
publication: "Go Weekly"
issue: 470
published_at: "2023-07-25"
canonical_url: "https://golangweekly.com/issues/470"
---

Plus Go benchmarking pitfalls, a gentle intro to pointers, and finding vulnerable dependencies with govulncheck. |        

#​470 — July 25, 2023 

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

✍️ It feels like there's a particularly strong drive to improve Go lately, whether it's through the ever growing number of proposals from folks like Russ Cox, the development of tools like `govulncheck`, or folks writing articles about how to write better code. Go's a simple language with modest ambitions, but it's not resting on its laurels and is actively continuing to get better all the time – long may it last!
__
_Your editor, Peter Cooper_ 

Together with [![Teleport logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_280,h_60/e_make_transparent/co_white,e_outline:5/vr8quyt0q3vtxkpueewu.png)](https://goteleport.com/kubernetes-access/?utm_campaign=0725Cooperpress&utm_medium=partner&utm_source=golang)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pefiiev4usnl1mnunzty.jpg)](https://docs.google.com/document/d/1a6p7-nbk5PVyM1S2tmccFrrIuGzCyzclstBtaciHxVw/edit)  

[An Overhaul of Inlining for Go 1.22](https://docs.google.com/document/d/1a6p7-nbk5PVyM1S2tmccFrrIuGzCyzclstBtaciHxVw/edit) — _Inlining_ is the concept of replacing a function call in a program with the contents of the function itself, thus avoiding the call. Go’s inliner has improved over the years, but the policies around _when and what_ to inline have become a little out of date. The idea, then, is to implement a variety of tweaks that could introduce, Austin says, _“significant performance improvements for Go applications”._ 

Austin Clements et al.   

[A Preview of Ranging Over _Functions_](https://eli.thegreenplace.net/2023/preview-ranging-over-functions-in-go/) — A [new language proposal](https://github.com/golang/go/issues/61405) (yes, another one!) suggests adding two new types `for`/`range` can iterate over. The first (integers) is mostly syntactic sugar, but the second (functions) would allow iteration over custom collection types which is pretty huge. 

Eli Bendersky   [![\](https://copm.s3.amazonaws.com/363aea5f.png)](https://goteleport.com/kubernetes-access/?utm_campaign=0725Cooperpress&utm_medium=partner&utm_source=golang) 

[Pass SOC 2, FedRAMP, HIPAA, and Other Audits With Ease](https://goteleport.com/kubernetes-access/?utm_campaign=0725Cooperpress&utm_medium=partner&utm_source=golang) — Meet compliance requirements, pass audits with minimal effort, and have complete visibility into kubectl access and behavior with Teleport by starting your free trial. The supported standards include SOC 2, FedRAMP, HIPAA, ISO 27001, PCI, and more. 

Teleport | goteleport․com sponsor   

[How to Find and Fix Vulnerable Dependencies with `govulncheck`](https://go.dev/doc/tutorial/govulncheck) — Last week, we featured [govulncheck’s 1.0 release](https://go.dev/blog/govulncheck), and now there’s an official tutorial on the Go site on using the tool to scan a Go program for vulnerabilities and the steps to take if you find anything. 

Go Documentation   

[Proposal: Let's Make Go's HTTP Request Multiplexer Better](https://github.com/golang/go/issues/61410) — [http.ServeMux](https://pkg.go.dev/net/http#ServeMux) is an HTTP request multiplexer (or router, if you will) and there has been [talk this year of making it better](https://github.com/golang/go/discussions/60227) by adding support for HTTP method based routing and support for wildcards in paths. This has now turned into a proposal. 

Jonathan Amsterdam   

**IN BRIEF:** 

- We love it when the Go docs keep it real. From [the Go Memory Model](https://go.dev/ref/mem) comes this gem: _"If you must read the rest of this document to understand the behavior of your program, you are being too clever. Don't be clever."_
- The latest episode of the _Go Time_ podcast covers [▶️ _"the tools we love"_](https://changelog.com/gotime/285) – specifically, the dev-related tools the hosts and guests enjoy, most of which are listed in [the show notes](https://changelog.com/gotime/285#notes) even if you don't want to listen to the show.
- Vercel gives an update on their [progress in porting Turborepo (a JS/TS build tool) from Go to Rust.](https://vercel.com/blog/how-turborepo-is-porting-from-go-to-rust) They wrote more about [why they're making the move](https://vercel.com/blog/turborepo-migration-go-rust) a few months ago.    

[Common Pitfalls in Go Benchmarking](https://eli.thegreenplace.net/2023/common-pitfalls-in-go-benchmarking/) — _“While these pitfalls are presented in Go, they exist in any programming language or environment, so the lessons learned here are widely applicable.”_ 

Eli Bendersky   

[Getting Friendly with CPU Caches](https://www.ardanlabs.com/blog/2023/07/getting-friendly-with-cpu-caches.html) — Understanding how to make your code cache-friendly can result in significant performance gains but be sure you understand the risks and tradeoffs therein. 

Miki Tebeka and William Kennedy   

[Using Cobra to Build Go-Powered CLIs](https://www.twilio.com/blog/use-cobra-build-go-powered-clis) — A step by step tutorial for creating a basic CLI app using the [Cobra](https://github.com/spf13/cobra) approach. 

Joseph Udonsak   

[“DevOps Workload Has Dropped by 90% for Services Migrated to Encore”](https://encore.dev/customers/bookshop/?utm_campaign=bs&utm_medium=email&utm_source=golangweekly) — Check out Bookshop.org's ongoing journey from a Ruby on Rails monolith to a Go microservices architecture. 

Encore sponsor   

[A Gentle Introduction to Pointers in Go](https://www.alexedwards.net/blog/a-gentle-introduction-to-pointers) — Very short and elementary, but.. _“if you’re a bit fuzzy on exactly what pointers and how they work, it should help you out!”_ 

Alex Edwards   

[From 26 Minutes to 20 Seconds: Using pprof to Optimize Large GraphQL Operations in Go](https://wundergraph.com/blog/optimizing_large_graphql_operations_with_golangs_pprof_tools) 
WunderGraph  

🛠 Code & Tools  

[ff 3.4: A 'Flags-First' Package for Configuration](https://github.com/peterbourgon/ff) — Provides an opinionated way to populate a `flag.FlagSet` with configuration data from the environment via cmd line args, config file, or environment variables. 

Peter Bourgon   

[Vegeta: An HTTP Load Testing Tool and Library](https://github.com/tsenart/vegeta) — A Go-powered load testing approach with lots of customization potential, a built-in plotting tool, and even a way to render [real-time reports in your terminal.](https://github.com/tsenart/vegeta#usage-real-time-analysis) 

Tomás Senart   

[Get Started with Temporal and Go](https://t.mp/3WVgVVK) — Build apps with Temporal + Go by setting up your development environment, then exploring how Temporal Applications work. 

Temporal Technologies sponsor   

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/gbip0imlfhsrpob2uisa.jpg)](https://github.com/noborus/ov)  

[ov: Feature-Rich Terminal-Based Text Viewer/Pager](https://github.com/noborus/ov) — Aims to replace `less`, `more`, `tail -f` and `watch` in one. 

Noboru Saito   

[Risor: An Embeddable Scripting Language Written in Go](https://risor.io/) — Formerly known as _Tamarin_, Risor code (which feels a bit like a hybrid of Go and Python and can use the Go standard library) gets compiled to bytecode and run on a small pure Go VM. [GitHub repo.](https://github.com/risor-io/risor) 

Curtis Myzie   

[go-sse 0.6: Spec-Compliant Server-Sent Events (SSE) Library](https://github.com/tmaxmax/go-sse) — [Server Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) is a Web API supported by all major browsers that lets servers stream/send messages to (listening) pages at will. 

Teodor Maxim    

Jobs  

[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) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired     

- [pdfcpu 0.4.2](https://github.com/pdfcpu/pdfcpu)
 ↳ A PDF processor/parser written in Go.
- [go-git 5.8](https://github.com/go-git/go-git/releases/tag/v5.8.0)
 ↳ Pure Go git implementation in a library.
- [GoToSocial 0.10.0](https://github.com/superseriousbusiness/gotosocial/releases/tag/v0.10.0)
 ↳ ActivityPub social network server.
- [Fiber 2.48.0](https://github.com/gofiber/fiber/releases/tag/v2.48.0)
 ↳ Express.js-inspired Web library for Go.
- [Micro 4.3.0](https://github.com/micro/micro)
 ↳ API first development platform.
- [Dive 0.11](https://github.com/wagoodman/dive)
 ↳ Tool to explore each layer in a Docker image.         

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
