El formato binario universal es un formato para archivos ejecutables que se ejecutan de forma nativa en computadoras Macintosh PowerPC o IA-32 fabricadas por Intel o Intel 64 o ARM64 . El formato se originó en NeXTStep como " Binarios de arquitectura múltiple ", y el concepto se conoce más generalmente como binario grueso , como se ve en Power Macintosh .
Con el lanzamiento de Mac OS X Snow Leopard , y antes de eso, desde el paso a arquitecturas de 64 bits en general, algunos editores de software como Mozilla [1] han utilizado el término "universal" para referirse a un binario grueso que incluye compilaciones. para sistemas i386 (Intel de 32 bits) y x86_64. El mismo mecanismo que se utiliza para seleccionar entre las versiones PowerPC o Intel de una aplicación también se utiliza para seleccionar entre las versiones de 32 o 64 bits de las arquitecturas PowerPC o Intel.
Apple, sin embargo, siguió exigiendo compatibilidad nativa tanto con PowerPC como con Intel para otorgar permiso a los editores de software de terceros para utilizar las marcas comerciales de Apple relacionadas con los binarios universales. [2] Apple no especifica si dichos editores de software de terceros deben (o deberían) agrupar compilaciones separadas para todas las arquitecturas.
Los binarios universales se introdujeron en Mac OS en la Conferencia Mundial de Desarrolladores de Apple de 2005 como un medio para facilitar la transición de la arquitectura PowerPC existente a sistemas basados en procesadores Intel, que comenzaron a distribuirse en 2006. Los binarios universales normalmente incluyen versiones PowerPC y x86 de un aplicación compilada. El sistema operativo detecta un binario universal por su encabezado y ejecuta la sección apropiada para la arquitectura en uso. Esto permite que la aplicación se ejecute de forma nativa en cualquier arquitectura compatible, sin ningún impacto negativo en el rendimiento más allá de un aumento en el espacio de almacenamiento ocupado por el binario más grande.
A partir de Mac OS X Snow Leopard, solo se admiten Mac basadas en Intel, por lo que el software que depende específicamente de las capacidades presentes solo en Mac OS X 10.6 o posterior solo se ejecutará en Mac basadas en Intel y, por lo tanto, no requiere archivos binarios Intel/PPC. . Además, a partir de OS X Lion , solo se admiten Mac Intel de 64 bits, por lo que el software que depende específicamente de nuevas funciones en OS X 10.7 o posterior solo se ejecutará en procesadores de 64 bits y, por lo tanto, no requiere procesadores de 32 bits/64 bits. binarios un poco gordos. [3] [4] Los archivos binarios gruesos solo serían necesarios para el software diseñado para tener compatibilidad con versiones anteriores de Mac OS X que se ejecutan en hardware más antiguo.
El nuevo formato binario Universal 2 se presentó en la Conferencia Mundial de Desarrolladores de 2020. [5] Universal 2 permite que las aplicaciones se ejecuten en computadoras Macintosh basadas en Intel x86-64 y ARM64 , para permitir la transición al silicio de Apple .
Hay dos soluciones alternativas generales. La primera es simplemente proporcionar dos binarios separados, uno compilado para la arquitectura x86 y otro para la arquitectura PowerPC. Sin embargo, esto puede resultar confuso para los usuarios de software que no están familiarizados con la diferencia entre los dos, aunque la confusión se puede solucionar mediante una documentación mejorada o el uso de CD híbridos . La otra alternativa es confiar en la emulación de una arquitectura por parte de un sistema que ejecuta la otra arquitectura. Este enfoque da como resultado un menor rendimiento y generalmente se considera una solución provisional que se utilizará sólo hasta que los binarios universales o los binarios compilados específicamente estén disponibles como con Rosetta .
Los binarios universales son más grandes que los binarios de plataforma única, porque se deben almacenar varias copias del código compilado. Sin embargo, debido a que las dos arquitecturas comparten algunos recursos no ejecutables, el tamaño del binario universal resultante puede ser, y suele ser, más pequeño que los tamaños combinados de dos binarios individuales. Tampoco requieren RAM adicional porque solo se carga una de esas dos copias para su ejecución.
El concepto de binario universal se originó con los " binarios de arquitectura múltiple " en NeXTSTEP , la base arquitectónica principal de Mac OS X. NeXTSTEP admite binarios universales para que una imagen ejecutable pueda ejecutarse en múltiples arquitecturas, incluidas m68k de Motorola , x86 de Intel , SPARC de Sun Microsystems y PA-RISC de Hewlett-Packard . NeXTSTEP y macOS utilizan el archivo Mach-O como formato binario subyacente al binario universal.
Apple utilizó anteriormente una técnica similar durante la transición de procesadores de 68k a PowerPC a mediados de los años 1990. Estos ejecutables de doble plataforma se denominan binarios gordos , en referencia a su mayor tamaño de archivo.
Xcode 2.1 de Apple admite la creación de estos archivos, una nueva característica en esa versión. Una aplicación sencilla desarrollada teniendo en cuenta la independencia del procesador puede requerir muy pocos cambios para compilarse como un binario universal, pero una aplicación compleja diseñada para aprovechar características específicas de la arquitectura puede requerir modificaciones sustanciales. Las aplicaciones creadas originalmente con otras herramientas de desarrollo pueden requerir modificaciones adicionales. Se han dado estas razones para explicar el retraso entre la introducción de las computadoras Macintosh basadas en Intel y la disponibilidad de aplicaciones de terceros en formato binario universal. La entrega por parte de Apple de computadoras basadas en Intel varios meses antes de su calendario previamente anunciado es otro factor en esta brecha.
Xcode 2.4 de Apple lleva el concepto de binarios universales aún más lejos, al permitir la creación de binarios de cuatro arquitecturas (32 y 64 bits tanto para Intel como para PowerPC), permitiendo así que un único ejecutable aproveche al máximo las capacidades de la CPU de cualquier Máquina Mac OS X.
Muchos desarrolladores de software han proporcionado actualizaciones binarias universales para sus productos desde la WWDC de 2005. En diciembre de 2008, el sitio web de Apple enumeraba más de 7.500 aplicaciones universales. [6]
El 16 de abril de 2007, Adobe Systems anunció el lanzamiento de Adobe Creative Suite 3 , la primera versión del conjunto de aplicaciones en formato binario universal. [7]
De 2006 a 2010, muchas aplicaciones de Mac OS X se trasladaron al formato binario universal, incluidas QuarkXPress , Final Cut Studio de Apple , Adobe Creative Suite , Microsoft Office 2008 y Shockwave Player con la versión 11; después de ese tiempo, la mayoría se hicieron solo para Intel. aplicaciones. Los programas PowerPC no universales de 32 bits se ejecutarán en Mac Intel con Mac OS X 10.4, 10.5 y 10.6 (en la mayoría de los casos), pero con un rendimiento no óptimo, ya que Rosetta debe traducirlos sobre la marcha ; no se ejecutarán en Mac OS X 10.7 Lion y posteriores, ya que Rosetta ya no forma parte del sistema operativo.
Apple ha utilizado el mismo formato binario que Universal Binaries para aplicaciones iOS de forma predeterminada en múltiples ocasiones de coexistencia arquitectónica: alrededor de 2010 durante la transición armv6-armv7-armv7s y alrededor de 2016 durante la transición armv7-arm64. La App Store adelgaza automáticamente los archivos binarios. No se derivaron nombres comerciales para esta práctica, ya que es sólo una preocupación del desarrollador. [8]
El 22 de junio de 2020, Apple anunció una transición permanente de dos años de procesadores basados en Intel x86-64 a silicio de Apple basado en ARM64 a partir de macOS Big Sur a finales de 2020. [9] Para ayudar en esta transición, un nuevo Universal 2 El binario se introdujo para permitir que las aplicaciones se ejecuten en procesadores basados en x86-64 o en procesadores basados en ARM64. [5]
La herramienta principal para manejar (crear o dividir) binarios universales es el lipo
comando que se encuentra en Xcode . El filecomando en macOS y varios otros sistemas similares a Unix puede identificar binarios universales Mach-O e informar sobre el soporte de la arquitectura. [10] System Profiler de Snow Leopard proporciona esta información en la pestaña Aplicaciones .