---
title: "Explaining Go's WebAssembly System Interface support"
publication: "Go Weekly"
issue: 476
published_at: "2023-09-19"
canonical_url: "https://golangweekly.com/issues/476"
---

Plus a simple Go static server, looking at JSON with 'fx', and gocron springs back into life. |        

#​476 — September 19, 2023 

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

Together with [![Fusion Auth\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_512,h_127/e_make_transparent/co_white,e_outline:15/es9kzxpnghhbbctheomi.png)](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness)  

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mbrcasvunkncywnj4iz8.jpg)](https://fx.wtf/)  

[fx 30: The Go-Powered Terminal JSON Viewer](https://fx.wtf/) — `fx` has long been a useful tool for looking at JSON files, but Anton has taken the opportunity to [rewrite it from the ground up](https://github.com/antonmedv/fx/releases/tag/30.0.0) with a new themed TUI look, regex search, better wrapping, fuzzy search, and support for _“even the most massive JSON files.”_ A fantastic tool that's a great example of what Go excels at. 

Anton Medvedev   

[On WASI Support in Go](https://go.dev/blog/wasi) — Recent versions of Go have introduced the ability to target WebAssembly and the WebAssembly System Interface ([WASI](https://github.com/bytecodealliance/wasmtime/blob/main/docs/WASI-overview.md)) that enables WASM to interact with the outside world. This post covers the basics and shares where things stand with Go’s still-nascent support. 

Brandhorst-Satzkorn, Fabre, Gryski, et al.   [![\](https://copm.s3.amazonaws.com/04d191ad.png)](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness) 

[Add Fully-Featured Auth to Your Go App with Two Lines of Code](https://fusionauth.io?utm_source=gonewsletter&utm_medium=newsletter&utm_campaign=awareness) — Easy, secure, and affordable: pick three. FusionAuth is auth built for devs, by devs. 

FusionAuth sponsor   

_QUICK BITS:_ 

- If you use ChatGPT to help you with your Go code at all, its training cut-off date has changed to January 2022. A side effect of this, I've noticed, is it now recognizes that Go has generics and will emit code using them.
- If you're a fan of JetBrains' _GoLand_ IDE and are working with Rust too, they've unveiled [RustRover](https://www.jetbrains.com/rust/), a similar IDE targeting Rust developers.
- Did you know there's [a Go-specific _community_ on X/Twitter](https://twitter.com/i/communities/1685641800449462272)? There are about 1600 members so far.
- [Awesome Slog](https://github.com/go-slog/awesome-slog) is an attempt to bring together links and resources about Go's [new structured logging (slog) feature.](https://go.dev/blog/slog)
- 🐘 [PostgreSQL 16 was released](https://www.postgresql.org/about/news/postgresql-16-released-2715/) late last week.   

[Crafting a Language Server in Go: A VSCode LSP for Lama2](https://journal.hexmos.com/lama2-lsp-journey/) — [Lama2](https://hexmos.com/lama2/index.html) (not to be confused with Meta’s Llama 2 LLM) is a plain-text-driven API manager and REST API client. The team behind this post used Go to create an LSP for Lama2 and have explained how it came together and why Go was a good fit. 

Athreya aka Maneshwar   

[Use Your Database to Power State Machines](https://blog.lawrencejones.dev/state-machines/) — How to build a state machine using Go and your database to have clear states and transitions with concurrency-safe code, along with a consistent audit trail. 

Lawrence Jones   

[A Developer’s Guide to Getting Started with Temporal](https://t.mp/45RuJVA) — Use this Go SDK guide to see how Temporal OSS delivers durable execution for your services and applications. 

Temporal Technologies sponsor   

▶[Discussing Go Templating using Templ](https://changelog.com/gotime/291) 
The Go Time Podcast podcast  

🛠 Code & Tools 

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

[PTerm: A TUI Framework for Go](https://github.com/pterm/pterm) — An extensive library packed with [components](https://github.com/pterm/pterm#printers-components) for improving the output of your command line apps, including things like charts, lists, trees, fancy logging, spinners, and more. [Documentation site.](https://docs.pterm.sh/) 

pterm project   

[static-server: An HTTP Server in Go for Static Content](https://eli.thegreenplace.net/2023/static-server-an-http-server-in-go-for-static-content/) — Eli’s made it as simple as just running a single `go run` command to start serving up your current directory for local testing purposes. He explains more about the how and why in this post. 

Eli Bendersky   

[Encore: The Developer Productivity Platform for Go Backend Development](https://encore.dev/?utm_campaign=dpp&utm_medium=email&utm_source=golangweekly) — Encore automates development tasks to shorten feedback loops, help collaboration, improve quality, and 2x productivity. 

Encore sponsor   

[Maroto 1.0: Generate Entire PDFs within Go](https://maroto.io/#/) — Uses a particularly fluent, grid-based approach. Here’s a [thorough code example](https://maroto.io/#/v2/examples/billing?id=billing) of creating an invoice PDF, along with the resulting output. 

Johnathan Fercher da Rosa   

[u: Adding an 'Unset' State to Go's Types](https://github.com/leaanthony/u) — For when you want to know if a value has been set or not. 

Lea Anthony   

[Goyave: An Elegant Go REST Framework](https://goyave.dev/) — Provides structure, routing, a configuration system, and, importantly, pretty [extensive documentation](https://goyave.dev/guide/basics/routing.html) and sample code. [GitHub repo.](https://github.com/go-goyave/goyave) 

Jérémy Lambert   

- [Resty 2.8](https://github.com/go-resty/resty)
 ↳ Simple HTTP / REST client library.
- [tproxy 0.8](https://github.com/kevwan/tproxy)
 ↳ CLI tool to proxy & analyze TCP connections.
- [zap 1.26](https://github.com/uber-go/zap)
 ↳ Fast, structured, leveled logging library.
- [Skipper 0.18](https://github.com/zalando/skipper)
 ↳ HTTP router and reverse proxy for service composition.
- [Lux 0.20](https://github.com/iawia002/lux)
 ↳ Video download library and CLI tool.
- [gocron 1.34](https://github.com/go-co-op/gocron)
 ↳ A Go job scheduling package comes back to life.
- [compress 1.17](https://github.com/klauspost/compress)
 ↳ Implements several compression algorithms.
- [rueidis 1.0.18](https://github.com/redis/rueidis)
 ↳ High performance Redis client library.    

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           

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
