
El formato binario universal es un formato para archivos ejecutables que se ejecutan de forma nativa tanto en Macs con arquitectura PowerPC como x86 , o en Macs con arquitectura Intel 64 y ARM64 . El formato se originó en NeXTStep como " Binarios de arquitectura múltiple ", y el concepto se conoce más comúnmente como binario gordo , como se ve en Power Macintosh .
Con el lanzamiento de Mac OS X Snow Leopard , y antes de eso, desde el cambio a las arquitecturas de 64 bits en general, algunos editores de software como Mozilla [ 1 ] han usado el término "universal" para referirse a un binario completo que incluye compilaciones para sistemas i386 (Intel de 32 bits) y x86_64. El mismo mecanismo que se usa para seleccionar entre las compilaciones PowerPC o Intel de una aplicación también se usa para seleccionar entre las compilaciones de 32 bits o 64 bits de las arquitecturas PowerPC o Intel.
Sin embargo, Apple siguió exigiendo compatibilidad nativa con PowerPC e Intel para otorgar a los editores de software de terceros permiso para usar 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) incluir compilaciones separadas para todas las arquitecturas.
Los binarios universales se introdujeron en Mac OS en la Conferencia Mundial de Desarrolladores de Apple de 2005 para facilitar la transición de la arquitectura PowerPC existente a los sistemas basados en procesadores Intel, que comenzaron a comercializarse en 2006. Los binarios universales suelen incluir versiones para PowerPC y x86 de una aplicación compilada. El sistema operativo detecta un binario universal por su encabezado y ejecuta la sección correspondiente a 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, salvo un aumento en el espacio de almacenamiento que ocupa el binario de mayor tamaño.
A partir de Mac OS X Snow Leopard, solo se admiten Macs con procesadores Intel, por lo que el software que depende específicamente de capacidades presentes solo en Mac OS X 10.6 o posterior solo se ejecutará en Macs con procesadores Intel y, por lo tanto, no requiere binarios fat para Intel/PPC. Además, a partir de OS X Lion , solo se admiten Macs Intel de 64 bits, por lo que el software que depende específicamente de nuevas características en OS X 10.7 o posterior solo se ejecutará en procesadores de 64 bits y, por lo tanto, no requiere binarios fat de 32 bits/64 bits. [ 3 ] [ 4 ] Los binarios fat solo serían necesarios para el software diseñado para tener retrocompatibilidad con versiones anteriores de Mac OS X que se ejecutan en hardware 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 tanto en computadoras Macintosh basadas en Intel x86-64 como en ARM64 , para facilitar la transición a Apple silicon .
Motivación
Existen dos soluciones alternativas generales. La primera consiste simplemente en 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 ambas, aunque la confusión puede solucionarse mediante una mejor documentación o el uso de CD híbridos . La otra alternativa consiste en emular una arquitectura mediante un sistema que ejecute la otra. Este enfoque resulta en un rendimiento inferior y generalmente se considera una solución provisional que solo debe utilizarse hasta que se disponga de binarios universales o binarios compilados específicamente, como en el caso de Rosetta .
Los binarios universales son más grandes que los binarios de una sola plataforma, ya que se deben almacenar varias copias del código compilado. Sin embargo, debido a que algunas arquitecturas comparten recursos no ejecutables, el tamaño del binario universal resultante puede ser, y generalmente es, menor que la suma de los tamaños de dos binarios individuales. Además, no requieren memoria RAM adicional , ya que solo se carga una de esas dos copias para su ejecución.
Historia
El concepto de binario universal se originó con los " Binarios Multiarquitectura " en NeXTSTEP , la arquitectura base principal de Mac OS X. NeXTSTEP admite binarios universales para que una imagen ejecutable pueda funcionar en múltiples arquitecturas, incluyendo la m68k de Motorola , la x86 de Intel , la SPARC de Sun Microsystems y la PA-RISC de Hewlett-Packard . NeXTSTEP y macOS utilizan el archivo Mach-O como formato binario subyacente al binario universal.
Apple ya utilizó una técnica similar durante la transición de los procesadores 68k a PowerPC a mediados de la década de 1990. Estos ejecutables de doble plataforma se denominan binarios grandes , en referencia a su mayor tamaño de archivo.
Xcode 2.1 de Apple admite la creación de estos archivos, una nueva función de esa versión. Una aplicación sencilla desarrollada pensando en la independencia del procesador podría requerir muy pocos cambios para compilarse como binario universal, pero una aplicación compleja diseñada para aprovechar las características específicas de la arquitectura podría requerir modificaciones sustanciales. Las aplicaciones creadas originalmente con otras herramientas de desarrollo podrían requerir modificaciones adicionales. Estas son algunas de las razones que explican el retraso entre el lanzamiento de los ordenadores Macintosh con procesador Intel y la disponibilidad de aplicaciones de terceros en formato binario universal. El hecho de que Apple haya lanzado ordenadores con procesador Intel varios meses antes de lo previsto es otro factor que contribuye a este desfase.
Xcode 2.4 de Apple lleva el concepto de binarios universales aún más lejos, al permitir la creación de binarios para cuatro arquitecturas (de 32 y 64 bits tanto para Intel como para PowerPC), lo que permite 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 7500 aplicaciones universales. [ 6 ]
El 16 de abril de 2007, Adobe Systems anunció el lanzamiento de Adobe Creative Suite 3 , la primera versión del paquete de aplicaciones en formato binario universal. [ 7 ]
Entre 2006 y 2010, muchas aplicaciones de Mac OS X se adaptaron al formato Universal Binary, incluyendo QuarkXPress , Final Cut Studio de Apple , Adobe Creative Suite , Microsoft Office 2008 y Shockwave Player versión 11. Posteriormente, la mayoría se convirtieron en aplicaciones exclusivas para procesadores Intel. Los programas PowerPC de 32 bits que no son Universal Binary se ejecutarán en Macs con procesadores Intel que ejecuten Mac OS X 10.4, 10.5 y 10.6 (en la mayoría de los casos), pero con un rendimiento subóptimo, ya que Rosetta debe traducirlos sobre la marcha ; no se ejecutarán en Mac OS X 10.7 Lion ni versiones posteriores, ya que Rosetta ya no forma parte del sistema operativo.
iOS
Apple ha utilizado por defecto el mismo formato binario que los binarios universales para aplicaciones iOS 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 reduce automáticamente el tamaño de los binarios. No se han derivado nombres comerciales para esta práctica, ya que es responsabilidad exclusiva del desarrollador. [ 8 ]
Universal 2
El 22 de junio de 2020, Apple anunció una transición permanente de dos años de los procesadores Intel x86-64 a los procesadores Apple Silicon basados en ARM64 , comenzando con macOS Big Sur a finales de 2020. [ 9 ] Para facilitar esta transición, se introdujo un nuevo binario Universal 2, con código tanto para x86-64 como para ARM64 empaquetado en el formato binario multiarquitectura, 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 gestionar (crear o dividir) binarios universales es el lipocomando que se encuentra en Xcode . fileEn macOS y otros sistemas tipo Unix, este comando puede identificar binarios universales Mach-O e informar sobre la compatibilidad con la arquitectura. [ 10 ] El Perfilador del Sistema de Snow Leopard proporciona esta información en la pestaña Aplicaciones .
Véase también
Referencias
- ↑ "Firefox 4 para Mac OS X: Bajo el capó" . 10 de noviembre de 2010. Consultado el 3 de marzo de 2017 .
- ↑ "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 .
- ↑ "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 .
- ↑ "¿Funciona Mac OS X 10.7 "Lion" en Macs con EFI de 32 bits? ¿Cómo se compara el rendimiento de Mac OS X 10.7 "Lion" con el de Mac OS X 10.6 "Snow Leopard" en pruebas "reales"? @ EveryMac.com" . everymac.com . Kyle Media . Consultado el 6 de octubre de 2017 .
- 1 2 Axon, Samuel (22 de junio de 2020). "Esta es la hoja de ruta de Apple para alejar a los primeros Mac de Intel" . Ars Technica . Recuperado el 23 de junio de 2020 .
- ↑ "Guía de productos Macintosh: Aplicaciones universales" . Apple Computer . Consultado el 22 de diciembre de 2008 .
- ↑ "Adobe lanza Creative Suite 3" . Adobe Systems . 16 de abril de 2007. Archivado del original el 8 de julio de 2012. Consultado el 18 de octubre de 2013 .
- ↑ "lipo - binarios pesados de iOS y adelgazamiento" . Stack Overflow .
- ↑ Amadeo, Ron (22 de junio de 2020). "Apple anuncia macOS 11, "Big Sur", con énfasis en el diseño" . Ars Technica . Consultado el 23 de junio de 2020 .
- ↑ stany (6 de septiembre de 2005). "Mac OS X: Eliminando la grasa de los archivos pesados de Mach-O" . theconsultant.net . Consultado el 18 de octubre de 2013 .
Enlaces externos
- Centro de recursos para la transición de desarrolladores de Apple
- Directrices de programación binaria universal de Apple
- Introducción al binario universal de Apple
- Formatos de archivos ejecutables
- macOS