There are endless debates online about Rust vs. Zig, this post explores a side of the argument I don’t think is mentioned enough.
Intro / TLDR
I was intrigued to learn that the Roc language rewrote their standard library from Rust to Zig. What made Zig the better option?
They wrote that they were using a lot of unsafe Rust and it was getting in their way. They also mentioned that Zig had “more tools for working in a memory-unsafe environment, such as reporting memory leaks in tests”, making the overall process much better.
So is Zig a better alternative to writing unsafe Rust?
I wanted to test this myself and see how hard unsafe Rust would be by building a project that required a substantial amount of unsafe code.
Then I would re-write the project in Zig to see if would be easier/better.
After I finished both versions, I found that the Zig implementation was safer, faster, and easier to write. I’ll share a bit about building both and what I learned.
The article title is poorly written but the conclusion is pretty sound: If you’re planning on writing unsafe code, use a language meant for unsafe code. Zig is meant for unsafe code, Rust isn’t.