---
title: "Building an AWK to Go compiler"
publication: "Go Weekly"
issue: 389
published_at: "2021-11-26"
canonical_url: "https://golangweekly.com/issues/389"
---

Plus it's beginning to look a lot like Christmas. |        

#​389 — November 26, 2021 

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

Go Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/nff65zyffs0yguqnk3nw.jpg)](https://menno.io/posts/golang-register-calling/)  

[Faster Software Through Register Based Calling in Go 1.17+](https://menno.io/posts/golang-register-calling/) — A look at how the change to register based calling looks under the hood - and why it improves performance. 

Menno Finlay-Smits   

[AWKGo: An AWK-to-Go Compiler](https://benhoyt.com/writings/awkgo/) — [AWK](https://en.wikipedia.org/wiki/AWK) is a long standing (44 years!) text processing DSL, and the author of GoAWK (an AWK _interpreter_) has gone back the other way to create _AWKGo_ (a transpiler). He explains how it works here, along with some benchmarks against various AWK interpreters. 

Ben Hoyt   [![\](https://copm.s3.amazonaws.com/503ad1e9.png)](https://buttercms.com/golang-cms/?utm_source=gonewsletter&utm_medium=email&utm_campaign=code) 

[ButterCMS Melts into Your App: `ButterCMS.GetPage(“home”)`](https://buttercms.com/golang-cms/?utm_source=gonewsletter&utm_medium=email&utm_campaign=code) — ButterCMS is your content backend. Enable your marketing team to update website + app content without needing you. Try the #1 rated Headless CMS for Go today. Free for 30 days. 

ButterCMS sponsor   

[Go Does Not Need a Java Style Garbage Collector](https://t.co/GFBIXYhofW) — A technical but easily accessible explanation of why Java, in particular, needs a particularly ‘fancy’ GC but a language like Go does not. 

Erik Engheim   

▶[Building a Terminal App with Bubble Tea](https://www.youtube.com/watch?v=j5p5SpqWS8E) — [Bubble Tea](https://github.com/charmbracelet/bubbletea) is a framework for building attractive terminal-based apps with Go. 

Nicolás Parada   

**IN BRIEF:** 

- Long available at `play.golang․org`, the Go Playground is now at [go.dev/play](https://go.dev/play/). The consolidation under the [go.dev](https://go.dev/) domain continues.
- Keep an eye on [golang.christmas](https://golang.christmas/) next Wednesday – it's a Go-themed advent calendar.
- 📖 _The Pragmatic Bookshelf_ has a sale on right now (code is on their homepage) and have books like [Powerful Command-Line Applications in Go](https://pragprog.com/titles/rggo/powerful-command-line-applications-in-go/), [Distributed Services with Go](https://pragprog.com/titles/tjgo/distributed-services-with-go/) and [Go Brain Teasers](https://pragprog.com/titles/d-gobrain/go-brain-teasers/) available if you're itching for a read. _(We have no commercial relationship with them.)_
- On the topic of Black Friday, Jon Calhoun, popular Go blogger, is also doing a Black Friday sale on his video courses: [Web Development with Go](https://www.usegolang.com/) and [Test with Go](https://testwithgo.com/). Or just enjoy his [6 tips for using strings in Go](https://www.calhoun.io/6-tips-for-using-strings-in-go/) for free ;-)      

Jobs  

[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   

[Golang Developer at X-Team (Remote)](https://x-team.com/remote-go-developer-jobs/?utm_source=cooperpress&utm_medium=email-ad&utm_campaign=cooperpress-go&utm_content=go) — Join the most energizing community for developers and work on long-term projects for Riot Games, FOX, Sony, Coinbase, and more. 
X-Team   

[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      

[Testing Shell Commands in Go](https://blog.sergeyev.info/golang-shell-commands/) — If you’re using the `exec` package to run shell commands, you know testing is pretty tricky. Anton created an approach that makes testing easier and works over SSH, as well. 

Anton Sergeyev   

[From JPEG to JFIF via an `io.Writer`](https://nigeltao.github.io/blog/2021/from-jpeg-to-jfif.html) — JFIF is essentially an extension of JPEG in terms of file format. 

Nigel Tao   

▶[Build a Go Serverless App in 5 Minutes with Serverless Stack](https://www.youtube.com/watch?v=mc5LnvzKJtE) — Short and sweet to help you get started fast. 

TutorialEdge   

▶[Maintenance in the Open](https://changelog.com/gotime/207) — Building and maintaining an open-source project incurs a lot of work beyond merely pushing code and writing a README – this week’s Go Time covers long term project maintenance and planning. 

Go Time Podcast podcast  

🛠 Code & Tools  

[Sonic: 'Blazingly Fast' JSON Serializing for Go](https://github.com/bytedance/sonic) — Go’s standard JSON decoder isn’t known for its speed, so that opens up opportunities for libraries like this. It leans on assembly so isn’t the most portable, though. [fastjson](https://github.com/valyala/fastjson) is another to consider. 

Bytedance Inc.   

[imgproxy 3.0: A Standalone Image Resizing and Conversion Server](https://github.com/imgproxy/imgproxy) — If you’ve got a lot of graphics assets on the Web and want to dynamically resize or convert them on the fly without relying on a third party service, this is a Go-powered self hostable option. 

imgproxy   

[Sourcegraph Makes It Easier to Find and Fix Things Across All of Your Code, Faster](https://about.sourcegraph.com/blog/release-anxiety/?utm_campaign=techdebt-ddg-tofu-q42021&utm_medium=newsletter&utm_source=go-weekly) 

Sourcegraph sponsor   

[The Official MongoDB Go Driver 1.8.0](https://github.com/mongodb/mongo-go-driver) — Provides support for features added in MongoDB 5.1. 

MongoDB, Inc.   

[Ferret: A Declarative Web Scraping System](https://github.com/MontFerret/ferret) — Written in Go but you write scripts in a BASIC-esque declarative language. Can be used standalone or within Go itself. Been around a few years now. [Some background info](https://medium.com/@ziflex/say-hello-to-ferret-a-modern-web-scraping-tool-5c9cc85ba183). 

MontFerret   

[Evans: An Expressive Universal gRPC Client](https://github.com/ktr0731/evans) 
Taro Aoki   

[Tally: Go Metrics Interface with Fast Buffered Metrics and Third Party Reporters](https://github.com/uber-go/tally) 
Uber         

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
