Lanzamiento de Zig 0.16.0
(ziglang.org)Se publicó el 14 de abril de 2026. Es un lanzamiento creado por 244 colaboradores que acumularon 1,183 commits durante 8 meses.
I/O como interfaz — el núcleo de este lanzamiento
Este es el cambio más grande de esta versión. Casi todo lo que puede bloquearse, como sistema de archivos, redes, temporizadores y sincronización, se agrupó bajo la nueva interfaz std.Io. Así como se necesita un Allocator al asignar memoria, ahora todo el código que usa I/O debe recibir una instancia de Io. Gracias a esto, se pueden crear paquetes reutilizables sin importar el modelo de concurrencia, y los event loops ahora también pueden manejarse correctamente a nivel del lenguaje.
Hay tres implementaciones:
Io.Threaded— una implementación completa basada en hilos. También soporta cancelación y mantiene el mismo comportamiento al migrar desde 0.15.xIo.Evented— una implementación experimental con cambio de pila en espacio de usuario (green threads)Io.Uring— una implementación PoC basada enio_uringde Linux
Compilador
- Ahora también hay compilación incremental en el backend de LLVM — si hay errores de compilación, se omite la etapa LLVM Emit Object, así que los errores pueden revisarse mucho más rápido
- Se rehízo por completo la resolución de tipos (Type Resolution) — el grafo interno de dependencias pasó de una estructura cíclica a un DAG. Los tipos que solo se usan como namespaces evitan análisis innecesarios, lo que también reduce el tamaño de los binarios. Además, los mensajes de error por ciclos de dependencia muestran mucho mejor dónde se enredó el problema
- Backend aarch64 — se está desarrollando activamente con la meta de usarlo como valor predeterminado en modo Debug
- El fuzzer integrado se fortaleció — se añadieron fuzzing multiproceso basado en AST Smith, modo infinito (Infinite Mode) y función de crash dump
Cambios del lenguaje (Breaking Changes)
Estos son cambios que requieren migración:
@cImportse trasladó al sistema de build- El builtin
@Typedesapareció — fue reemplazado por builtins individuales por tipo - Se añadió Lazy Field Analysis — los tipos que solo se usan como namespaces no analizan sus campos
- Ya no se pueden poner punteros dentro de
packed union/struct - Se eliminó una gran cantidad de APIs relacionadas con
posixyos.windows
Biblioteca estándar
heap.ArenaAllocatorahora es thread-safe y lock-free, y el allocatorheap.ThreadSafefue eliminado- Se añadió compresión Deflate y la API de descompresión también se simplificó
- Se añadieron AES-SIV, AES-GCM-SIV, Ascon-AEAD y Ascon-Hash a
std.crypto Thread.Pool,GenericReader/AnyReader/FixedBufferStreamfueron eliminados- Las redes en Windows funcionan incluso sin
ws2_32.dll, y también se completó la migración a NtDll
Actualización del toolchain
Se actualizó a LLVM 21, musl 1.2.5, glibc 2.43, headers de Linux 6.19, headers de macOS 26.4 y libc de FreeBSD 15.0.
Dirección del próximo lanzamiento (0.17.0)
Los objetivos principales son estabilizar async I/O, cambiar el backend aarch64 como valor predeterminado en modo Debug, eliminar la dependencia de LLD e implementar un linker compatible con compilación incremental.
2 comentarios
Anoche también se lanzó Zig Language Server 0.16.
Como muchas veces el servidor de lenguaje salía recién varios meses después de que saliera el lenguaje, a menudo daba cosa usar la versión más reciente, pero esta vez de verdad salió muy rápido una versión compatible. Gracias a eso, ahora se puede usar esta nueva versión de forma más rápida y sencilla.
Ups, el enlace...
https://github.com/zigtools/zls/releases