stringtranslate.com

binario universal

Logotipo utilizado para indicar una aplicación universal.

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 .

Motivación

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.

Historia

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.

Aplicaciones universales

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.

iOS

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]

universales 2

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]

Herramientas

La herramienta principal para manejar (crear o dividir) binarios universales es el lipocomando 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 .

Ver también

Referencias

  1. ^ "Firefox 4 para Mac OS X: bajo el capó". 10 de noviembre de 2010 . Consultado el 3 de marzo de 2017 .
  2. ^ "Logotipo universal de Mac OS X: directrices para las licencias del logotipo universal de Mac OS X" (PDF) . Apple Inc. junio de 2007 . Consultado el 18 de octubre de 2013 .
  3. ^ "Mac OS X: preguntas frecuentes sobre el kernel de 64 bits". Apple Inc. 4 de octubre de 2012 . Consultado el 18 de octubre de 2013 .
  4. ^ "¿Mac OS X 10.7 "Lion" se ejecuta en Mac con EFI de 32 bits? ¿Cómo se compara el rendimiento de Mac OS X 10.7 "Lion" con Mac OS X 10.6 "Snow Leopard" en pruebas del "mundo real"? @ EveryMac.com". cadamac.com . Medios de Kyle . Consultado el 6 de octubre de 2017 .
  5. ^ ab Axon, Samuel (22 de junio de 2020). "Esta es la hoja de ruta de Apple para alejar las primeras Mac de Intel". Ars Técnica . Consultado el 23 de junio de 2020 .
  6. ^ "Guía de productos Macintosh: aplicaciones universales". Computadora Apple . Consultado el 22 de diciembre de 2008 .
  7. ^ "Adobe lanza Creative Suite 3". Sistemas Adobe . 16 de abril de 2007. Archivado desde el original el 8 de julio de 2012 . Consultado el 18 de octubre de 2013 .
  8. ^ "lipo - binarios gordos de iOS y adelgazamiento". Desbordamiento de pila .
  9. ^ Amadeo, Ron (22 de junio de 2020). "Apple anuncia macOS 11," Big Sur ", con énfasis en el diseño". Ars Técnica . Consultado el 23 de junio de 2020 .
  10. ^ stany (6 de septiembre de 2005). "Mac OS X: Recorte de grasa de archivos Mach-O fat". elconsultor.net . Consultado el 18 de octubre de 2013 .

enlaces externos