Depuis 2015, les développeurs doivent parfois envoyer un fichier Bitcode pour publier leur app sur l’App Store. Ce fichier n’est pas une app compilée et prête à l'emploi, c’est un intermédiaire entre le code source et l’app qui contient toutes les informations nécessaires à la compilation. Bitcode est disponible sur iOS, tvOS et watchOS, et même obligatoire pour cette dernière.
Pourquoi est-ce qu’Apple veut ce fichier intermédiaire plutôt qu’une app qu’elle peut envoyer directement aux clients de l’App Store ? Parce que ce fichier Bitcode peut servir à compiler une nouvelle version de l’app sans aucune intervention des développeurs. Concrètement, cette fonction a déjà servi au moins une fois, pour l’Apple Watch Series 4. Ce modèle sorti l’an dernier est la première montre d’Apple à intégrer un processeur 64 bits, les générations précédentes se contentaient d’un processeur 32 bits.
Pour profiter de cette transition, les apps qui tournent sur l’Apple Watch devaient être compilées en 64 bits. Sans Bitcode, les développeurs auraient dû tous soumettre une mise à jour avec une nouvelle version compilée, un processus qui prend du temps. Grâce à cette fonction, Apple a pu le faire de son côté et offrir dès le premier jour l’intégralité des apps watchOS compilées en 64 bits.
Depuis la présentation de Bitcode, on se demandait si cette fonction pourrait servir dans l’éventualité d’une transition des Mac d’Intel à ARM. Pour autant, il subsistait un doute sur la capacité d’Apple à réaliser des transitions aussi importantes sans accès au code source. Chris Lattner, le créateur de Swift, avait même indiqué dans une interview qu’un passage de x86, l’architecture Intel, à ARM était trop complexe pour ce fichier intermédiaire.
Il en faut plus pour décourager Steve Throughton-Smith, développeur et bricoleur de talent, qui s’est mis en tête de vérifier si Bitcode ne pourrait pas convenir malgré tout. Après quelques heures, il a réussi à convertir une app iOS ARM très simple en une app macOS x86 sans toucher au code source, prouvant que Bitcode pouvait suffire. En théorie, Apple pourrait ainsi « convertir » automatiquement des apps Intel en apps ARM sans intervention de leurs créateurs, mais il manque plusieurs éléments pour que ce scénario soit réalisable.
Pour commencer, il n’est pas possible d’utiliser Bitcode pour soumettre des apps sur le Mac App Store. Apple pourrait régler ce problème avec macOS 10.15 et peut-être même rendre cette fonction obligatoire pour tous les développeurs ? Quatre ans après sa présentation, Bitcode est toujours optionnel sur iOS et tvOS, mais on peut supposer que cela changera aussi un jour.
Steve Througton-Smith note aussi que la version actuelle de Bitcode n’est pas optimale pour une telle transition. D’ailleurs, son exemple se limite à un code « Hello World » très simple et ne fonctionne pas pour les apps complètes. Naturellement, c’est aussi quelque chose que la firme pourrait changer cette année en introduisant une mise à jour.
Si tout va bien, Apple pourrait mettre en place cette année tout ce qu’il faut pour faciliter la transition vers ARM dans un an ou deux, comme le veulent les rumeurs. En agissant ainsi, l’entreprise pourrait éviter une annonce en amont, comme elle l’avait fait pour la transition vers Intel dans les années 2000. À cette époque, il s’agissait de prévenir tous les développeurs pour qu’ils compilent de nouvelles versions de leurs apps. Si la firme peut compiler elle-même ces versions, elle n’a plus besoin de les prévenir aussi tôt.
La démonstration de ce développeur prouve autre chose. Bitcode pourrait aussi permettre à Apple de convertir des apps iOS en apps macOS grâce à Marzipan, là encore sans intervention des développeurs. Cela ne fonctionnerait que pour les apps qui utilisent cette fonction, mais ce pourrait être une solution pour enrichir le catalogue du Mac App Store à peu de frais.
En attendant, vous pouvez jouer avec les découvertes de Steve Throughton-Smith en utilisant ce script et les instructions données sur son blog.