Software You Can Love: Replacing Zig with Rust

In a previous post I talked about stepping away from Zig both in terms of personal usage as well as in my responsebilities and that is exactly what I want to continue talking about here.


For my Fedora work I ended up asking if anyone was interested in helping out and I ended up with two people who were eager to help out, with future releases I’m gonna give them a chance to try their hands at it and help out where needed to then hopefully pass it off completely at some point.
Because there are already established packages in and outside of Fedora that depend on Zig I didn’t want to just ditch it and make it into a problem for all the other maintainers, even if I have been burned I really shouldn’t become other peoples problem.

For my personal projects I moved to Rust, it was definitely a learning experience with my prior experience with it being a bit sour however I quickly learned how to get things done and how to utilize the wonderful ecosystem to my advantage, doing things that I previously needed to painstakenly reimplement in Zig.

One project I converted was zdir, which was a Web File Browser to look at or download files from a remote server inspired by the defunkt h5ai, which is now called rdir implementing the exact same functionality with the same CGI, FCGI, and HTTP interfaces and embedded assets thanks to rust-embed.

Another one that I barely started before getting fed up with Zig was a CI system, a basic implementation now exists in Rust under the name Basic Minor CI (BMCI) which already has a pretty neat architecture and gave me the chance to try out protobuf, which I have used for the internal communication system, rhai, which is used to faciliate running build commands and serde, which I know has kind of a stranglehold on the Rust ecosystem but was very useful to directly load a toml file into a struct, if an alternative comes out I’ll definitely check it out though.

There are also a dozen other projects I’ve started working on but the last one I would like to mention is forge-mirror which is based on a fork I made of a gitlab mirroring script.
I’ve been disgruntled with Github for a long while but really never knew where to go, especially with dedicated CI services often demanding money, self-hosting usually being a pain and Github Actions being incredibly useful even if it was really annoying so what I did instead is mirror all my projects to Gitlab and even a private Forgejo instance later but at some point I needed to mirror a project back to Github so my fork to include that.
With the need to mirror more and more things I considered writing a replacement for the bash script but always put it off until now, git2 isn’t a perfect drop-in replacement for git but I’ve already learned how to use it with my previously mentioned CI project so I thought why not do it now? It’s far from finished but it is capable of mirroring to github already.

And that is it so far, I was really desperate to find an alternative and I considered a few, including Crystal, nim and more but at the end Rust really won me over.
For the record, I know how widespread Rust become in AI circles but I refuse to personally use any of it and try to avoid any projects that do so.