Rosetta es un traductor binario dinámico desarrollado por Apple Inc. para macOS , una capa de compatibilidad de aplicaciones entre diferentes arquitecturas de conjuntos de instrucciones . Permite una transición a hardware más nuevo, traduciendo automáticamente el software. El nombre es una referencia a la Piedra Rosetta , el artefacto que permitió la traducción de los jeroglíficos egipcios . [2]
La primera versión de Rosetta, introducida en 2006 en Mac OS X Tiger , fue parte de la transición de Mac de procesadores PowerPC a procesadores Intel , lo que permitió que las aplicaciones PowerPC se ejecutaran en Macs basadas en Intel . El soporte para Rosetta se abandonó con el lanzamiento de Mac OS X Lion (10.7) en 2011.
Rosetta 2, presentado en 2020 como un componente de macOS Big Sur , es parte de la transición de Mac de los procesadores Intel a Apple Silicon , lo que permite que las aplicaciones Intel se ejecuten en Mac basadas en Apple Silicon . [3]
Macintosh ha utilizado CPU con varias arquitecturas de conjuntos de instrucciones diferentes : la serie Motorola 68000 , PowerPC , Intel x86 y ARM64 en silicio de Apple . Cada arquitectura de conjunto de instrucciones es incompatible con su predecesora, lo que requiere un plan de transición basado en una capa de software para emular el conjunto de instrucciones anterior en la siguiente.
Con el lanzamiento de Power Macintosh , el emulador Mac 68K es parte de System 7.1.2 y posteriores. Este emulador utiliza características de PowerPC y está integrado en los niveles más bajos del sistema operativo, integrado con el nanokernel de Mac OS . Esto significa que el nanokernel puede interceptar interrupciones de PowerPC, traducirlas a interrupciones de 68k (luego hacer un cambio de modo mixto, si es necesario) y luego ejecutar código de 68k para manejar las interrupciones. Esto permite que el código de 68k y PowerPC se intercalen dentro del mismo binario fat .
Apple lanzó Rosetta en 2006 tras la transición de los Mac a procesadores Intel desde PowerPC. Se integró en Mac OS X v10.4.4 "Tiger", la versión que se lanzó con los primeros Mac basados en Intel , y permite que muchas aplicaciones PowerPC se ejecuten en computadoras Mac basadas en Intel sin modificaciones. Rosetta se basa en la tecnología QuickTransit . [4] No tiene interfaz gráfica de usuario y se inicia según sea necesario sin notificación al usuario, lo que llevó a Apple a describir a Rosetta como "el software más asombroso que nunca verás". [5] Rosetta se puede instalar opcionalmente en Mac OS X v10.6 "Snow Leopard". [6] Rosetta no está incluido ni es compatible con Mac OS X Lion (10.7) (lanzado en 2011) o posterior, que por lo tanto no puede ejecutar aplicaciones PowerPC. [6]
Debido a las mayores diferencias arquitectónicas entre los procesadores Intel y PowerPC, Rosetta opera a un nivel superior al del emulador 68000, como un programa de nivel de usuario que solo puede interceptar y emular código de nivel de usuario. Traduce instrucciones G3 , G4 y AltiVec , pero no instrucciones G5 . Aunque la mayoría del software comercial para Macs basados en PowerPC era compatible con estos requisitos (los sistemas G4 todavía se usaban ampliamente en ese momento), cualquier aplicación que dependiera de instrucciones específicas de G5 tenía que ser modificada por sus desarrolladores para que funcionara en Macs basados en Intel compatibles con Rosetta. Apple advirtió que las aplicaciones con una gran interacción del usuario pero con bajas necesidades computacionales (como procesadores de texto ) serían las más adecuadas para usar con Rosetta, y las aplicaciones con altas necesidades computacionales (como juegos, AutoCAD o Photoshop ) no lo serían. [7] Las versiones PowerPC preexistentes de las aplicaciones de producción de medios "Pro" de Apple (como Final Cut Pro , Motion, Aperture y Logic Pro) no son compatibles con Rosetta y requieren una "actualización cruzada" [8] a una versión binaria universal para funcionar en Macs basados en Intel compatibles con Rosetta.
Rosetta tampoco admite lo siguiente: [9]
En 2020, Apple anunció que Rosetta 2 se incluiría con macOS Big Sur , para ayudar en la transición de Mac al silicio de Apple . El software permite que muchas aplicaciones compiladas exclusivamente para su ejecución en procesadores basados en x86-64 se traduzcan para su ejecución en el silicio de Apple. [3] [10]
Hay dos formas de instalar Rosetta 2 en una Mac con Apple Silicon : utilizando la Terminal para instalar el programa directamente o intentando abrir una aplicación compilada para x86-64, lo que abrirá una ventana de instalación.
Además del soporte de traducción justo a tiempo (JIT), Rosetta 2 ofrece compilación anticipada (AOT), con el código x86-64 completamente traducido, solo una vez, cuando se instala una aplicación sin un binario universal en una Mac con silicio de Apple. [11]
El rendimiento de Rosetta 2 ha sido muy elogiado. [12] [13] En algunas pruebas comparativas, los programas que solo funcionan con x86-64 funcionaron mejor con Rosetta 2 en una Mac con un SOC Apple M1 que de forma nativa en una Mac con un procesador Intel x86-64. Una de las razones clave por las que Rosetta 2 proporciona un nivel tan alto de eficiencia de traducción es el soporte de ordenación de memoria x86-64 en el SOC Apple M1. [14] El SOC también tiene instrucciones dedicadas para calcular indicadores x86. [15]
Aunque Rosetta 2 funciona para la mayoría del software, algunos programas no funcionan en absoluto [16] o se informa que son "lentos". [17]
Al igual que la primera versión, Rosetta 2 normalmente no requiere la intervención del usuario. Cuando un usuario intenta iniciar una aplicación que solo funciona con x86-64 por primera vez, macOS le solicita que instale Rosetta 2 si aún no está disponible. Los lanzamientos posteriores de programas x86-64 se ejecutarán automáticamente mediante traducción. También existe una opción para forzar la ejecución de un binario universal como código x86-64 a través de Rosetta 2, incluso en una máquina basada en ARM. [18]
Desde macOS Ventura , los usuarios que ejecutan máquinas virtuales con Linux como sistema operativo invitado pueden utilizar Rosetta 2 para ejecutar código x86-64 compilado para Linux, [19] dentro de la máquina virtual. Rosetta 2 funciona como un binario de tiempo de ejecución, que debe instalarse en el sistema operativo invitado. Ha habido casos [20] de desarrolladores que instalan este binario de tiempo de ejecución en hardware de terceros, siempre que incluya una CPU que admita al menos el conjunto de instrucciones ARMv8.2-A ; el orden de la memoria será diferente del x86 nativo. Algunos desarrolladores han notado que podría violar los acuerdos de licencia de macOS, ya que el tiempo de ejecución está incluido [21] dentro del marco de virtualización de Apple.
En macOS Sequoia , Rosetta 2 se ha actualizado para admitir la traducción de instrucciones AVX2 de procesadores Intel con el fin de mejorar la compatibilidad de los juegos que se trasladan mediante Game Porting Toolkit de Apple . [ cita requerida ]
Traduce las aplicaciones cuando las instalas, por lo que pueden iniciarse inmediatamente y responder al instante. Rosetta 2 también puede traducir código sobre la marcha cuando es necesario.
Extensiones de manipulación de indicadores ARM... La extensión secreta de Apple...