Zig é uma linguagem de programação de sistema compilada, de uso geral , tipada, projetada por Andrew Kelley. A linguagem é projetada para “robustez, otimização e facilidade de manutenção”, suportando genéricos em tempo de compilação e reflexão , compilação cruzada e gerenciamento de memória manual .
Um dos principais objetivos da linguagem é melhorar a linguagem C.
O compilador de estágio 1 é escrito em Zig e C++ ,usando LLVM 11 como back-end, suportando muitos de seus alvos nativos.
O compilador é open source sob a licença MIT .
O compilador Zig expõe a capacidade de compilar C e C++ de forma semelhante ao Clang com os comandos “zig cc
” e “zig c++
” .
Zig está disponível para quase todos os sistemas operacionais e distribuições Linux, veja abaixo como instalar com o seu gerenciador de pacotes ou Baixando direto do site e instalando.
Recomendo por se tratar de ter atualizações constantes, eu tive bastante problemas em usar gerenciadores de pacotes que não reconhecem as novas implementações.
Faça o download direto da página: https://ziglang.org/download/.
Exemplo em distros GNU/Linux
x86_64
, o*
é a versão/commit, copie o link que desejar:
wget -q https://ziglang.org/builds/zig-linux-x86_64-*.tar.xz
tar Jxvf zig-linux-x86_64-*.tar.xz
mkdir -p ~/.local/bin
mv zig-linux-x86_64-*/ ~/.local/bin/zig
echo 'export PATH="${PATH}:${HOME}/.local/bin/zig"' >> ~/.bashrc
source ~/.bashrc
zig version
emerge dev-lang/zig # Gentoo, Funtoo,...
sudo pacman -S zig # Arch Linux, Artix, ...
sudo xbps-install -Su zig # Void Linux
sudo dnf install zig # Fedora, Red Hat, ...
nix-env -i zig # NixOS
# Ubuntu e qualquer distro que possui o snap instalado
snap install zig --classic --beta
Para Windows
choco install zig # Utilizando Chocolatey
scoop install zig # Utilizando o Scoop
pacman -S mingw-w64-x86_64-zig # Utilizando o msys2
Para macOS:
brew install zig # Utilizando o Homwbrew
port install zig # Utilizando o MacPorts
Você também pode compilar o código fonte do repositório ou instalar manualmente um binário somente para seu usuário sem usar sudo
ou root
:
Nesse exemplo vamos fazer o download daqui da versão 0.8.1 da branch master/main para arquitetura x86_64.
Criando um Hello, world!
vim main.zig
const std = @import("std");
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
try stdout.print("Hello, {s}!\n", .{"world"});
}
Compilando:
zig build-exe main.zig
E rode o binário com o mesmo nome do arquivo, nesse caso:
./main
, a saída será:Hello, world!
.
Comentários em Zig é similar à C++ , usando // comentário
.
Zig possui diversas particularidades para utilizar tipos estáticos e entre outros, para mais detalhes e documentação visite https://ziglang.org/documentation/master/ .