# Rosetta (logiciel)

Rosetta (basée sur la technique de Transitive) est un traducteur à la volée du jeu d'instruction PowerPC en x86, développé par Apple Inc. pour macOS. Il permet d'exécuter sans modification des logiciels conçus et compilés pour Mac OS X sur PPC sur les ordinateurs Apple à base de processeurs Intel. Son nom fait référence à la pierre de Rosette, l'artefact qui a permis la traduction des hiéroglyphes égyptiens.
Rosetta a été intégré le 10 janvier 2006 dans Mac OS X par Apple pour assurer la transition en douceur des applications entre les ordinateurs Macintosh à base de processeurs PowerPC vers les Mac à base de processeurs Intel x86. Rosetta n'est utilisée que par les applications non universelles (qui ne sont pas compilées pour x86) qui peuvent ainsi fonctionner sur les Mac à processeur Intel x86. À partir de version 10.7 (Lion) de Mac OS, sorti en 2011, Rosetta n'est plus intégré.
Les applications tournant dans Rosetta fonctionnent plus lentement que les applications universelles et sont également jusqu'à 50 % plus gourmandes en mémoire vive.
Mais certaines applications ne peuvent pas fonctionner avec Rosetta, comme Virtual PC de Microsoft qui a besoin d'avoir accès directement au processeur PowerPC. Les applications écrites pour Mac OS 9 ne fonctionnent pas avec Rosetta.
En 2020, Rosetta 2 est introduit en tant que composant de macOS Big Sur, et fait partie de la transition des Mac des processeurs Intel x86 vers Apple Silicon, permettant aux applications conçues pour les processeurs Intel x86 de fonctionner sur les Mac basés sur Apple Silicon.

## Contexte

Les Macintosh ont utilisé plusieurs CPU avec différents jeux d'instructions : les Motorola 68000, PowerPC, Intel x86, et ARM64 avec Apple silicon. Chaque jeu d'instruction est incompatible avec les autres. Chaque changement vers un nouveau processeur nécessite un plan de transition basé sur une couche logicielle permettant d'émuler le jeu d'instructions précédent sur le jeu d'instructions suivant.
Avec le lancement du Power Macintosh, l'émulateur Mac 68K fait partie du système 7.1.2 et des versions ultérieures. Cet émulateur utilise les caractéristiques du PowerPC et est intégré aux niveaux les plus bas du système d'exploitation, dans le nano-noyau de Mac OS. Cela signifie que le nano-noyau est capable d'intercepter les interruptions PowerPC, de les traduire en interruptions 68k, puis d'exécuter le code 68k pour gérer les interruptions. Cela permet d'intercaler du code 68k et PowerPC dans le même fat binary (en).
Les applications dites universelles sont prévues pour tourner de façon optimisée à la fois sur Macintosh PowerPC et x86.

## Rosetta 2

Une nouvelle version, Rosetta 2, a été intégrée à macOS Big Sur pour permettre une nouvelle transition des applications compilées pour x86 vers les nouveaux processeurs Apple Silicon (Apple M1). En plus de la traduction à la demande (just-in-time) présente dans la première version de Rosetta, la version 2 permet la traduction au moment de l'installation. L’amélioration de vitesse apportée par les nouveaux processeurs est telle que, malgré le principe coûteux en performance de traduction des binaires, l’exécution d'une application traduite avec Rosetta 2 peut être plus rapide que l'application source sur processeur Intel.
Pour installer Rosetta 2 sur un Mac Apple Silicon il y a deux façons de faire : soit en utilisant le Terminal pour installer directement le programme, soit en essayant d'ouvrir une application compilée pour x86, cela ouvrira une fenêtre d'installation.