---
title: "'There will not be a Go 2 that breaks Go 1 programs.'"
publication: "Go Weekly"
issue: 473
published_at: "2023-08-29"
canonical_url: "https://golangweekly.com/issues/473"
---

Plus RIP to AWS Lambda's Go runtime, a big TinyGo update, and an official introduction to 1.21's structured logging. |        

#​473 — August 29, 2023 

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

**👋 We're back! Well, almost..** If you didn't get an issue of Go Weekly in the past few weeks, don't worry, I was on vacation. I'm technically on vacation for a couple more days but didn't want _too_ many issues to pass by, so here we are. 😁
__
_Peter Cooper and the Cooperpress team_ 

Together with [![Ardan Labs\](https://res.cloudinary.com/cpress/image/upload/e_make_transparent/co_white,e_outline:7,q_auto/uf5bdgdgdbgcbdrzi6r7.png)](https://www.ardanlabs.com/consulting/?utm_source=cooperpress)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/c4jctbotqm8hpm9tvdko.jpg)](https://go.dev/blog/compat)  

[On Backward Compatibility, Go 1.21, and.. Go 2?](https://go.dev/blog/compat) — If backwards compatibility sounds boring, _“boring can be good,”_ says Russ, who has written about some of the _“important work we shipped in Go 1.21 to keep Go boring”_ when it comes to ensuring your programs continue to compile in the face of changes to Go’s tooling. He also teases [Go 2](https://go.dev/blog/compat#go2) before _(spoiler alert)_ saying it either won't happen or.. _it already did._ 

Russ Cox   

Russ has remained prolific during our break and has also shared [a proposal for `iter`, a new package for iterators,](https://github.com/golang/go/issues/61897) which relates to the ['range over function' feature proposal](https://github.com/golang/go/issues/61405) that's also currently in progress.  

[Structured Logging with `slog`](https://go.dev/blog/slog) — [Go 1.21](https://go.dev/blog/go1.21) was the big news in our last issue and it introduced the [log/slog package](https://pkg.go.dev/log/slog) for _structured logging_ where logs go beyond a mere line of text and have useful associated metadata. Jonathan Amsterdam presents a full introduction on the official Go blog. 

Jonathan Amsterdam   [![\](https://copm.s3.amazonaws.com/bcc68a3c.png)](https://www.ardanlabs.com/consulting/?utm_source=cooperpress) 

[Go! Experts at Your Service](https://www.ardanlabs.com/consulting/?utm_source=cooperpress) — Do you need help filling skill gaps, speeding up development & creating high performing software with Go, Docker, K8s, Terraform and Rust? We’ll help you maximize your architecture, structure, tech-debt and human capital. 

Ardan Labs Consulting sponsor   

[Go 1.21, All You Need to Know: A Visual Guide](https://miro.com/app/board/uXjVMBkmPPQ=/) — A Miro-based whiteboard/mindmap-style representation of what Jan believes the most important things to know about Go 1.21 are. There are previous editions [for Go 1.20](https://miro.com/app/board/uXjVPyMixKs=/) and [1.18](https://miro.com/app/board/uXjVOaLW7dY=/)too. 

Jan Stamer   

[RIP AWS Lambda's Go Runtime?](https://www.wolfe.id.au/2023/08/09/rip-aws-go-lambda-runtime/) — AWS is deprecating the `go1.x` runtime alongside the end-of-life of Amazon Linux 1 and folks with Go functions are encouraged to [migrate to the `provided.al2` base image](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-from-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/). While this promises better performance and support, it also gives users a fair bit of work to do to migrate. 

Mark Wolfe   

[Avoiding Pitfalls in Go](https://www.dolthub.com/blog/2023-08-16-go-pitfalls/) — _“Every example I give here is something that I have personally experienced. These lessons were learned the hard way. Learn from my mistakes.”_ 

Nick Tobey   

[Advanced Go Concurrency](https://encore.dev/blog/advanced-go-concurrency) — We featured this a few years ago, but it’s become popular on social again. This article goes beyond the usual candidates (goroutines, using `context` and `sync`) and digs into `x/sync` and things like `singleflight` and `errgroup`. If you’ve not dug far into concurrency in Go, you should pick up a thing or two here. 

André Eriksson   

[How to Develop a Great CLI with Go](https://actuated.dev/blog/develop-a-great-go-cli) — Alex shares his insights from building half a dozen popular Go CLIs himself. 

Alex Ellis (OpenFaaS)   

[Free Course: Temporal 101 with Go](https://t.mp/3s01cdA) — Learn the essentials, then develop an app in this course that focuses on Workflows, Activities, and Temporal’s Go SDK. 

Temporal Technologies sponsor   

[Writing a TOTP 2FA Client in Go](https://rednafi.com/go/totp_client/) — You can do it all with standard libaries. 

Redowan Delowar   

[Limit Goroutines with Buffered Channels](https://rednafi.com/go/limit_goroutines_with_buffered_channels/) 
Redowan Delowar   

[How to Propagate Context Without Cancellation](https://tyk.io/blog/how-to-propagate-context-without-cancellation/) 
Wairagu Komu  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/eyqfwkhybwnmrtrwl8v6.jpg)](https://github.com/tinygo-org/tinygo/releases/tag/v0.29.0)  

[TinyGo 0.29.0: The Go Compiler for Small Places Gets Go 1.21](https://github.com/tinygo-org/tinygo/releases/tag/v0.29.0) — The popular alternative LLVM-based Go compiler targeting microcontrollers and WebAssembly use cases has now added support for both Go 1.21 and the new `GOOS=wasip1`option. 

TinyGo   

[SQLedge: Replicate Postgres to SQLite on the Edge](https://github.com/zknill/sqledge) — An alpha/experimental Go-powered Postgres proxy that uses a local SQLite database for reads and forwards writes to an upstream Postgres server. 

Zak Knill   

[Local Development Where the Infrastructure is Created Automatically](https://encore.dev/docs/quick-start?utm_campaign=localinfra&utm_medium=email&utm_source=golangweekly) — Encore automatically sets up local infrastructure on the fly, and provisions cloud infrastructure when you git push. 

Encore sponsor   

[fp-go: IBM Working on a Functional Programming Library for Go](https://github.com/IBM/fp-go) — Presented as a ‘work in progress’ and inspired by TypeScript’s [fp-ts](https://github.com/gcanti/fp-ts), this effort aims to encourage the development and composition of small, side-effect free functions in Go too. 

IBM   

[Jacobin JVM: A 'More than Minimal' JVM Written in Go](https://jacobin.org/) — A novel Java Virtual Machine implementation built in Go that’s capable of running Java 17 classes. 

Binstock, Uresk, Elkins, et al.   

[_Soft Serve_ Now Supports Git LFS](https://charm.sh/blog/soft-serve-git-lfs-support/) — [Soft Serve](https://github.com/charmbracelet/soft-serve) is a Go-powered, self-hostable Git server from the Charm folks. 

Charm Team    

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      

- [Excelize 2.8](https://github.com/qax-os/excelize/releases/tag/v2.8.0)
 ↳ Read/write Excel spreadsheet files.
- [Wazero 1.5](https://github.com/tetratelabs/wazero/releases/tag/v1.5.0)
 ↳ Zero dependency WASM runtime for Go devs.
- [Toxiproxy 2.6](https://github.com/Shopify/toxiproxy/releases/tag/v2.6.0)
 ↳ TCP proxy to simulate choatic network conditions.
- [FerretDB 1.9](https://github.com/FerretDB/FerretDB)
 ↳ MongoDB compatible database atop Postgres.
- [GoCV 0.34](https://github.com/hybridgroup/gocv/releases/tag/v0.34.0)
 ↳ Package for computer vision using OpenCV 4+
- [Roaring 1.5](https://github.com/RoaringBitmap/roaring)
 ↳ Go version of the 'Roaring bitmap' data structure.
- [Fiber 2.49](https://github.com/gofiber/fiber) – Express.js inspired web framework.
- [pdfcpu 0.5](https://github.com/pdfcpu/pdfcpu/releases/tag/v0.5.0) – Go PDF processor.         

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
