Microsoft essaie depuis plusieurs années de proposer des ordinateurs sous Windows avec un processeur ARM sans grand succès commercial, car très peu d'applications sont compatibles avec cette architecture. Pour résoudre ce problème, Microsoft a ajouté un émulateur dans Windows 11 qui permet d'exécuter des applications prévues pour fonctionner sur processeur Intel. Nous avons voulu vérifier que nos applications et librairies fonctionnent correctement avec cet émulateur. C'est le cas, mais nous avons profité de l'occasion pour ajouter le support natif pour les processeurs ARM.
Comme nous l'avons dit, Windows 11 ARM inclut un émulateur qui permet d'exécuter n'importe quelle application qui est prévue pour fonctionner sur un processeur Intel (32 ou 64 bits). Nous avons, dans un premier temps, vérifié que nos applications et nos librairies fonctionnaient correctement avec cet émulateur.
La bonne nouvelle, c'est que tout fonctionne sans problème. Tant la version 32 bits que la version 64 bits de VirtualHub fonctionnent parfaitement sur notre Surface Laptop équipé d'un processeur ARM (Snapdragon® X Plus). L'émulateur gère correctement les ports USB, sans latence perceptible. À moins d'aller regarder dans le Task Manager, il est impossible de deviner qu'il ne s’agit pas d'une application native.
La version Intel 64 bits de VirtualHub fonctionne sous ARM grâce à l'émulateur
Pareils avec les exemples de nos librairies de programmation. Tout fonctionne comme prévu. Si vous avez des applications qui utilisent des modules Yoctopuce, il y a 99.9% de chance que tout fonctionne sans nécessiter aucun changement.
Nous aurions pu arrêter là nos tests, mais comme nous sommes un peu tâtillons, nous avons décidé de profiter de l'occasion pour ajouter le support natif pour Windows 11 ARM.
Le support natif
Le fait de fournir un binaire dédié à ARM est plus efficace, car le processeur peut exécuter directement les instructions de l'application sans avoir à utiliser l'émulateur pour "traduire" les instructions Intel en instruction ARM. Il en résulte généralement une exécution plus rapide et moins énergivore.
Nous avons donc décidé de proposer des binaires ARM pour VirtualHub v2 ainsi que pour les libraires de programmation C++, C#, Python et Java.
Pour VirtualHub v2, le binaire ARM se trouve dans le sous-répertoire arm64. Attention à ne pas le confondre avec le binaire Intel 64 bits qui se trouve dans le sous-répertoire amd64. Si vous avez un doute, vous pouvez consulter les propriétés de l'exécutable.
Un clic droit sur VirtualHub.exe permet de déterminer pour quel processeur l'exécutable est prévu.
Pour les libraires de programmation C++, C#, Python et Java, nous avons inclus les binaires ARM dans l'archive et adapté les makefiles ainsi que les projets pour qu'ils puissent générer un binaire ARM.
Les projets Visual Studio des exemples C++ permettent de compiler une version ARM
Notez que les libraires TypeScripts, Ecmascript et PHP supportent automatiquement la plateforme ARM, car c'est la machine virtuelle qui exécute l'application qui compile le code source. Pour TypeScript et Ecmascript, cela dépendra du browser qui est utilisé. Si le browser est une version compilée pour processeur Intel, l'émulateur sera utilisé. Au contraire, si le browser est compilé pour ARM, le code sera exécuté directement.
Enfin, nous n'avons pas fait l'effort de proposer des versions natives de nos libraires de programmation Delphi et Visual Basic, car ces langages sont en perte de vitesse. Mais il est toujours possible d'utiliser les versions Intel de ces librairies sur Windows 11 ARM grâce à l'émulateur.
Conclusion
Microsoft semble enfin avoir trouvé une solution viable pour faire fonctionner Windows sur processeur ARM. Pour la première fois, le portage d'applications sur cette nouvelle plateforme n'est pas un casse-tête. L'émulateur intégré fonctionne très bien et ne semble pas être trop pénalisant d'un point de vue des performances. Et si le développeur décide de proposer une version optimisée pour ARM, le travail pour porter une application sur cette plateforme est très simple.
Nous sommes curieux de voir si les consommateurs vont suivre et si cette architecture deviendra la norme. Dans tous les cas, nous sommes prêts.