# Rosetta (software)

Rosetta è un emulatore software sviluppato dalla Apple Inc. che permette alle macchine dotate di processori x86 Intel di utilizzare il software compilato per PowerPC e alle macchine dotate di processori Apple Silicon di utilizzare il software compilato per processori Intel. Il nome è un chiaro riferimento alla Stele di Rosetta, la stele che consentì agli archeologi la decifrazione dei geroglifici egizi. L'emulatore fa uso della tecnologia QuickTransit per ottenere elevate prestazioni durante l'emulazione del processore PowerPC; questa tecnologia utilizza una tecnica di ricompilazione dinamica molto efficiente.
Il programma è stato incluso nel sistema operativo a partire dalla versione Mac OS X Tiger. Nella versione OS X Snow Leopard, il programma non viene installato di default, ma deve essere esplicitamente installato dall'utente. Nella versione OS X Lion, il supporto al programma è stato dismesso e il programma non è più disponibile.
Nel 2020 è stata rilasciata una nuova versione del software, Rosetta 2, che farà lo stesso tipo di lavoro, ma traducendo le applicazioni per Intel in Universal Binary, da macOS Big Sur, sui Mac dotati di processore Apple Silicon.

## Compatibilità

La prima versione di Rosetta poteva eseguire unicamente codice compilato per processori G3. Programmi che utilizzano istruzioni G4, G5 o AltiVec non potevano essere gestiti da Rosetta. La versione invece integrata nei primi MacIntel commerciati supporta AltiVec e G4. La filosofia di Apple è che i programmi che fanno uso di un'elevata potenza di calcolo non devono fare uso di emulatori ma devono essere ricompilati per utilizzare al meglio i processori presenti sulla macchina. Rosetta è progettato per essere utilizzato con programmi che non eseguono un numero elevato di operazioni (tipo word processor). Applicazioni che manipolano elevate moli di dati (come i programmi di Ray tracing) vanno ricompilate in Universal binary. Il programma non è dotato di un'interfaccia grafica dato che agisce in modo trasparente all'utente, entrando in funzione quando un sistema x86 cerca di eseguire codice PowerPC.
Rosetta non funziona nei seguenti casi:
* Applicazioni progettate per Mac OS 8 o Mac OS 9;
* Screensaver;
* Pannelli di preferenze del sistema;
* Applicazioni che richiedono processori G5;
* Applicazioni che utilizzano direttamente una o più estensioni del kernel;
* Estensioni del kernel;
* Applicazioni in Java oppure applicazioni che utilizzano le librerie Java;
Queste limitazioni sono dovute al funzionamento del programma. Rosetta viene eseguito nello spazio utente del sistema operativo e quindi non è in grado di interagire con le funzioni a basso livello di quest'ultimo. Questa scelta ha permesso ad Apple di semplificare la fase di sviluppo del programma e di ridurre eventuali problemi di sicurezza. Un programma eseguito da Rosetta con eventuali problemi di sicurezza non potrebbe agire al livello di sistema operativo: i problemi di sicurezza rimarrebbero confinati a livello utente.
L'emulatore Mac 68K, che Apple sviluppò per la transizione dalla macchina Motorola 68000 alle macchine PowerPC, invece non era dotato di queste limitazioni. Quell'emulatore era integrato a un livello molto basso del sistema operativo e quindi non era dotato delle limitazioni di Rosetta. Quella fu una scelta dovuta alla necessità, quando Apple presentò le macchine basate su PowerPC, la maggior parte del sistema operativo non era convertito in codice PowerPC e quindi l'emulatore veniva utilizzato per eseguire anche buona parte del sistema operativo. Quando vennero presentate le macchine Intel, il sistema operativo macOS invece era già stato convertito in codice x86 e quindi non era necessaria la presenza di un emulatore installato a un livello così basso del sistema operativo.