Release: z2z v0.1.0

Changelog

This is the first release of z2z. You may view the changelog on GitHub. Subsequent changelogs will be provided here and on GitHub in the release notes.

Synopsis

z2z is a peer-to-peer (p2p) networking application that I started on several months ago. I wanted to create something simple in Zig in an effort to learn more about the language. I’ve been watching a lot of Low Level (formerly Low Level Learning) on YouTube, and he always says that the best way to learn a new language is to try to write an HTTP server or something to do with networking because it helps you become familiar with the language’s syntax, standard library (if it has one), and the low level system calls for setting up threads, ports, and sockets. I have heard a lot about the up-and-coming Zig programming language, so I wanted to create something to help understand the language better; thus, z2z was born.

I stopped developing it after awhile because I got to what I thought was an impasse: Zig removed support for asynchronous programming in newer versions of their compiler. I didn’t think it was possible, then, to use zig-aio to open up the sockets necessary to create a p2p network. I gave up and started working on other projects in the meantime.

This past weekend, I decided to circle back to it to see if I could get it working. Zig recently released v0.14.1 of their compiler, and while I don’t think they added back async support, I do think that this version of the compiler addressed some issues with the initial approach I was taking. I also found another p2p application that was written in Zig on GitHub, and I was able to refactor my app to mirror this implementation. Shout out to zig-p2p for allowing me to finally get this project running.

I will probably not release a lot of updates to this application in the future just because I have other projects that I want to complete first, but I may get around to adding new features and interactive TTY commands at some point. The product should work out of the box; installation instructions and usage documentation is available on its GitHub page. I may update the v0.1.0 GitHub release to include more prebuilt binaries for different build types and operating systems; as of now, I have one prebuilt binary that was built in ReleaseSafe for x86_64 Linux. I have this in the README, but it should be noted that Windows is NOT supported at this time. I am not planning on adding Windows support at all because, quite frankly, I hate developing for Windows, especially when it comes to threading and socket programming.

For now, z2z v0.1.0 is published and ready to be tested. I don’t ever anticipate this being an application that provides any real value, so I’m going to label this as just an educational utility. Maybe one day I’ll make it more serious and production-ready, but for now, it should be treated as just a hobby project along with most of the other applications I have produced. Feel free to leave feedback or open issues/PRs on the GitHub.