#​479 — October 10, 2023

Unsub  |  Web Version

Together with  Crunchydata

Go Weekly

Thinking About a Better encoding/json — Led by Joe Tsai, but with input from several fellow gophers, this is a discussion to kickstart the process of potentially modernizing the long-standing encoding/json package by way of a new v2 version (which already has an experimental implementation to play with.)

Joe Tsai et al.

Everything You Always Wanted to Know About Type Inference (And a Little Bit More) — Type inference allows Go's compiler to determine types without explicit annotations. In this post, built upon a talk he recently gave at GopherCon, Robert Griesemer of the core Go team runs through everything you need to know around a commonly misunderstood topic.

Robert Griesemer

❤️ Postgres — You need a database provider that loves Postgres as much as you do. We'll take care of all the hassle - monitoring, backups, HA, disaster recovery so you don't have to. Want amazing support? We'll be there when you have questions.

Crunchy Bridge sponsor

Go Database Driver Overhead on Insert-Heavy Workloads — For INSERT-heavy workloads in Go Phil suggests switching database drivers — specifically noting that there is now “likely no good reason to use lib/pq anymore for accessing PostgreSQL from Go”. He suggests pgx instead.

Phil Eaton

IN BRIEF:

  • 📢 Go 1.21.2 and 1.20.9 have been released, but 1.21.3 and 1.20.10 are expected later today. All these releases include security fixes.

  • 📰 Bill Kennedy wrote in to let us know that his Ultimate Go Tour is now being translated to numerous other world languages with Persian being the first to be available. Twelve other languages are due to follow soon.

  • 📗 Learn Go with Pocket-Sized Projects is a new book being published by Manning later this month, but most of it is already available in an early access form.

A Web Server ‘Hello World’ Benchmark: Go vs Node vs Nim vs Bun — The standard disclaimer applies: benchmarks are difficult and don’t always measure what you should care about. Nonetheless, here’s a quick example comparing the simplest of HTTP servers using Go, Node, Bun and Nim.

Daniel Lemire

An Attempt at Visualizing the Go GC — Aadhav’s talk proposal for GopherCon India ‘23 may have been rejected, but he has turned his disappointment into an interesting blog post about his experiments.

Aadhav Vignesh

📈 It's not exactly the same, but Statsviz is a neat tool for visualizing real time plots of runtime metrics relating to your programs and just had a new release.

Adding Icons to Go-built Windows Executables — If you’ve built an app and want its .exe to have a nicer icon, rsrc provides a way to do it.

Mahmud Ridwan

🛠 Code & Tools

Mods 1.0: Command Line AI from Charm — Those Charm folks (of Bubble Tea fame) recently released an OpenAI powered command line AI tool to help you analyze code, write docs, and more. v1.0 adds streaming responses, saved conversations, and Azure OpenAI support.

Charm

templ: A Way to Build HTML with Go — Create components that render fragments of HTML and compose them to create screens, pages, documents, and apps. GitHub repo.

Adrian Hesketh

Sqinn: Access SQLite Databases Without Cgo — It instead uses an intermediary that communicates over I/O streams/stdin/stdout.

Christoph Vilsmeier

💻 Hired Makes Job Hunting Easy — Instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.

Hired sponsor

  • Viper 1.17 – A hugely powerful and flexible app configuration solution for Go apps. v1.17 requires Go 1.19 and adds log/slog support.

  • Requests 0.23.5 – The convenient HTTP request library has added support for changing the default JSON serializer/deserializer or setting it on a per-request basis.

  • Task v3.31.0 – Imagine if make were reimplemented in Go. (Homepage.)

  • Roaring 1.6 – 'Roaring' bitmap data structure implementation.

  • Betteralign 0.3.1 – Detect structs whose elements could be better aligned.

  • Ginkgo 2.13 – Modern testing framework.

🕰 ICYMI (Some older stuff that's still worth checking out)