Rosetta 2. A che cosa serve e come funziona?

Rosetta 2 è uno strumento sviluppato da Apple per facilitare la transizione dai Mac con processori Intel (basati su architettura x86_64) ai nuovi Mac con processori Apple Silicon (basati su architettura ARM64). Serve a far funzionare le applicazioni scritte per Intel anche sui nuovi Mac, senza che gli sviluppatori debbano riscriverle subito.

Spiegazione per profani

Rosetta 2 è come un traduttore automatico per programmi. Quando un’app è stata creata per un Mac con processore Intel, Rosetta 2 la “traduce” in tempo reale o al primo avvio in un linguaggio che il nuovo processore Apple Silicon può capire. Così, anche se l’app non è stata aggiornata per il nuovo Mac, funziona comunque quasi come se lo fosse. L’utente spesso non si accorge nemmeno che Rosetta 2 è in funzione.

Spiegazione più tecnica

Rosetta 2 è un dynamic binary translator che converte le istruzioni binarie x86_64 in istruzioni ARM64. Può operare in due modalità:

  1. Traduzione Just-in-Time (JIT): per le applicazioni che generano codice dinamicamente o usano tecniche avanzate come il self-modifying code. In questo caso, Rosetta 2 traduce “al volo”, durante l’esecuzione.
  2. Traduzione ahead-of-time (AOT): per la maggior parte delle app, Rosetta 2 effettua la traduzione del codice Intel al momento della prima esecuzione, creando una versione ARM ottimizzata e salvandola sul disco. Questa traduzione è più efficiente in termini di prestazioni rispetto alla modalità JIT.

Rosetta 2 non supporta alcune istruzioni speciali di x86, come quelle che coinvolgono virtualizzazione o codice kernel (non può eseguire estensioni del kernel x86, ad esempio). Tuttavia, per il codice utente tipico, la compatibilità è molto alta e le prestazioni, anche se inferiori alle app native ARM, sono generalmente più che accettabili.

Come Rosetta 2 fa funzionare le vecchie app su nuovi Mac

[ App Intel (vecchia) ]
           │
           ▼
 [ Rosetta 2 (traduttore) ]
           │
           ▼
 [ Mac con chip Apple Silicon (ARM) ]
           │
           ▼
 [ App funziona normalmente ]
  • Spiegazione: Rosetta 2 prende l’applicazione scritta per vecchi Mac con processore Intel e la traduce in un formato che il nuovo Mac può capire. Il tutto avviene automaticamente, senza che l’utente debba fare nulla.

Pipeline di traduzione di Rosetta 2

[ Binary x86_64 ]
        │
        ▼
┌───────────────────────────────┐
│   Rosetta 2 Translator Engine │
│ ───────────────────────────── │
│  AOT translation (install time) or │
│  JIT translation (runtime)       │
└───────────────────────────────┘
        │
        ▼
[ ARM64 binary / native code ]
        │
        ▼
[ Executed by Apple Silicon CPU ]
  • Dettagli tecnici:
    • Se possibile, Rosetta 2 traduce tutto al primo avvio (Ahead-of-Time).
    • Se serve flessibilità, come con codice generato al volo, esegue una traduzione Just-In-Time.
    • La traduzione è trasparente all’utente, ma può influire leggermente su prestazioni e consumo rispetto alle app native.

Avatar photo

Mac Peer