Utiliser nos librairies sur des vieux Macs

Utiliser nos librairies sur des vieux Macs

Ne faites pas ça à la maisonRécemment, un client nous a contactés pour savoir si notre librairie Python était utilisable sur un ancien Mac 32 bits qui fonctionne sous macOS 10.13. La réponse courte est non, car Apple a choisi d'abandonner le support des machines 32 bits en 2018. Mais nous tenons à vous expliquer pourquoi nous ne pouvons plus publier une version de nos librairies qui fonctionne avec ces anciennes machines qui datent donc d'avant 2012.



Apple a plusieurs fois changé de CPU pour les Macs et, il faut le reconnaître, a plutôt bien géré ces transitions sur le moment. Il y a notamment eu la transition des processeurs PowerPC aux processeurs Intel en 2006, puis la transition de l'architecture 32 bits à 64 bits en 2010, et la transition des processeurs Intel aux processeurs ARM en 2020.

Pour chaque transition, Apple a mis à disposition des outils pour publier des applications qui fonctionnent sur les deux architectures. Par exemple actuellement les applications que nous publions comme le VirtualHub fonctionnent à la fois sur les Macs avec un processeur Intel et sur les Macs avec un processeur ARM.

Ce tour de magie est réalisé par Xcode qui génère deux versions de l'application (Intel et ARM) et les regroupe dans un seul et même fichier. Lors de l'exécution du VirtualHub macOS va charger la bonne version.

Quelques années après la transition


Ce mécanisme fonctionne bien pour encourager les gens à adopter la nouvelle plateforme, mais une fois qu'Apple a effectué la transition et ne vend plus de machine avec l'ancien processeur depuis quelques temps, Apple abandonne les outils qui permettent de générer les applications pour les anciens processeurs. En 2010, avec l'arrivée de XCode 4 qui supporte les machines Intel 64 bits, Apple a abandonné le support de l'architecture PowerPC. Quelques années plus tard, en 2018, Apple a abandonné le support pour les processeurs 32 bits.

Le problème, c'est que cet abandon ne se limite pas à cesser de fournir de nouvelles versions des outils. Pour s'assurer que les anciens outils ne soient plus utilisés, la mise à jour de l'outil XCode supprime du disque du développeur les outils nécessaires pour fabriquer des binaires 32 bits. Il s'agit donc d'une mesure active d'Apple pour forcer les développeurs à cesser de supporter les anciennes machines.

Le dilemme du développeur


Quand Apple abandonne le support d'une plateforme, le développeur est dans une situation inconfortable. Soit il suit les recommandations d'Apple en abandonnant aussi ces plates-formes et les clients qui vont avec, soit il ne fait pas la mise à jour des outils de développement et ne supporte pas la génération actuelle des machines vendues aux nouveaux clients.

La meilleure solution serait de garder un double environnement de développement et de publier deux versions de l'application pour supporter toutes les architectures, mais ce n'est même pas toujours possible. Pour prendre l'exemple des Macs Intel 32 bits, il est techniquement possible de télécharger et d'installer Xcode 9 (la dernière version à supporter les processeurs 32 bits), mais cette version ne fonctionne que sur les machines qui acceptent MacOS 10.13, donc celles vendues avant 2018. Supporter les machines Intel 32 bits exige donc d'avoir encore un Mac d'avant 2018 en état de marche...

Notre position face à ce problème


Nous avons toujours essayé de supporter le plus grand nombre de plates-formes, et de versions d'OS ou de langages possible. Par exemple, notre librairie Python fonctionne avec les versions 3.X et avec les versions 2.X du langage, même si ce dernier n'est plus supporté.

Dans le cas des produits Apple, nous faisons notre maximum pour supporter les Macs d'anciennes générations, mais il ne nous est pas possible de maintenir un musée de Macs pour faire tourner les vieilles versions de Xcode. Concrètement, cela veut dire que nos librairies et le VirtualHub fonctionnent sur les Macs équipés de processeur Intel 64 bits et sur les derniers processeurs ARM.

La solution pour l'architecture 32 bits


Toutefois, si vous avez besoin d'utiliser nos libraires sur un Mac Intel 32 bits, cela veut dire que vous avez encore un vieux Mac qui marche et qui permet de faire tourner Xcode 9, donc tout n'est pas perdu. Comme nous fournissons le code source complet, vous pouvez toujours recompiler nos librairies avec XCode 9. Nous avons un article de 2013 qui explique comment utiliser notre librairie C++ dans Xcode, ce qui dans le cas de Python, vous permettra de compiler une DLL libyapi.dylib compatible 32 bits.

Pour le VirtualHub, vous pouvez continuer à utiliser les versions que nous avons publiées avant 2018. Toutes les anciennes versions sont disponibles sur notre site. Si vous avez besoin des nouvelles fonctionnalités, le plus simple est probablement d'utiliser un YoctoHub à la place du VirtualHub.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.