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
Para Windows
Para macOS:
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
Compilando:
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/ .