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 mediante la traducción automática del 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 , permitiendo que las aplicaciones PowerPC se ejecutaran en Mac basados en Intel . El soporte para Rosetta dejó de ser compatible con el lanzamiento de Mac OS X Lion (10.7) en 2011.
Rosetta 2, presentada en 2020 como componente de macOS Big Sur , es parte de la transición de Mac de 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 el siguiente.
Con el lanzamiento de Power Macintosh , el emulador Mac 68K forma parte del Sistema 7.1.2 y posteriores. Este emulador utiliza funciones 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 es capaz de interceptar interrupciones de PowerPC, traducirlas a interrupciones de 68k (luego realizando un cambio de modo mixto, si es necesario) y luego ejecutar código de 68k para manejar las interrupciones. Esto permite intercalar código de 68k y PowerPC dentro del mismo binario grueso .
Apple lanzó Rosetta en 2006 tras la transición de Mac a procesadores Intel desde PowerPC. Estaba integrado en Mac OS X v10.4.4 "Tiger", la versión que se lanzó con las primeras Mac basadas 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 notificar al usuario, lo que llevó a Apple a describir Rosetta como "el software más sorprendente que jamás verás". [5] Rosetta se puede instalar opcionalmente en Mac OS X v10.6 "Snow Leopard". [6] Rosetta no está incluida ni es compatible con Mac OS X Lion (10.7) o posterior, por lo que no puede ejecutar aplicaciones PowerPC. [6]
Debido a las mayores diferencias arquitectónicas entre los procesadores Intel y PowerPC, Rosetta opera a un nivel más alto que el emulador 68000, como un programa a nivel de usuario que sólo puede interceptar y emular código a nivel de usuario. Traduce instrucciones G3 , G4 y AltiVec , pero no instrucciones G5 . Aunque la mayoría del software comercial para Mac basados en PowerPC era compatible con estos requisitos (los sistemas G4 todavía se usaban ampliamente en ese momento), sus desarrolladores debían modificar cualquier aplicación que dependiera de instrucciones específicas de G5 para que funcionara en procesadores Intel compatibles con Rosetta. Mac basados en Apple advirtió que las aplicaciones con una gran interacción del usuario pero bajas necesidades computacionales (como los procesadores de texto ) serían las más adecuadas para usar con Rosetta, y las aplicaciones con altas necesidades computacionales (como los juegos, AutoCAD o Photoshop ) no. [7] Las versiones PowerPC preexistentes de las aplicaciones de producción multimedia "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 un binario universal. versión para funcionar en Mac basadas 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 Apple Silicon. [3] [10]
Para instalar Rosetta 2 en una Mac Apple Silicon hay dos formas de hacerlo: usando la Terminal para instalar el programa directamente, o intentando abrir una aplicación compilada para x86-64, 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. una Mac de silicona de Apple. [11]
El desempeño de Rosetta 2 ha sido muy elogiado. [12] [13] En algunas pruebas comparativas, los programas solo 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 la compatibilidad con el orden de memoria x86-64 en el SOC M1 de Apple. [14] El SOC también tiene instrucciones dedicadas para calcular indicadores x86. [15]
Aunque Rosetta 2 funciona con 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 exclusiva para 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 mediante traducción automáticamente. 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 en tiempo de ejecución, que debe instalarse en el sistema operativo invitado. Ha habido casos [20] de desarrolladores que han instalado este binario en 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.
Traduce las aplicaciones cuando las instalas, para que puedan iniciarse inmediatamente y responder instantáneamente.
Rosetta 2 también puede traducir código sobre la marcha cuando sea necesario.
Extensiones de manipulación de banderas ARM... La extensión secreta de Apple...