Lançamento do Zig 0.16.0
(ziglang.org)Foi lançado em 14 de abril de 2026. É uma release construída ao longo de 8 meses por 244 contribuidores, com 1.183 commits acumulados.
I/O como uma Interface — o núcleo desta release
Esta é a maior mudança desta release. Quase tudo que pode bloquear, como sistema de arquivos, rede, temporizadores e sincronização, foi unificado na nova interface std.Io. Assim como a alocação de memória precisa de um Allocator, agora todo código que usa I/O precisa receber uma instância de Io. Com isso, ficou possível criar pacotes reutilizáveis independentemente do modelo de concorrência, e loops de eventos também podem ser tratados adequadamente no nível da linguagem.
Há três implementações:
Io.Threaded— implementação completa baseada em threads. Também oferece suporte a cancellation, e o comportamento permanece igual ao migrar da 0.15.xIo.Evented— implementação experimental baseada em user-space stack switching (green threads)Io.Uring— implementação PoC baseada emio_uringno Linux
Compilador
- Compilation Incremental agora também funciona no backend LLVM — quando há erros de compilação, a etapa LLVM Emit Object é ignorada, então os erros podem ser verificados muito mais rápido
- A resolução de tipos (Type Resolution) foi completamente refeita — o grafo interno de dependências mudou de uma estrutura cíclica para um DAG. Tipos usados apenas como namespace deixam de passar por análises desnecessárias, o que também reduz o tamanho do binário. As mensagens de erro para loops de dependência também mostram muito melhor onde o problema começou
- Backend aarch64 — está sendo desenvolvido ativamente com o objetivo de se tornar o padrão no modo Debug
- O fuzzer embutido ficou mais robusto — foram adicionados fuzzing multiprocessos baseado em AST Smith, Infinite Mode e dump de crash
Mudanças na linguagem (Breaking Changes)
Estas são mudanças que exigem migração:
@cImportfoi movido para o sistema de build- O builtin
@Typefoi removido — substituído por builtins individuais por tipo - Lazy Field Analysis foi adicionada — tipos usados apenas como namespace não passam por análise de campos
- Não é mais possível colocar ponteiros dentro de packed union/struct
- Muitas APIs relacionadas a
posixeos.windowsforam removidas
Biblioteca padrão
heap.ArenaAllocatoragora é thread-safe + lock-free, e o Allocatorheap.ThreadSafefoi removido- A compactação Deflate foi adicionada, e a API de descompactação também ficou mais simples
std.cryptorecebeu AES-SIV, AES-GCM-SIV, Ascon-AEAD e Ascon-HashThread.Pool,GenericReader/AnyReader/FixedBufferStreamforam removidos- A rede no Windows funciona mesmo sem
ws2_32.dll, e a migração para NtDll também foi concluída
Atualizações da toolchain
Foi atualizado para LLVM 21, musl 1.2.5, glibc 2.43, headers do Linux 6.19, headers do macOS 26.4 e libc do FreeBSD 15.0.
Direção da próxima release (0.17.0)
Os principais objetivos são estabilizar o async I/O, tornar o backend aarch64 o padrão no modo Debug, remover a dependência de LLD e implementar um linker com suporte a Compilation Incremental.
2 comentários
Na noite passada, o Zig Language Server também foi lançado na versão 0.16.
Como muitas vezes o language server só saía vários meses depois da linguagem, eu acabava hesitando em usar a versão mais recente; desta vez, porém, uma versão compatível saiu realmente rápido. Graças a isso, ficou mais fácil e mais rápido usar essa nova versão.
Ops, o link...
https://github.com/zigtools/zls/releases