Points clés à retenir
- La compilation JIT est cruciale pour les performances de l’émulateur, mais Apple la restreint pour des raisons de sécurité.
- Les émulateurs utilisent JIT pour optimiser les performances en recompilant le code à la volée.
- Les limitations d’Apple peuvent changer, mais pour l’instant, les utilisateurs de l’émulateur doivent attendre ou envisager le jailbreak.
Alors qu’Apple semble avoir ouvert les vannes en ce qui concerne les applications d’émulation sur iPhone, iPad et Apple TV, vous avez peut-être remarqué que certains systèmes sont visiblement absents du menu. Il y a de fortes chances que cela soit dû au fait qu’une fonctionnalité spécifique connue sous le nom de compilation « JIT » est restreinte par les règles de l’App Store.
Qu’est-ce que le JIT ?
La compilation JIT est l’abréviation de compilation « Just In Time ». La compilation est le processus de transformation du code de programmation en code machine. Vous pouvez écrire quelque chose, par exemple, en code C, puis le compiler pour n’importe quel système, qu’il s’agisse d’un processeur x86 comme celui que l’on trouve sur la plupart des ordinateurs Windows ou d’un processeur ARM comme celui que l’on trouve sur les téléphones mobiles et les tablettes.
La compilation JIT, par opposition à la compilation à l’avance, présente de nombreux avantages, notamment l’adaptabilité à ce qui se passe actuellement sur l’ordinateur et à ce que l’utilisateur demande au programme de faire.
Pourquoi les émulateurs ont-ils besoin de JIT ?
Les développeurs d’émulateurs ont constaté que l’approche JIT leur permet d’atteindre des niveaux de performances et d’efficacité qui seraient autrement impossibles. Grâce à la technique JIT, le code CPU émulé du système d’origine peut être recompilé à la volée en code natif pour le système hôte cible. Une fois ce code recompilé, il peut être mis en cache et utilisé la prochaine fois que le même appel est effectué sans recompiler.
Sydney Louw Butler / How-To Geek
Grâce à la méthode JIT, il est possible de créer du code auto-modifiable, ce qui est devenu une approche courante dans l’émulation de jeux vidéo. Cela est nécessaire sur certains systèmes car de nombreux systèmes plus anciens, en particulier les systèmes basés sur des cartouches, chargeaient le code de la cartouche de manière dynamique et apparemment arbitraire en fonction de l’état exact du jeu. JIT permet une gestion essentiellement en temps réel de cette approche. JIT permet également à l’émulateur d’optimiser le code recompilé pour tirer le meilleur parti du système hôte.
Je ne suis pas programmeur, mais même de mon point de vue, JIT semble être un outil extrêmement puissant lorsqu’il est appliqué au problème difficile de l’émulation, d’après ce que j’ai lu.
Pourquoi Apple n’autorise-t-il pas le JIT ?
Malheureusement, un autre type de logiciel qui peut faire un grand usage du JIT et du code auto-modifiable est le malware. Si une application peut générer et exécuter du code pendant son exécution, cela ouvre la porte à toutes sortes de manigances. Ainsi, compiler tout le code à l’avance permet de garantir beaucoup plus facilement que le code est sûr. Apple ne souhaite probablement pas non plus se retrouver dans une situation dans laquelle une application modifie son comportement après avoir été approuvée. Quelque chose qui ne peut pas arriver si le code précompilé est statique.
L’effet d’entraînement est que les logiciels qui s’appuient sur un recompilateur JIT pour fonctionner à des vitesses utilisables ne seront pas approuvés pour l’App Store. C’est la raison invoquée pour absence du populaire émulateur Dolphin.
Bien sûr, il existe une alternative au recompilateur JIT, appelée « interprète », mais elle est plusieurs fois plus lente que la méthode JIT. Ainsi, même si cela fonctionnerait, ce serait injouable. Soit il faudra attendre l’iPhone 30 pour que l’interprète fonctionne assez vite, soit il faut espérer qu’Apple assouplit un peu ses restrictions.
Les choses pourraient encore changer
La scène de l’émulation sur l’App Store grand public n’en est qu’à ses débuts. Apple pourrait encore décider d’assouplir cette exigence pour les émulateurs, ou d’adapter ses politiques pour garantir un niveau de sécurité adéquat pour ces applications. Ce sera probablement quelque chose qui sera réglé entre ceux qui approuvent les applications et ceux qui les développent.
Bien entendu, ce problème n’existe pas pour ceux qui jailbreakent leurs appareils, ce qui leur permet de télécharger n’importe quel code de leur choix. Cependant, je ne recommanderais à personne de faire cela sans une très bonne raison, et pour la plupart des gens, les inconvénients du jailbreak ne valent tout simplement pas la peine de pouvoir jouer à des jeux rétro sur leurs appareils iOS.