El incidente principal que llevó a la reescritura de Bun fue una acumulación crónica de bugs de estabilidad, incluyendo use-after-free, double-free y memory leaks. Estos problemas surgieron principalmente de la complejidad inherente a la gestión manual de memoria en Zig, especialmente cuando se interactúa con un runtime de JavaScript que utiliza garbage collection. La falta de mecanismos de RAII (Resource Acquisition Is Initialization) como los destructores implícitos en C++ o el trait Drop en Rust, obligaba a un manejo explícito y propenso a errores de los ciclos de vida de la memoria en cada punto de llamada con defer.

Las salvaguardas existentes, como ASAN, builds ReleaseSafe y fuzzing, aunque útiles, solo detectaban los problemas después de que el código ya estaba escrito y, a menudo, después de su integración. El feedback loop era lento y reactivo, no proactivo. La naturaleza ambiciosa del proyecto Bun, que abarca un amplio espectro de funcionalidades (transpiler, bundler, package manager, runtime de Node.js), exacerbó la superficie de ataque para estos errores de gestión de memoria. La mezcla de memoria gestionada por GC y memoria gestionada manualmente, una combinación poco común, no estaba bien soportada por las filosofías de diseño de lenguajes como Zig, que priorizan el control explícito y la simplicidad.

La decisión de reescribir en Rust fue una respuesta directa a la necesidad de un sistema de tipos y un borrow checker que impusieran garantías de seguridad de memoria en tiempo de compilación. Esto transformó la detección de errores de un proceso post-hoc (fuzzing, ASAN) a un proceso pre-compilación, ofreciendo un feedback loop mucho más rápido y efectivo. La reescritura, aunque masiva, se justificó por la incapacidad de resolver sistemáticamente los problemas de estabilidad con el enfoque anterior, que habría implicado un esfuerzo continuo y reactivo para corregir bugs uno a uno. La asistencia de LLMs fue crucial para hacer viable esta migración a gran escala en un tiempo récord, minimizando el impacto en el desarrollo de nuevas características y correcciones de seguridad.