zigup em Zig — O que é e Como Usar

zigup — O que é e Como Usar

Definição

zigup é um gerenciador de versões para o compilador Zig. Ele permite instalar, alternar e gerenciar múltiplas versões do Zig na mesma máquina. Similar ao rustup para Rust ou nvm para Node.js, o zigup simplifica o fluxo de trabalho quando você precisa trabalhar com diferentes versões do Zig em projetos distintos ou testar código em versões futuras.

Por que zigup Importa

  1. Múltiplas versões: Manter Zig estável e nightly lado a lado.
  2. Facilidade: Instalar e alternar versões com um único comando.
  3. Reprodutibilidade: Garantir que cada projeto use a versão correta.
  4. Atualizações: Acompanhar as versões mais recentes facilmente.

Instalação

Download Direto

# Linux/macOS — baixar o binário
curl -L https://github.com/marler/zigup/releases/latest/download/zigup-x86_64-linux.tar.xz | tar xJ

# Mover para o PATH
sudo mv zigup /usr/local/bin/

# macOS (Apple Silicon)
curl -L https://github.com/marler/zigup/releases/latest/download/zigup-aarch64-macos.tar.xz | tar xJ

Uso Básico

Instalar uma Versão

# Instalar versão estável mais recente
zigup fetch 0.13.0

# Instalar versão nightly (master)
zigup fetch master

# Definir versão padrão
zigup default 0.13.0

Alternar entre Versões

# Ver versões instaladas
zigup list

# Mudar a versão padrão
zigup default 0.13.0

# Verificar versão ativa
zig version

Remover Versões

# Remover versão específica
zigup clean 0.12.0

# Manter apenas a versão padrão
zigup clean --keep-default

Comandos Principais

ComandoDescrição
zigup fetch VERSAOBaixar e instalar uma versão
zigup default VERSAODefinir a versão padrão
zigup listListar versões instaladas
zigup clean VERSAORemover uma versão
zigup run VERSAO -- CMDExecutar comando com versão específica

Exemplo Prático

# Fluxo típico de trabalho

# 1. Instalar a versão estável para trabalho diário
zigup fetch 0.13.0
zigup default 0.13.0

# 2. Testar com versão nightly para verificar compatibilidade
zigup fetch master
zigup run master -- zig build test

# 3. Verificar qual versão está ativa
zig version  # 0.13.0

Armadilhas Comuns

  • PATH: O zigup precisa estar no PATH e o diretório de instalação do Zig também.
  • ZLS compatível: Ao trocar de versão do Zig, atualize o ZLS para a versão correspondente.
  • Nightly muda diariamente: A versão master é atualizada com frequência. Código que funciona hoje pode quebrar amanhã.
  • Espaço em disco: Cada versão do Zig ocupa cerca de 150MB. Limpe versões não utilizadas com zigup clean.

Termos Relacionados

Comparação com Outros Gerenciadores de Versão

O zigup é conceitualmente similar ao rustup (Rust), nvm (Node.js) e pyenv (Python). A principal diferença é que o Zig ainda não tem uma versão 1.0 estável, então alternar entre versões é especialmente comum — desenvolvedores que trabalham no ecossistema frequentemente precisam testar com master para verificar se o código continua compatível com as mudanças mais recentes.

Ao contrário do rustup, o zigup não gerencia toolchains adicionais (como cross-compilation targets) separadamente — o Zig já inclui suporte nativo a cross-compilation em qualquer versão.

Integrando zigup com Projetos

Para garantir que um projeto use a versão correta do Zig, você pode combinar o zigup com o campo minimum_zig_version no build.zig.zon:

// build.zig.zon
.{
    .name = "meu-projeto",
    .version = "0.1.0",
    .minimum_zig_version = "0.13.0",
    .dependencies = .{},
    .paths = .{
        "build.zig",
        "build.zig.zon",
        "src",
    },
}

Quando outro desenvolvedor clonar o repositório e tentar compilar com uma versão mais antiga, o zig build informará que a versão mínima não é atendida.

Instalação no Windows

No Windows, o processo é ligeiramente diferente. O zigup distribui binários nativos para Windows que podem ser baixados manualmente e adicionados ao PATH do sistema:

# PowerShell — baixar e instalar no Windows
$url = "https://github.com/marler/zigup/releases/latest/download/zigup-x86_64-windows.zip"
Invoke-WebRequest -Uri $url -OutFile "zigup.zip"
Expand-Archive zigup.zip -DestinationPath "$env:LOCALAPPDATA\zigup"
# Adicionar $env:LOCALAPPDATA\zigup ao PATH do sistema

Boas Práticas

  • Fixe a versão de produção: Em projetos sérios, evite usar master como versão de produção. Prefira uma versão estável específica como 0.13.0.
  • CI/CD consistente: Em pipelines de CI, use zigup fetch X.Y.Z && zigup default X.Y.Z para garantir que o ambiente de build seja idêntico ao de desenvolvimento.
  • Limpeza periódica: Execute zigup clean --keep-default regularmente para liberar espaço em disco, já que cada versão ocupa ~150MB.
  • ZLS compatível: Sempre que trocar de versão do Zig com zigup, atualize o ZLS para a versão correspondente. Um ZLS de versão diferente pode fornecer diagnósticos incorretos.

Tutoriais Relacionados

Continue aprendendo Zig

Explore mais tutoriais e artigos em português para dominar a linguagem Zig.