Universal binary
Mac transition to Intel processors |
---|
The universal binary format is a format for
With the release of Mac OS X Snow Leopard, and before that, since the move to 64-bit architectures in general, some software publishers such as Mozilla[1] have used the term "universal" to refer to a fat binary that includes builds for both i386 (32-bit Intel) and x86_64 systems. The same mechanism that is used to select between the PowerPC or Intel builds of an application is also used to select between the 32-bit or 64-bit builds of either PowerPC or Intel architectures.
Apple, however, continued to require native compatibility with both PowerPC and Intel in order to grant third-party software publishers permission to use Apple's trademarks related to universal binaries.[2] Apple does not specify whether or not such third-party software publishers must (or should) bundle separate builds for all architectures.
Universal binaries were introduced into Mac OS at the 2005
Starting with Mac OS X Snow Leopard, only Intel-based Macs are supported, so software that specifically depends upon capabilities present only in Mac OS X 10.6 or newer will only run on Intel-based Macs and therefore does not require Intel/PPC fat binaries. Additionally, starting with
The new Universal 2 binary format was introduced at the 2020 Worldwide Developers Conference.
Motivation
There are two general alternative solutions. The first is to simply provide two separate binaries, one compiled for the x86 architecture and one for the PowerPC architecture. However, this can be confusing to software users unfamiliar with the difference between the two, although the confusion can be remedied through improved documentation, or the use of
Universal binaries are larger than single-platform binaries, because multiple copies of the compiled code must be stored. However, because some non-executable resources are shared by the two architectures, the size of the resulting universal binary can be, and usually is, smaller than the combined sizes of two individual binaries. They also do not require extra
History
The concept of a universal binary originated with "
Apple previously used a similar technique during the transition from
Apple's Xcode 2.1 supports the creation of these files, a new feature in that release. A simple application developed with processor-independence in mind might require very few changes to compile as a universal binary, but a complex application designed to take advantage of architecture-specific features might require substantial modification. Applications originally built using other development tools might require additional modification. These reasons have been given for the delay between the introduction of Intel-based Macintosh computers and the availability of third-party applications in universal binary format. Apple's delivery of Intel-based computers several months ahead of their previously announced schedule is another factor in this gap.
Apple's Xcode 2.4 takes the concept of universal binaries even further, by allowing four-architecture binaries to be created (32- and 64-bit for both Intel and PowerPC), therefore allowing a single executable to take full advantage of the CPU capabilities of any Mac OS X machine.
Universal applications
Many software developers have provided universal binary updates for their products since the 2005 WWDC. As of December 2008, Apple's website listed more than 7,500 Universal applications.[6]
On April 16, 2007,
From 2006 to 2010, many Mac OS X applications were ported to Universal Binary format, including
iOS
Apple has used the same binary format as Universal Binaries for
Universal 2
Mac transition to Apple silicon |
---|
|
On June 22, 2020, Apple announced a two-year permanent transition from Intel x86-64-based processors to ARM64-based Apple silicon beginning with macOS Big Sur in late 2020.[9] To aid in this transition, a new Universal 2 binary was introduced to enable applications to be run on either x86-64-based processors or ARM64-based processors.[5]
Tools
The main tool for handling (creating or splitting) universal binaries is the lipo
command found in
See also
- Apple–Intel architecture
- Mac transition to Intel processors
- Mac transition to Apple silicon
- Fat binary
- Rosetta (software)
- Xslimmer
References
- ^ "Firefox 4 for Mac OS X: Under the Hood". November 10, 2010. Retrieved March 3, 2017.
- ^ "Mac OS X Universal Logo: Guidelines for Mac OS X Universal Logo Licenses" (PDF). Apple Inc. June 2007. Retrieved October 18, 2013.
- ^ "Mac OS X: 64-bit kernel frequently asked questions". Apple Inc. October 4, 2012. Retrieved October 18, 2013.
- ^ "Does Mac OS X 10.7 "Lion" run on Macs with a 32-bit EFI? How does the performance of Mac OS X 10.7 "Lion" compare to Mac OS X 10.6 "Snow Leopard" in "real-world" tests? @ EveryMac.com". everymac.com. Kyle Media. Retrieved October 6, 2017.
- ^ a b Axon, Samuel (June 22, 2020). "This is Apple's roadmap for moving the first Macs away from Intel". Ars Technica. Retrieved June 23, 2020.
- Apple Computer. Retrieved December 22, 2008.
- Adobe Systems. April 16, 2007. Archived from the originalon July 8, 2012. Retrieved October 18, 2013.
- ^ "lipo - iOS fat binaries and thinning out". Stack Overflow.
- ^ Amadeo, Ron (June 22, 2020). "Apple announces macOS 11, "Big Sur," with an emphasis on design". Ars Technica. Retrieved June 23, 2020.
- ^ stany (September 6, 2005). "Mac OS X: Trimming fat from Mach-O fat files". theconsultant.net. Retrieved October 18, 2013.