Skip to content

Comment on Using Zig in our incremental Turborepo migration from Go to Rust

Comments

Weird.. their answer is to ship a hybrid Go+Rust binary sandwiched with Zig. It's a like a who's who keyword stuffing technical blog post with vomit inducing technical decisions.

They're not using the Zig language. They're using Zig's fantastic packaging of clang with many versions of glibc for easy cross-compilation.

Cross-compilation is the weakest point of Cargo. It depends on a C linker, but can't be bothered to configure a compatible linker. The default linker is for the host OS only, and completely helpless about dependencies, so the out-of the-box experience in Cargo is a wall of errors and disappointment.

Zig build helpfully does all the configuration legwork, and bundles all the required binaries.

So let me get this straight...

They went through a phase of, "Let's rewrite it in Rust (from Go)!" but it got complicated, because reasons. One of their reasons is Cargo's cross compilation is bad so they decide to use Zig's toolchain to compensate for Cargo's inferior tool chain.

Seems like they should have just stuck with Go.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.