Zig
Una alternativa a C con flujo de control explícito, sin reservas ocultas y con interoperabilidad con C integrada.
27 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 2016
- Creado por
- Andrew Kelley
- Tipado
- Estático y estricto -- una variable sin usar es error de compilación, no advertencia
- Los fragmentos siguen
- 0.16
- Extensiones de archivo
- .zig, .zon
Para qué sirve
Zig es un lenguaje de sistemas construido sobre negativas: sin flujo de control oculto, sin reservas de memoria ocultas, sin preprocesador, sin macros. Una función que reserva memoria recibe un allocator como parámetro, así que quien llama siempre lo sabe; los errores son valores en el tipo de retorno, así que no se pueden ignorar en silencio. El resultado se lee como C con las trampas limadas y el sistema de build incluido.
comptime es la gran idea del lenguaje: el mismo Zig corre en tiempo de compilación, y los genéricos, la reflexión y lo que otros lenguajes hacen con plantillas o macros caen todos de ese único mecanismo. El compilador es además un compilador cruzado de C/C++ de primera clase — zig cc apunta a otros sistemas operativos y arquitecturas de fábrica, y por eso algunos proyectos adoptan la toolchain antes que el lenguaje.
La prueba insignia es Bun, el runtime de JavaScript escrito en Zig, con la base de datos financiera TigerBeetle cerca detrás. El lenguaje sigue pre-1.0 y se mueve: las APIs de la biblioteca estándar cambian entre versiones menores (estos fragmentos siguen la 0.16), un precio que la comunidad acepta por dejar el diseño bien antes de congelarlo.
De dónde viene
Andrew Kelley empezó Zig en 2015, frustrado porque C no tenía un sucesor que siguiera siendo del tamaño de C: Rust y C++ resolvieron seguridad y abstracción creciendo, y Zig apostó a encoger — menos rasgos, cada uno ganándose su lugar. Las versiones tempranas ya tenían la forma: errores como valores, opcionales en vez de null, comptime en vez de un lenguaje de macros.
La Zig Software Foundation se formó en 2020 para financiar el desarrollo con donaciones en vez de un dueño corporativo, y el compilador auto-alojado llegó en la 0.10 (2022), reemplazando el arranque en C++ por Zig compilándose a sí mismo — muchísimo más rápido y la base del trabajo de compilación incremental desde entonces.
El debut de Bun en 2022 puso a Zig en la infraestructura de JavaScript en producción, y TigerBeetle lo mostró en una base de datos construida para la corrección bajo presión. Las versiones 0.11 a 0.16 siguieron reelaborando la biblioteca estándar — entrada/salida y contenedores, sobre todo — mientras el núcleo del lenguaje quedó casi asentado, con el 1.0 prometido solo para cuando de verdad esté terminado.
Cómo se siente teclearlo
Zig se teclea en puntos y pipes: .{} arma tuplas y structs, .campo y .tag se apoyan en la inferencia, las |capturas| atrapan cargas en if, while y for, y todo builtin empieza con @. Los puntos y comas y las llaves son los de C, los identificadores corren en snake_case con funciones en camelCase y tipos en PascalCase, y try cae al inicio de cualquier línea que pueda fallar. El ritmo es de tokens cortos y contundentes con racimos de símbolos en cada desenvolver — ágil cuando los dedos aprenden las formas de punto y llave.
27 pasos en 1 tours, desde lo básico hasta programas completos.