¿Eres desarrollador Zig? Perfecto. Entonces reescribe todo. Async ha vuelto y no le importa tu viejo código

¿Eres desarrollador Zig? Perfecto. Entonces reescribe todo. Async ha vuelto y no le importa tu viejo código

Reader está muerto. Writer también. ¿Y ahora qué vas a hacer?

image

El lenguaje de programación Zig está atravesando la transformación más profunda de toda su historia. Su creador y principal desarrollador, Andrew Kelley, ha introducido cambios que reescriben por completo los componentes clave de la biblioteca estándar —std.io.Reader y std.io.Writer. Estos pasos abren el camino para el regreso de la asincronía al lenguaje, a través de las palabras clave async y await, que anteriormente habían sido eliminadas.

La nueva arquitectura fue presentada en un pull request con el irónico nombre de Writergate. Hace obsoletas todas las implementaciones actuales de lectura y escritura, e introduce nuevas estructuras sin uso de genéricos. Reader y Writer se convierten en el núcleo del nuevo sistema de entrada/salida: más flexible, reutilizable y escalable.

Kelley no lo oculta: los cambios son radicales. Cualquier proyecto que utilice los antiguos flujos I/O tendrá que ser reescrito. Pero subraya que la decisión ha sido meditada, y que la dirección del desarrollo está guiada por la lógica arquitectónica.

A pesar de estar en estado pre-release (la última versión de Zig es la 0.14.1), el lenguaje ya se utiliza en producción. El ejemplo más notable es el runtime Bun, que se basa en Zig. Por eso, Writergate ha generado una fuerte reacción en la comunidad.

Y esto es solo el comienzo. A continuación, el equipo reescribirá los módulos de TLS, HTTP, JSON y bibliotecas de compresión. Todos ellos migrarán al nuevo modelo de I/O y dejarán atrás las API obsoletas. Para facilitar la transición, cada etapa será documentada en un pull request separado.

El regreso de async, await, suspend y resume es el objetivo principal de estos cambios. Estas características ya habían estado presentes en el compilador, pero Kelley decidió eliminarlas por su implementación inmadura. Ahora, gracias a la nueva arquitectura I/O, considera que el momento ha llegado.

En una reciente intervención, Kelley admitió que el primer intento de introducir asincronía no le convenció. Pero ahora el enfoque ha cambiado: las interfaces de I/O proporcionan la base adecuada para dar soporte a escenarios modernos.

Entre las ventajas del nuevo sistema están el control preciso de recursos, facilidad de pruebas y la independencia del sistema operativo. El desarrollador podrá crear paquetes que funcionen en cualquier entorno donde se implemente la interfaz requerida —incluso en un sistema operativo escrito desde cero.

La parte más dolorosa es la migración. Todo lo que interactúe con Reader y Writer tendrá que reescribirse manualmente. Kelley lo dice sin rodeos: “Es difícil. Lo siento. Pero no hay otra forma.”

La comunidad ha reaccionado con opiniones divididas. Algunos creen que Zig por fin tendrá una interfaz I/O reutilizable y completa. Otros expresan preocupación: el lenguaje ya se usa en producción, y estos cambios afectan la estabilidad. Uno de los comentaristas fue directo: “Zig parece atrapado en una beta eterna. ¿Dónde está el 1.0?”

En su respuesta en Hacker News, Kelley mencionó la experiencia del lenguaje Hare. En especial, la herramienta hare-update, que ayuda a adaptar el código a cambios incompatibles. Según él, Zig debería adoptar un enfoque similar.

Todo esto deja claro que el lenguaje entra en una nueva era. Los desarrolladores han decidido dejar atrás los compromisos del pasado y construir una arquitectura sólida, capaz de soportar las exigencias del futuro. El precio es reescribir todo el código. Pero el jefe tiene claro: sin esto, Zig no llegará a ser lo que debe ser. Esta es una parte esencial de la misión por lograr código seguro y desarrollo de calidad en el mundo moderno.

Tu privacidad está muriendo lentamente, pero nosotros podemos salvarla

¡Únete a nosotros!