I created Ziege to allow me to have a single zig binary on my path (zls as well) that can delegate all commands to a specific toolchain version. It was also a fun way to get aquainted with Zig in general.
You can clone the source from here. Binaries available on GitHub
The README in the repo should have the latest information, but the cliffs notes are also provided here.
Ziege manages zig toolchains and zls releases on your system (automatically configured by a .zigversion
in your repo root). When used as an alias (either by renaming it, or by symlink) to Zig it will seamlessly dispatch all command line arguments to the correct Zig binary for a project.
Using Ziege should be totally transparent and should be the only tool you need to setup for working with Zig.
There are many different “zig version managers” out there, clearly there is a need to be met, but what makes ziege a bit different is how it was inspired by Bazelisk rather than by tools like rvm or rustup.
By this point, I’m certain there have been even more managers/wrappers/launchers created. The Zig community hasn’t declared an official stance on any of them and honestly, given the influence of matklad I more or less expect to be disappointed and see the community rally around what they do for Tiger Beetle.
If I’m honest, that isn’t the worst outcome by any stretch.
In anycase, Ziege is not a complicated, or even very well designed tool. It’s main feature is that it is very simple.