Rosetta es un traductor binario dinámico desarrollado por Apple Inc para sus sistemas operativos ( macOS ) para la compatibilidad de aplicaciones entre diferentes arquitecturas de conjuntos de instrucciones . Esto brinda a los desarrolladores y consumidores un período de transición durante el cual pueden actualizar el software de su aplicación para que se ejecute en un hardware más nuevo al "migrarlo" a una arquitectura diferente. El nombre "Rosetta" es una referencia a la Piedra de Rosetta , un artefacto que permitió la traducción de los jeroglíficos egipcios. [una]
La primera versión de Rosetta, presentada en 2006 como un componente de Mac OS X Tiger , permite que las aplicaciones PowerPC se ejecuten en Mac con procesador Intel . La segunda versión, presentada en 2020 como un componente de macOS Big Sur , es parte de la transición de Mac de los procesadores Intel a sus procesadores de silicio Apple basados en ARM . [2]
Apple ha utilizado cuatro series de arquitecturas de procesador en su línea de computadoras Macintosh , a saber, la serie Motorola 68000, la serie PowerPC , la serie Intel Core y su propia serie de procesadores tipo ARM . Cada transición hizo que el software creado para la arquitectura anterior fuera incompatible con la nueva, creando la necesidad de un software que permitiera que la nueva plataforma emulara a la anterior.
Cuando la empresa presentó sus primeros sistemas PowerPC, Apple incluyó software en la versión 7.1.2 y posteriores del sistema operativo para emular el sistema de la serie 68000. Este emulador aprovecha las funciones integradas en los procesadores PowerPC y accede a los niveles más bajos del sistema operativo que se ejecuta en el que se ejecuta el sistema. mismo nivel que el nanokernel de Mac OS , y estrechamente relacionado con él. Esto significa que el nanokernel es capaz de capturar interrupciones de PowerPC , convertirlas en interrupciones de 68k (luego cambiar al modo mixto si es necesario) y luego ejecutar código de 68k para manejar las interrupciones. Esto le permite intercalar líneas de 68k y código PowerPC en el mismo binario pesado .
Apple lanzó la primera versión de Rosetta en 2006 cuando comenzó a cambiar su línea Macintosh de PowerPC a un procesador Intel. Originalmente se incluyó 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 sin modificaciones en Mac basadas en Intel. Rosetta se basa en la tecnología QuickTransit [3] , no tiene interfaz de usuario y se ejecuta según sea necesario sin notificar al usuario, lo que llevó a Apple a describirlo como "el software más asombroso que jamás haya visto". Rosetta no está instalado de forma predeterminada en Mac OS X v10. 6 " Snow Leopard ", pero disponible como opción instalable. Rosetta no está incluida ni es compatible con Mac OS X v10. 7 "Lion" o posterior, que por lo tanto no puede ejecutar aplicaciones PowerPC. [cuatro]
Debido a las grandes diferencias arquitectónicas entre los procesadores Intel y PowerPC, Rosetta se ejecuta a un nivel más alto que el emulador 68000 como un programa de nivel de usuario que solo puede interceptar y emular código de nivel de usuario. Traduce las instrucciones G3, G4 y AltiVec , pero no las instrucciones G5. Aunque la mayoría de los programas comerciales para computadoras basadas en PowerPC eran compatibles con estos requisitos (los sistemas G4 todavía se usaban ampliamente en ese momento), los desarrolladores tenían que modificar cualquier aplicación que dependiera de instrucciones G5 específicas para que se ejecutara en computadoras compatibles con Rosetta basadas en Intel. Apple ha dicho que las aplicaciones con mucha interacción con el usuario pero con necesidades informáticas bajas (como los procesadores de texto ) son las más adecuadas para usar con Rosetta, mientras que las aplicaciones con necesidades informáticas altas (como juegos, AutoCAD o Photoshop) no lo son.
Rosetta tampoco admite lo siguiente:
El entorno de escritorio y, por lo tanto, cualquier aplicación creada para Mac OS 9 o anterior. Código que inserta configuraciones en el panel de Preferencias del sistema. Aplicaciones que requieren un manejo de excepciones detallado. Protector de pantalla. Extensiones del kernel y aplicaciones que dependen de ellas. Aplicaciones Java relacionadas o aplicaciones Java con JNI. Las bibliotecas que no se pueden traducir applets de Java en aplicaciones traducidas al lenguaje Rosetta significa que debe usar la aplicación de navegador web nativa de Intel para cargar applets de Java, no la versión heredada de PowerPC.
En 2020, Apple anunció Rosetta 2, que se incluirá con macOS Big Sur y ayudará con la transición de Mac al silicio de Apple desde los procesadores Intel . Además del soporte de traducción justo a tiempo (JIT) disponible en Rosetta, Rosetta 2 incluye soporte de traducción de compilación anticipada (AOT) [5] cuando la aplicación está instalada.
El desempeño de Rosetta 2 fue muy elogiado. En algunos puntos de referencia , Rosetta 2 se desempeñó mejor que las antiguas Mac con hardware patentado de Intel. Rosetta 2 funciona para muchos programas pero no para todos, algunos no funcionan en absoluto o reportan "lentitud". Muchos programas se pueden hacer compatibles con las nuevas Mac mediante la recompilación por parte del proveedor del software, lo que a menudo es una tarea sencilla, mientras que para algunos programas (como los que incluyen código ensamblador o generan código de máquina ), los cambios no son fáciles ni automatizados.
Al igual que con la primera versión, Rosetta 2 normalmente no requiere la intervención del usuario. La primera vez que un usuario intenta ejecutar una aplicación exclusiva de Intel, macOS le solicita que instale Rosetta 2 si el componente no está disponible. Los lanzamientos posteriores de programas x86 se realizarán automáticamente a través de la traducción. También existe la posibilidad de hacer que el binario genérico funcione como código Intel a través de Rosetta 2, incluso en una máquina basada en ARM .