/zigdnsguide

Implementing a DNS server as a Zig tutorial.

Primary LanguageZigBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Building EmilHernvall’s DNS server in RustZig

When I was looking for a smallish project to start learning Rust, I found a reddit post that suggested EmilHernvall’s DNS server as a great way to get into the language, do something with a specific standard, but also not overwhelming. I found it to be just the right way to get into the language, and to refresh my memory of how DNS works.

As someone who mostly worked in Go the past 5 years, I found rust a bit too uncomfortable for my tastes, and started looking at Zig. After cobbling my path through the language (it could really use some help in the documentation space), I decided to try doing the same DNS server. The result is this guide.

I’m new to Zig, so many of the things here are what I imagine are the idiomatic ways to do things, and I welcome pointers or recommendations to more idiomatic approaches. Like Zig, this guide is a work in progress, and will probably become out of date rapidly as the Zig language and features evolve. I used Zig 0.13.0 for doing this.

If you are completely new to Zig, I suggest you start with the Zig documentation first. Then come back to this when you want to try something more complex.

The guide is broken into 5 main chapters that follow Emil’s: