Zig Série: A linguagem do futuro

⚡ Introdução, Preparando o Ambiente e Olá, Zig!


Zig Série: A linguagem do futuro


Hoje vamos iniciar também uma série sobre a linguagem de progração: Zig. Trata-se de conteúdos que fui criando ao longo de um tempo e decidi transformar em postagens por fins de registro das coisas que eu fiz. Lógico, que existem inúmeras maneiras de se aprender Zig, mas aqui com pequenas doses semanais fica mais divertido!

Nesse artigo veremos:

  • Introdução
  • Preparando o Ambiente
  • Olá, Zig!


01. Introdução

Zig é uma linguagem de programação de baixo nível, focada em desempenho, segurança e controle explícito do desenvolvedor sobre o sistema. É uma alternativa moderna ao C, com compilação cruzada embutida, ausência de hidden control flow e sem coleta de lixo, utiliza LLVM/C++ como backend para o compilador.

Criada por Andrew Kelley em 2015, o desenvolvimento do Zig começou como resposta às limitações do C e C++, buscando uma linguagem mais segura e previsível para sistemas e ferramentas. A linguagem cresceu com apoio da comunidade, com forte ênfase em interoperabilidade com C e uso no ecossistema LLVM.

  • O compilador Zig pode compilar código C(e também C++) diretamente.
  • É possível compilar Zig sem glibc, facilitando builds estáticos.
  • Zig pode substituir make, cmake e scripts bash como sistema de build.
  • Usado por desenvolvedores de games, sistemas embarcados e ferramentas de sistema.

Detalhes Técnicos:

  • Sem null ou undefined implícitos: tipos opcionais e erros são explícitos.
  • Controle manual de alocação: sem GC ou ARC.
  • Erros são valores: tratamento via try e catch, sem exceções ocultas.
  • Compilador self-hosted (em Zig) desde 2023.
  • Compilação cruzada nativa: zig build-exe --target.

Zig não possui macros nem metaprogramação, mas ainda assim é poderoso o suficiente para expressar programas complexos de uma forma clara e não repetitiva.

Zig é ideal para quem quer controle absoluto do hardware, sem abrir mão de segurança e modernidade.

Software desenvolvido em Zig

  • Tigerbeetle – É um banco de dados distribuído focado em transações financeiras.
  • Sig – É uma implementação do validador Solana otimizada de forma inteligente e escrita em Zig.
  • MicroZig – É um framework para desenvolvimento de sistemas embarcados.
  • ZML – É uma plataforma de inferência de IA de alto desempenho, projetada para simplificar o serviço de modelos, garantindo desempenho máximo e manutenibilidade em produção.

Mais sobre Zig:


02. Preparando o Ambiente para Zig

Para instalar o Zig no seu sistema operacional, você pode(e deve) fazer download direto do site: https://ziglang.org/download/ de acordo com seu sistema.

  • No Windows x86_64(não utilize a branch master e sim a útima versão):
    1. Acesse: https://ziglang.org/download
    2. Baixe o .zip da versão Stable ou Master para Windows.
    3. Extraia o conteúdo em uma pasta (ex: C:\zig).
    4. (Opcional) Adicione o caminho C:\zig à variável de ambiente PATH:
    • Win + S → “Variáveis de ambiente”
    • Em “Path”, adicione C:\zig
      1. Teste no terminal (cmd/powershell):
zig version

Você também pode tentar com gerenciadores de pacotes(não recomendado):

choco install zig # Utilizando Chocolatey
scoop install zig # Utilizando o Scoop
pacman -S mingw-w64-x86_64-zig # Utilizando o msys2
  • Em distros GNU/Linux x86_64(não utilize a branch master e sim a útima versão):
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
  • No macOS você pode também fazer o download ou usar o gerenciador de pacotes ou Ports:
brew install zig # Utilizando o Homwbrew
port install zig # Utilizando o MacPorts

Para desenvolvimento utilize qualquer editor de códigos, aquele que você melhor se adapta, dentre eles:

  • VSCode
  • Vim
  • Neovim Entre outros.

Aqui há uma lista que apesar de o tópico apontar C++, quese todos servem para Zig:


03. Olá, Zig!

const std = @import("std");

pub fn main() void {
    std.debug.print("Olá, {s}!\n", .{"Zig"});
}
// Compilar e Rodar: zig run main.zig
// Compilar: zig build-exe main.zig
// Rodar: ./main

Ou

const print = @import("std").debug.print;

pub fn main() void {
    print("Hello, world!\n", .{});
}

Compile: zig build-exe main.zig && mv main a.out && rm main.o

Ou ainda:

const print = @import("std").debug.print;

pub fn main() void {
    const hello: []const u8 = "Olá, Zig!⚡";
    print("{s}\n", .{hello});
}

Linha a linha do código Zig:

const std = @import("std");
  • Importa a biblioteca padrão do Zig e associa à constante std.
  • @import é uma builtin usada para incluir módulos.
pub fn main() void {
  • Define a função main, ponto de entrada do programa.
  • pub torna a função pública (necessário para que o linker a encontre).
  • void indica que a função não retorna valor.
std.debug.print("Olá, {s}!\n", .{"Zig"});
  • Chama a função print do módulo debug da biblioteca padrão.
  • "Olá, {s}!\n" é o format string. {s} será substituído por uma string.
  • .{"Zig"} é um tuple literal com o valor a ser inserido no {s}.
  • \n quebra a linha.

É um equivalente direto a printf("Olá, %s!\n", "Zig"); em C.



zig


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!