El paso de Bun de Zig a Rust ya habría sido una gran historia de open source sin IA. Bun es un runtime y toolkit serio para JavaScript y TypeScript: package manager, bundler, test runner y APIs compatibles con Node.

Migración de runtime open source guiada por tests y CI

La discusión explotó por el método. En su post del 8 de julio, Jarred Sumner dijo que Bun fue adquirido por Anthropic en diciembre de 2025, que el equipo trabaja allí y que una versión previa de Claude Fable 5 se usó para gran parte del port a Rust. Al día siguiente, Andrew Kelley, creador de Zig, publicó una respuesta dura. Dos hilos de Hacker News con cientos de comentarios convirtieron el rewrite en un debate sobre lenguajes, agentes de IA, confianza, tests, dinero y relaciones dentro del open source.

La lectura fácil es "Rust ganó a Zig". No alcanza. La lectura útil es otra: Bun está probando si un gran proyecto de infraestructura puede intentar una migración que antes se consideraba casi prohibida, siempre que tenga una suite de tests fuerte, feedback del compilador, CI, revisión humana y capacidad de agentes.

Qué cambió

Bun nació en Zig. Sumner reconoce que Zig hizo posible la primera etapa del proyecto. El alcance luego creció: transpiler, minifier, bundler, package manager compatible con npm, test runner tipo Jest, resolución de módulos, cliente HTTP/WebSocket y muchas APIs de Node.

Ese alcance trajo valor y también bugs difíciles. El post de Bun enumera fallos en node:zlib, node:http2, UDP sockets, Buffer, TLS, fs.watch, CSS parser e interacción con JavaScriptCore. Muchos son problemas de memoria: use-after-free, double-free, leaks y cleanup olvidado en caminos de error.

El argumento no es que Zig sea malo. Es que Bun vive en una frontera complicada: garbage collection de JavaScriptCore, recursos nativos, FFI, callbacks asíncronos y memoria gestionada manualmente. En ese contexto, mover más reglas de ownership al compilador tiene sentido.

Rust no elimina todos los riesgos. No vuelve segura la FFI. No borra unsafe. No prueba que los tests cubran todo. Pero puede convertir una parte importante de los errores de lifetime en errores de compilación.

La escala fue excepcional

El PR oven-sh/bun#30412 hace que esto sea concreto: miles de commits, más de dos mil archivos modificados y cerca de un millón de líneas añadidas. GitHub muestra ahora Rust como lenguaje principal del repositorio.

Eso no es un refactor de fin de semana. Es una migración de codebase.

Tampoco fue un rewrite manual normal. Sumner describe workflows con agentes, pruebas pequeñas, errores del compilador, fallos de tests, revisión adversarial y corrección del proceso cuando los agentes se equivocaban. Simon Willison lo llamó un caso detallado de agentic engineering y subrayó la pieza clave: la suite de tests de TypeScript podía funcionar como conformance suite independiente del lenguaje.

Ese es el aprendizaje más portable. Los agentes no eran fiables por ser inteligentes. Eran útiles porque había un oracle externo: compilar, correr tests, comparar comportamiento, repetir.

Qué significa para maintainers

La IA cambió la economía del rewrite, no la responsabilidad. Los humanos diseñaron la migración, miraron los resultados, ajustaron el proceso, decidieron el merge y cargan con las consecuencias. Los agentes convirtieron errores de compilación y tests fallidos en una cola paralela de trabajo.

Eso no hace seguros los rewrites de un millón de líneas. Los hace pensables para pocos proyectos con condiciones muy concretas.

Lo que merece copiarse no es el tamaño del diff. Es la preparación: tests que describen comportamiento, CI rápido, baselines de rendimiento, fuzzing donde importe, migraciones de prueba, revisión del proceso que genera código y una persona responsable del merge.

Lo peligroso es copiar el titular: "los agentes pueden reescribirlo todo". Sin tests fuertes, solo se produce un desorden más grande a mayor velocidad.

Las cautelas siguen ahí

Rust reduce ciertas clases de bugs, pero Bun conserva límites difíciles: JavaScriptCore, librerías nativas, FFI, unsafe y código de runtime lleno de callbacks. El issue sobre PathString::slice y Miri recuerda que un port a Rust también necesita checks de undefined behavior y disciplina de CI.

Los tests también tienen límites. Una gran conformance suite es valiosa, pero no demuestra todos los edge cases de un runtime compatible con Node.

Los usuarios deben comprobar el canal de release. El Rust port ya se describe como usado en Claude Code desde v2.1.181, pero eso no significa que todo usuario de Bun estable esté automáticamente en esa implementación.

La lección open source

Bun no demuestra que Rust venció a Zig. Tampoco demuestra que la IA pueda reescribir cualquier proyecto. Muestra una nueva categoría de evento open source: migraciones de infraestructura asistidas por agentes, públicas, con tests y usuarios reales.

Los grandes rewrites siguen siendo peligrosos. Pero su coste está cambiando. Los proyectos con conformance suites sólidas, CI disciplinado y revisión humana pueden intentar migraciones que antes habrían descartado. Los demás solo harán más caos más rápido.