Site Local

Portal de notícias de tecnologia

Zig 0.17 reformula o sistema de build, melhora a compilação incremental e remove sintaxes antigas

Versão traz Build Server Protocol para IDEs e compilação incremental no Linux x86_64. A mudança no @bitCast pode quebrar código sem aviso.

Zig 0.17 reformula o sistema de build, melhora a compilação incremental e remove sintaxes antigas

A Zig Software Foundation lançou em 2 de outubro de 2026 a versão 0.17.0 da linguagem Zig. Segundo o anúncio oficial, foram cinco meses de trabalho, 206 contribuidores e 925 commits. As notas de lançamento explicam que o ciclo, previsto para ser mais curto, acabou sendo grande: o sistema de build foi reformulado e o linker ELF evoluiu a ponto de a equipe esperar que a compilação incremental funcione para todos no Linux x86_64. A LWN registrou o lançamento em 3/10. O Zig continua antes da versão 1.0, e mudanças incompatíveis entre versões são esperadas.

O que há de novo

Com a opção --listen=-, o sistema de build passa a servir o Build Server Protocol, que permite a ferramentas externas, como IDEs, acompanhar e controlar o grafo de build enquanto ele roda. Elas podem consultar etapas, opções e dependências, ser avisadas quando uma etapa começa ou termina, com erros e arquivos gerados, e pedir builds específicos. A compilação incremental, que permite recompilar quase instantaneamente após uma mudança, teve muitos bugs corrigidos e ganhou bom suporte no novo linker ELF. A gramática da linguagem passou a ter especificação formal, usada em testes de fuzzing contra o parser.

Mudanças que exigem migração

  • @bitCast mudou de definição para arrays e vetores. As notas alertam que isso pode quebrar código sem erro de compilação e recomendam auditar esses usos.
  • @cImport, obsoleto desde a 0.16, foi removido. A etapa TranslateC do build fica obsoleta em favor do pacote oficial translate-c, adicionado com zig fetch --save git+https://codeberg.org/ziglang/translate-c.
  • A sintaxe de multiplicação de arrays (a ** b) foi removida em favor de @splat.
  • A captura em errdefer |err| não é mais permitida; a migração sugerida é dividir a função em duas e tratar o erro com catch.
  • A sintaxe void{} e o tipo i0 foram removidos.

Toolchain

O Zig 0.17 usa o LLVM 22 e mantém desligada a vetorização de laços, para contornar uma regressão. A correção já foi incorporada ao LLVM, mas só chega com a migração para o LLVM 23 prevista para o Zig 0.18. A versão distribui o musl 1.2.5 com correções retroportadas, glibc 2.44 e headers do Linux 7.2 e do macOS 27. A compilação de recursos do Windows vai sair do compilador e virar um pacote externo na próxima versão; as funções correspondentes do std.Build já estão marcadas como obsoletas.

Para quem mantém projetos em Zig, o ponto mais sensível é o @bitCast: como a quebra pode ser silenciosa, vale revisar os usos com arrays e vetores e rodar os testes antes de adotar a nova versão.

Fontes

Imagem destacada: ilustração gerada por computador, sem valor documental.

Deixe comentário

Seu endereço de e-mail não será publicado. Os campos necessários são marcados com *.

Fique por dentro

As principais notícias de tecnologia, todos os dias

Siga o portal nas redes sociais e acompanhe IA, cibersegurança, cloud, hardware e o mercado de tecnologia em primeira mão.