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.

  • sudo
    link
    fedilink
    arrow-up
    4
    ·
    7 days ago

    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.