Zig
Zig is a fairly new (they haven't even reached 1.0 yet) language. Like Rust and Swift, it uses LLVM for the final stage.
The latest release is 0.8.1, but it seems they recommend installing nightly.
wget https://ziglang.org/builds/zig-linux-x86_64-0.9.0-dev.1083+9fa723ee5.tar.xz
sha256sum zig-linux-x86_64-0.9.0-dev.1083+9fa723ee5.tar.xz
tar xf zig-linux-x86_64-0.9.0-dev.1083+9fa723ee5.tar.xz
rm zig-linux-x86_64-0.9.0-dev.1083+9fa723ee5.tar.xz
ln -s zig-linux-x86_64-0.9.0-dev.1083+9fa723ee5 zig
Similarly, there is documentation for 0.8.1, but they recommend just reading master.
Zig also has the zig language server, zls.
wget https://github.com/zigtools/zls/releases/download/0.1.0/x86_64-linux.tar.xz
tar -xf x86_64-linux.tar.xz
rm x86_64-linux.tar.xz
mv x86_64-linux zls-x86_64-linux
I'm going to put links to zig
and zls
in a place that's already in my path.
cd ~/.local/bin
ln -s /home/tim/zig/zig/zig
ln -s /home/tim/zig/zls-x86_64-linux/zls
❯ zig version
0.9.0-dev.1083+9fa723ee5
Let's try it!
cd ~/zig
mac hello-world
zig init-exe
Oh, mac is "make and change"
❯ type mac
mac is a function
mac ()
{
mkdir -p -- "$1" && cd -- "$1"
}
❯ zig build run
info: All your codebase are belong to us.
Now configure Emacs for zig.
M-x package-install RET zig-mode RET
This is configured in my ~/.emacs.d/config/programming/zig.el file.
(require 'lsp-mode)
(add-hook 'zig-mode-hook #'lsp-deferred)
Here's a shot of Emacs with zig-mode in action
This is word-generator.zig from Zig By Example.