Bitcode pourrait simplifier la transition vers ARM, la preuve

Nicolas Furno |

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.

Extrait du State of the Union 2015 où Apple a présenté Bitcode, symbolisé par la deuxième icône en partant de la gauche sur cette capture.

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.

Démonstration de la transition ARM vers X86 en utilisant Bitcode, ici pour une app extrêmement simple.

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.

avatar fousfous | 

Si ça avait été obligatoire dès le début d'iOS ça aurait évité de perdre pleins d'app acheté au passage d'iOS 11 et du 64 bits.
Et je pense que l'obligation du 64 bits pour cette année va faire perdre une grande partie de mes jeux sur macOS (et je préfère pas imaginer pour le passage sur ARM).

avatar Crunch Crunch | 

@fousfous

Tout à fait.

De même, si au lancement du Mac en 1984 en aurait obligé les gens à coder eb Swift ça aurait simplifié les choses aussi ?

Sans rancune ? je comprends ton raisonnement.

Je veux juste dire par-là qu'il est toujours plus facile de comparer les choses d'hier avec celle d'aujourd'hui. Car aujourd'hui on a d'autres outils d'autres évolutions qui nous permettent de voir le passé avec plus de clarté. Ce qui n'est pas le cas lorsque l'on est dans le moment présent et qu'il est quasiment impossible de deviner l'avenir… ?

avatar IceWizard | 

@fousfous
"Et je pense que l'obligation du 64 bits pour cette année va faire perdre une grande partie de mes jeux sur macOS (et je préfère pas imaginer pour le passage sur ARM)."

T'as essayé d'utiliser BOOT CAMP pour utiliser tes jeux 32 bits en version Windows ? Je n'ai pas testé, préférant acheter un PC Gamer avec une vraie carte graphique, pour survivre à l'extinction massive des jeux 32 bits Mac, d'ici Septembre/Octobre.

Boot Camp a l'avantage de ne pas être coûteux, surtout en achetant une clé d'identification officielle Windows à moins de 10 euros sur Amazon. Il ne reste plus qu'à télécharger l'installateur de Windows sur le site de Microsoft, et le tout est joué ..

-----
"Si ça avait été obligatoire dès le début d'iOS ça aurait évité de perdre pleins d'app acheté au passage d'iOS 11 et du 64 bits."

Pour autant que je me souvienne, le BitCode Apple n'existe que depuis 2 ou 3 ans.

avatar fousfous | 

@IceWizard

J'avoue apprécier de ne pas voir planter mon ordi quand je joue, ni me demander si l'installation fonctionnera, jouer sur Mac est beaucoup plus serein (en plus de ne pas avoir besoin de redémarrer pour jouer).
Mais peut-être quand j'aurais un nouveau Mac avec plus de mémoire je tenterais bootcamp (aie la facture en SSD).

avatar Lucas | 

Passionnant et potentiellement source de wooooow

avatar SartMatt | 

Sauf qu'il a fait une transition d'une app ARM vers x86, et non l'inverse...

Or il est toujours bien plus facile de transcoder d'un jeu d'instruction réduit vers un jeu d'instructions complexe (car quasiment toutes les instructions du jeu réduit ont leur pendant exact dans le jeu complexe) que d'un jeu complexe vers un jeu réduit (là, on n'a plus d'équivalence pour toutes les instructions).

Alors bien sûr, Apple pourrait imposer le bitcode pour les applications Mac, et ensuite produire selon les besoins du binaire ARM ou Intel. Mais le binaire Intel risque alors d'être particulièrement mal optimisé, en utilisant relativement peu les instructions complexes du x86...

avatar Florent Morin | 

Si l'App Store exige le bitcode, ça ne fera pas les affaires de Flutter.

avatar frankm | 

Ouvrons les yeux le futur Mac sera une sorte d’iPad

avatar pme | 

Je ne serais pas surpris qu'une version de macos tourne déjà sur iPad Pro, avec l'aide d'une souris et d'un clavier bluetooth.

avatar IceWizard | 

@pme
"Je ne serais pas surpris qu'une version de macos tourne déjà sur iPad Pro, avec l'aide d'une souris et d'un clavier bluetooth."

Evidement, et depuis des années même.. Mais il n'est pas certain que cela sorte pour le public. Beaucoup de développements restent au stade du prototype. La R&D c'est explorer 10 voies différentes pour ne sortir d'un seul produit à la fin.

avatar oomu | 

un tel produit serait un macbook air ARM sans clavier.

autrement : que vous apporterait il de plus qu'un ipad pro avec un ios plus flexible ?

Les "apps" ? mais si tôt que vous dites "macos, mais sur ARM et sur une machine sans clavier physique", vous êtes déjà en train de dire qu'il faut attendre le portage/recompilation/QA/etc des apps.

Aussi: la gamme a déjà des machines à clavier+souris : le macbook

et y a déjà des machines à clavier blutooth optionnel : l'ipad

en gros, vous demandez que ios gère un Curseur. Ce qui est déjà en germe dans iOs (via hack) et qu'Apple pourrait officialiser via une sorte d'inverse de Marzipan mais préfourni dans ios.

ou que MacOS gére des écrans tactiles.

Mais dans quel but ? Quel est VOTRE but ?

avatar oomu | 

Le futur du mac pourrait être une base toujours plus moderne, avec les avantages de LLVM, les avancées de unix, les gains issus des efforts iOs pour les iphones, etc

TOUT en restant le MAC ! Un ordinateur généraliste puissant pour le loisir, le hobby et la production.

Pourquoi êtes vous convaincu que l'un n'est pas possible sans l'autre ?

Pourquoi êtes vous convaincu que pour créer le Cinéma, il faille démonter tous les théâtres ?

ça n'a pas de sens.

Apple pourrait faire un mac simplifié à outrance comme un chromebook arm vaguement "ipad" ou pousser le Mac toujours plus loin

tout est possible, selon ses souhaits et clientèle visée.

-
Le Oomu lui, il ira prendre l'ordi qui lui faut chez le fournisseur qu'il faut. Si c'est Apple tant mieux, si c'est pas Apple tant pis.

CONNEXION UTILISATEUR