Series 4 : la transition vers le 64 bits facilitée par Bitcode ?

Nicolas Furno |

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.

Le Principe du Bitcode : au lieu de soumettre une app prête à l’emploi à Apple (icône violette complète), les développeurs envoient un Bitcode (icône en partie violette) qui sera compilé par les serveurs de l’App Store (au milieu). Extrait du State of the Union 2015.

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…

avatar zarghol | 

Pour l’instant l’utilisation du bit code pour tout les projets ne sont pas possible : certaines librairies utilisées ne sont pas compatible avec, et donc nécessite de le désactiver dans le projet de l’app. Il suffit d’une librairie incompatible pour devoir désactiver le bitcode pour le projet entier. Il faudrait que ces librairies deviennent compatible bitcode pour améliorer la transition.

avatar bugman | 

"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."

Voilà.

avatar iGeek07 | 

@bugman

C'est pas vraiment ça le arm64_32… les architectures 64 ont toujours pu faire tourner des binaires 32 bits…
Le 32 de arm64_32 veut dire que les pointeurs sont 32 bits alors même que les données sont 64 bits (et les instructions du processeur sont 64 bits). Les pointeurs de 32 bits ça veut dire que l'AppleWatch ne peut pas adresser plus de 4Go de mémoire vive (on en est loin ^^), et que les registres pour les adresses sont donc moins gros (32 bits).

avatar Maliik | 

@iGeek07

Merci pour l’info ??

avatar CaptainBinouz | 

Je crois qu'il n'y a que les VRAIS geeks qui vont venir se crêper le chignon ici dans les commentaires ?
En tout cas merci et bravo pour cet article clairement rédigé et accessible même pour moi !

CONNEXION UTILISATEUR