Les Apple Watch Series 4 sont les premières à exploiter un processeur 64 bits, après plusieurs générations à 32 bits. En général, ce changement nécessite que les apps soient compilées à nouveau à partir de leur code source, pour que le fichier créé à cette occasion fonctionne correctement sur la nouvelle architecture. Les développeurs d’app watchOS n’ont rien eu à faire toutefois, leurs apps ont fonctionné dès le premier jour sur la nouvelle montre, et sans aucune intervention de leur part.
La transition a été totalement transparente pour les développeurs. Si Apple n’avait pas indiqué le passage au 64 bits dans la conférence de septembre, on ne l’aurait pas su avant les premières analyses et démontages. Cette transition transparente n’a pas été expliquée par le constructeur, mais elle trouve probablement son origine dans une fonction introduite en 2015 : le Bitcode.
Traditionnellement, les développeurs écrivent le code source de leur app sur un Mac, ils compilent ensuite une app prête à emploi sur cet ordinateur et envoient ce fichier à Apple. Charge ensuite à l’entreprise de distribuer cette même app aux utilisateurs, via les serveurs de l’App Store. Le BitCode ajoute une étape intermédiaire à ce processus : au lieu d’envoyer une app, les développeurs envoient un Bitcode. Ce fichier contient tout ce qu’il faut pour créer une app, mais ce n’est pas une app prête à installer. Les serveurs d’Apple se chargent alors de la compilation et distribuent les fichiers aux utilisateurs via l’App Store.
Ce fonctionnement apporte plusieurs avantages à Apple, qui peut optimiser les apps en fonction des architectures de ses processeurs. Dans une interview sur le podcast ATP, Chris Lattner, le créateur de Swift chez Apple, donnait quelques exemples de ce que l’on pouvait faire avec le Bitcode. Par exemple, le processeur de l’iPhone 5 avait ajouté une instruction spécifique qui permettait d’améliorer les performances et si Apple utilisait le Bitcode à l’époque, elle aurait pu optimiser les apps sans intervention des développeurs.
Dans cette même interview, il indiquait que cette fonction ne pouvait pas tout faire. Le Bitcode ne pourrait pas assurer une transition majeure, par exemple de x86 à ARM, ni même passer de 32 à 64 bits, puisque cela implique de modifier le code source de l’app, ce qui n’est plus possible à ce stade. Dès lors, comment expliquer qu’Apple ait pu l’utiliser pour l’Apple Watch Series 4 et son processeur 64 bits ?
On sait que le processeur dual-core intégré à la puce S4 reprend l’architecture de l’Apple A12 qui équipe les iPhone de 2018. Plus précisément, on sait qu’il s’agit de deux cœurs « Tempest », utilisés sur les iPhone en guise de cœurs économes. En revanche, watchOS reste un système 32 bits dans ses fondations, essentiellement pour limiter sa consommation énergétique. Pour être précis, les apps watchOS 5 sur la Series 4 utilisent l’architecture arm64_32
qui permet de faire tourner du code 32 bits sur un processeur 64 bits.
Si la consommation énergétique a certainement été un facteur dans la décision, on imagine que la possibilité d’utiliser Bitcode pour adapter toutes les apps sans intervention des développeurs a été une motivation importante pour Apple. Le jour où watchOS passera entièrement en 64 bits, il faudra compiler à nouveau toutes les apps, mais le constructeur a le temps de prévoir cette transition et de prévenir en avance, comme il l’avait fait pour iOS.
Le Bitcode est obligatoire depuis le premier jour pour watchOS, ce qui explique aussi la transition simplifiée. Pour les apps iOS, chaque développeur choisit pour le moment de l’utiliser ou d’en rester à la méthode traditionnelle, avec compilation en local d’une app. On imagine qu’un jour, Apple obligera tous les développeurs à utiliser cette solution…
Source : Accidental Tech Podcast n°239