L'équipe Rolldown vient de fusionner un correctif qui empêche Vite de planter avec une erreur « Illegal instruction » sur les appareils Android ARM64 fonctionnant sous Termux. Après dix mois où les développeurs ont vu leurs builds échouer avant même l'exécution du code, le problème est enfin résolu, et la prochaine version de Rolldown sur npm fonctionnera immédiatement sans configuration supplémentaire.
Pourquoi ce crash était important
Termux permet aux utilisateurs de faire tourner un environnement de type Linux sur des téléphones Android, et une communauté croissante l'utilise comme unique station de travail de développement. Au Bangladesh, au Nigeria et en Indonésie, de nombreux programmeurs utilisent un téléphone plutôt qu'un ordinateur portable pour écrire et packager des applications web. Vite, un outil de build rapide qui alimente d'innombrables sites modernes, est un élément central de ce flux de travail. Lorsque Vite tentait de démarrer, il rencontrait immédiatement une faute « Illegal instruction », interrompant le processus avant même que le JavaScript ne soit analysé. L'erreur ne fournissait ni trace de pile (stack trace) ni journal (log) car elle survenait lors du chargement d'une bibliothèque native, laissant les développeurs face à une impasse sans solution claire.
L'incompatibilité technique
La cause profonde résidait dans une supposition de bas niveau intégrée dans le binding natif de Rolldown. Le code s'attendait à ce que le processeur prenne en charge les instructions ARMv8.1 — un jeu d'instructions présent sur les puces plus récentes mais absent de nombreux SoC Android largement utilisés, tels que le Cortex-A53. Lorsqu'un appareil dépourvu de ces instructions tentait de charger la bibliothèque, le CPU générait une exception d'instruction illégale.
Pour compliquer les choses, le code en cause se trouvait dans une dépendance appelée mimalloc, un allocateur de mémoire qui inclut un indicateur de sécurité conçu pour bloquer l'utilisation d'instructions non prises en charge. Cet indicateur ne se déclenchait que dans les environnements « Linux standard ». Android, bien qu'utilisant le noyau Linux, s'identifie différemment, de sorte que la protection ne s'activait jamais et que le crash passait inaperçu.
Comment le correctif a été élaboré
La modification fusionnée étend la vérification de sécurité de mimalloc pour reconnaître Android (et FreeBSD) comme des plateformes nécessitant la même protection. En corrigeant la bibliothèque plutôt qu'en forçant les développeurs à reconstruire ou à remplacer des packages, le correctif rétablit la compatibilité sans étapes supplémentaires pour les utilisateurs finaux.
Ce que les développeurs en retirent
- Aucun package Termux personnalisé n'est nécessaire. L'installation npm standard de Rolldown récupère désormais un binaire qui respecte la nouvelle vérification de sécurité.
- Tests immédiats possibles. Une version de prévisualisation jointe à la pull request ouverte permet à toute personne possédant un appareil Android ARM64 de vérifier le correctif dès aujourd'hui, en attendant le déploiement de la prochaine version officielle de Rolldown sur npm.
Considérations restantes
La résolution dépend de la publication du package mis à jour par les mainteneurs de Rolldown ; d'ici là, les utilisateurs doivent s'appuyer sur la version de prévisualisation.
À surveiller ensuite
- Calendrier de la version npm. Gardez un œil sur le changelog de Rolldown ; dès que la nouvelle version sera disponible dans le registre, un simple
npm install rolldownapportera le correctif en production.
Le patch fusionné transforme une impasse de plusieurs mois en une mise à jour de routine, illustrant comment les données d'utilisation réelle et les rapports persistants de la communauté peuvent transformer un bug « non prévu » en un problème résolu. Pour tous ceux qui développent des applications web sur un téléphone, la prochaine version de Rolldown permettra enfin à Vite de démarrer sans faire planter le processeur.
