El equipo de Rolldown acaba de fusionar una corrección que evita que Vite colapse con un error de «instrucción ilegal» (Illegal instruction) en dispositivos Android ARM64 que se ejecutan bajo Termux. Después de diez meses de ver cómo sus builds fallaban estrepitosamente antes de que se ejecutara cualquier código, el problema finalmente ha desaparecido, y la próxima versión de Rolldown en npm funcionará directamente al instalarla.

Por qué era importante el fallo

Termux permite a los usuarios ejecutar un entorno de estilo Linux en teléfonos Android, y una comunidad creciente confía en él como su única estación de trabajo de desarrollo. En Bangladesh, Nigeria e Indonesia, muchos programadores utilizan un teléfono en lugar de un portátil para escribir y empaquetar aplicaciones web. Vite, una herramienta de construcción rápida que impulsa innumerables sitios modernos, es una parte fundamental de ese flujo de trabajo. Cuando Vite intentaba iniciarse, se encontraba inmediatamente con un fallo de «instrucción ilegal», deteniendo el proceso antes incluso de que se analizara cualquier JavaScript. El error no proporcionaba un stack trace ni un registro (log) porque ocurría mientras se cargaba una biblioteca nativa, dejando a los desarrolladores atrapados en un callejón sin salida y sin una ruta clara para una solución alternativa.

El desajuste técnico

La causa raíz residía en una suposición de bajo nivel integrada en el binding nativo de Rolldown. El código esperaba que el procesador admitiera instrucciones ARMv8.1, un conjunto presente en chips más nuevos pero ausente en muchos SoCs de Android ampliamente utilizados, como el Cortex-A53. Cuando un dispositivo que carecía de esas instrucciones intentaba cargar la biblioteca, la CPU lanzaba una excepción de instrucción ilegal.

Complicando las cosas, el código causante residía en una dependencia llamada mimalloc, un asignador de memoria que incluye una bandera de seguridad diseñada para bloquear el uso de instrucciones no compatibles. Esa bandera solo se activaba en entornos de «Linux estándar». Android, aunque utiliza el kernel de Linux, se identifica de forma diferente, por lo que la medida de seguridad nunca se activaba y el error pasaba desapercibido.

Cómo se construyó la solución

El cambio fusionado amplía la comprobación de seguridad de mimalloc para reconocer a Android (y FreeBSD) como plataformas que necesitan la misma protección. Al parchear la biblioteca en lugar de obligar a los desarrolladores a reconstruir o reemplazar paquetes, la solución restaura la compatibilidad sin pasos adicionales para los usuarios finales.

Qué obtienen los desarrolladores

  • No se necesita un paquete de Termux personalizado. La instalación estándar de Rolldown mediante npm ahora descarga un binario que respeta la nueva comprobación de seguridad.
  • Posibilidad de realizar pruebas inmediatas. Una versión de prueba adjunta al pull request abierto permite que cualquier persona con un dispositivo Android ARM64 verifique la solución hoy mismo, mientras se lanza la próxima versión oficial de Rolldown en npm.

Consideraciones restantes

La resolución depende de que los mantenedores de Rolldown publiquen el paquete actualizado; hasta que eso ocurra, los usuarios deben confiar en la versión de prueba.

Qué esperar a continuación

  • Cronograma de lanzamiento de npm. Esté atento al changelog de Rolldown; en el momento en que la nueva versión llegue al registro, un simple npm install rolldown llevará la corrección a producción.

El parche fusionado convierte un estancamiento de meses en una actualización rutinaria, demostrando cómo los datos de uso en el mundo real y los informes persistentes de la comunidad pueden convertir un error «no planificado» en un problema resuelto. Para cualquiera que desarrolle aplicaciones web en un teléfono, la próxima versión de Rolldown finalmente permitirá que Vite se inicie sin hacer colapsar el procesador.