Apple-дың көп архитектуралы бинарлық файлдары: PowerPC, Intel, ARM64 жүйелерінде жұмыс істейтін бағдарламалар туралы толық ақпарат. Universal binary, fat binary.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Apple көп архитектуралы бинарлық файлдар
Apple multi architecture binary files
Универсалды бинарлық формат – PowerPC немесе Intel IA 32 немесе Intel 64 немесе ARM64 негізіндегі Macintosh компьютерлерінде орындалатын файлдар үшін формат. Формат NeXTStep жүйесінде «Көп архитектуралы бинарлар» ретінде пайда болды, ал бұл түсінік жалпы алғанда «майлы бинар» ретінде белгілі, Power Macintosh-та көрінгендей. Mac OS X Snow Leopard шығарылымымен және одан бұрын, 64 биттік архитектураларға көшкеннен бері, кейбір бағдарламалық жасақтама шығарушылар, мысалы Mozilla, i386 (32 бит Intel) және x86 64 жүйелеріне арналған құрастыруларды қамтитын ірі бинарлық файлға сілтеме жасау үшін «универсалды» терминін қолданды. PowerPC немесе Intel бағдарламасының құрастыруын таңдау үшін қолданылатын механизм, PowerPC немесе Intel архитектурасының 32 биттік немесе 64 биттік құрастыруларын таңдау үшін де қолданылады. Apple компаниясы, сонымен қатар, PowerPC және Intel үшін Apple-дің универсалды бинарлық файлдарға қатысты сауда белгілерін пайдалануға рұқсат беру үшін, олардың үйлесімділігін талап етуді жалғастырды. Apple компаниясы мұндай үшінші тарап бағдарламалық жасақтамаларын шығарушылар барлық архитектуралар үшін жеке құрастыруларды жинақтауы керек (немесе қажет) екенін нақтыламайды. Универсалды бинарлық файлдар Mac OS жүйесіне 2005 жылғы Apple Worldwide Developers Conference-те қолданыстағы PowerPC архитектурасынан Intel процессорларына негізделген жүйелерге өтуді жеңілдету құралы ретінде енгізілді, олар 2006 жылы жеткізіле бастады. Универсалды бинарлық файлдар әдетте құрастырылған қосымшаның PowerPC және x86 нұсқаларын қамтиды. Операциялық жүйе өзінің бас жазуы арқылы универсалды бинарлық файлды анықтайды және қолданылып жүрген архитектураға сәйкес бөлімді орындайды. Бұл қосымшаны кез келген қолдайтын архитектурада іске қосуға мүмкіндік береді, үлкен бинарлық файлдың сақталатын кеңістігін ұлғайтудан басқа, өнімділікке кері әсер етпейді. Mac OS X Snow Leopard-тан бастап, тек Intel негізделген Mac-тар қолдайды, сондықтан Mac OS X 10.6 немесе одан жаңа нұсқаларда ғана бар мүмкіндіктерге байланысты бағдарламалық қамтамасыз ету тек Intel негізделген Mac-тарда жұмыс істейді, сондықтан Intel/PPC бинарлық файлдарын қажет етпейді. Сонымен қатар, OS X Lion-нан бастап, тек 64 бит Intel Mac-тар қолдайды, сондықтан OS X 10.7 немесе одан жаңа мүмкіндіктерге байланысты бағдарламалық қамтамасыз ету тек 64 бит процессорларда жұмыс істейді, сондықтан 32 бит/64 бит бинарлық файлдар қажет емес. Майлы бинарлық файлдар тек Mac OS X-тің ескі аппараттық құрылғыларда жұмыс істейтін ескі нұсқаларымен кері үйлесімділікке ие болу үшін жасалған бағдарламалық жасақтама үшін қажет. Жаңа Universal 2 бинарлық форматы 2020 жылы Бүкіләлемдік әзірлеушілер конференциясында таныстырылды. Universal 2 бағдарламалық жасақтамаларға Intel x86 64 және ARM64 Macintosh компьютерлерінде жұмыс істеуге мүмкіндік береді, бұл Apple кремнийіне көшуді қамтамасыз етеді.
The universal binary format is a format for executable files that run natively on either PowerPC or Intel manufactured IA 32 or Intel 64 or ARM64 based Macintosh computers. The format originated on NeXTStep as "Multi Architecture Binaries", and the concept is more generally known as a fat binary, as seen on Power Macintosh. 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 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. 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 Apple Worldwide Developers Conference as a means to ease the transition from the existing PowerPC architecture to systems based on Intel processors, which began shipping in 2006. Universal binaries typically include both PowerPC and x86 versions of a compiled application. The operating system detects a universal binary by its header, and executes the appropriate section for the architecture in use. This allows the application to run natively on any supported architecture, with no negative performance impact beyond an increase in the storage space taken up by the larger binary. 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 OS X Lion, only 64 bit Intel Macs are supported, so software that specifically depends on new features in OS X 10.7 or newer will only run on 64 bit processors and therefore does not require 32 bit/64 bit fat binaries. Fat binaries would only be necessary for software that is designed to have backward compatibility with older versions of Mac OS X running on older hardware. The new Universal 2 binary format was introduced at the 2020 Worldwide Developers Conference. Universal 2 allows applications to run on both Intel x86 64 based and ARM64 based Macintosh computers, to enable the transition to Apple silicon.
Мотивация
Екі жалпылама балама шешім бар. Біріншісі – екі жеке бинарлық файлды ұсыну, бірі x86 архитектурасы үшін компиляцияланған, екіншісі PowerPC архитектурасы үшін. Дегенмен, бұл екі архитектураның айырмашылығын білмейтін бағдарлама қолданушыларын жаңылыстыруы мүмкін, бірақ жақсартылған құжаттама немесе гибридті дискілерді пайдалану арқылы осы жаңылыстыруды жоюға болады. Екінші балама – бір архитектураны екінші архитектурада жұмыс істейтін жүйе эмуляциялауына сену. Бұл тәсіл өнімділіктің төмендеуіне әкеледі және Розетта сияқты әмбебап бинарлық файлдар немесе арнайы компиляцияланған бинарлық файлдар қолжетімді болғанға дейін қолданылатын уақытша шешім деп есептеледі. әмбебап бинарлық файлдар бір платформалық бинарлық файлдардан үлкен болады, себебі компиляцияланған кодтың бірнеше көшірмесі сақталуы тиіс. Алайда, кейбір орындалмайтын ресурстар екі архитектурамен ортақ болғандықтан, нәтижедегі әмбебап бинарлық файлдың көлемі екі жеке бинарлық файлдың жалпы көлемінен кіші болуы мүмкін және көбінесе кішірек болады. Олар қосымша жедел жадты қажет етпейді, өйткені орындалу үшін осы екі көшірмелердің тек біреуі жүктеледі.
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 hybrid CDs. The other alternative is to rely on emulation of one architecture by a system running the other architecture. This approach results in lower performance, and is generally regarded an interim solution to be used only until universal binaries or specifically compiled binaries are available as with Rosetta. 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 RAM because only one of those two copies is loaded for execution.
Тарих
Универсалды бинарлық тұжырымдама Mac OS X-тің негізгі архитектуралық негізі болған NeXTSTEP-тегі «Көп архитектуралы бинарлықтар» арқылы пайда болды. NeXTSTEP универсалды бинарлық файлдарды қолдайды, сондықтан бір атқарылатын файл бірнеше архитектурада жұмыс істей алады, оның ішінде Motorola-ның m68k, Intel-дің x86, Sun Microsystems-тің SPARC және Hewlett Packard-тың PA RISC. NeXTSTEP және macOS Mach O архивін универсалды бинарлықтың негізіндегі бинарлық формат ретінде пайдаланады. Apple бұрын 68k процессорларынан PowerPC-ге ауысу кезінде 1990 жылдардың ортасында осыған ұқсас техниканы қолданған. Бұл екі платформалық атқарылатын файлдар үлкен файл мөлшеріне байланысты «майлы бинарлықтар» деп аталады. Apple-дың Xcode 2.1 осы файлдарды құруды қолдайды, бұл сол нұсқаудағы жаңа мүмкіндік. Процессорға тәуелділіксіз жасалған қарапайым қосымшаны универсалды бинарлық ретінде компиляциялау үшін аздаған өзгерістер ғана қажет болуы мүмкін, бірақ архитектураның ерекшеліктерін пайдалануға арналған күрделі қосымшаға маңызды өзгерістер қажет болуы мүмкін. Бастапқыда басқа әзірлеу құралдарын пайдаланып жасалған қосымшаларға қосымша өзгертулер қажет болуы мүмкін. Осы себептер Intel-ге негізделген Macintosh компьютерлерін енгізу мен үшінші тарап қосымшаларының универсалды бинарлық форматта қолдануға болатыны арасындағы кешігуге байланысты айтылды. Apple-дың Intel-ге негізделген компьютерлерді бұрын жарияланған кестеден бірнеше ай бұрын жеткізуі осы айырмашылықтың тағы бір факторы болып табылады. Apple-дың Xcode 2.4 универсалды бинарлық тұжырымдамасын одан әрі дамытады, төрт архитектуралық бинарлық файлды (Intel және PowerPC үшін 32 және 64 бит) жасауға мүмкіндік береді, соның арқасында бір атқарылатын файл кез келген Mac OS X машинасының процессор мүмкіндіктерін толыққанды пайдалана алады.
The concept of a universal binary originated with "Multi Architecture Binaries" in NeXTSTEP, the main architectural foundation of Mac OS X. NeXTSTEP supports universal binaries so that one executable image can run on multiple architectures, including Motorola's m68k, Intel's x86, Sun Microsystems's SPARC, and Hewlett Packard's PA RISC. NeXTSTEP and macOS use Mach O archive as the binary format underlying the universal binary. Apple previously used a similar technique during the transition from 68k processors to PowerPC in the mid 1990s. These dual platform executables are called fat binaries, referring to their larger file size. 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.
Жалпыға ортақ қолдану
Көптеген бағдарламалық жасақтама жасаушылар 2005 жылғы WWDC-ден бастап өз өнімдеріне әмбебап бинарлық жаңартулар ұсынды. 2008 жылдың желтоқсанына қарай Apple веб-сайтында 7500-ден астам Universal қосымшасы тізімделген. 2007 жылдың 16 сәуірінде Adobe Systems компаниясы Universal Binary форматындағы Adobe Creative Suite 3 бағдарламалық жиынтығының алғашқы нұсқасын жариялады. 2006 жылдан 2010 жылға дейін көптеген Mac OS X қолданбалары Universal Binary форматына көшірілді, оның ішінде QuarkXPress, Apple-дің Final Cut Studio, Adobe Creative Suite, Microsoft Office 2008 және 11 нұсқасы бар Shockwave Player. Одан кейін көптеген қолданбалар тек Intel процессорлары үшін жасалды. Универсалды емес 32 биттік PowerPC бағдарламалары Mac OS X 10.4, 10.5 және 10.6 (көбінесе) жүйтілетін Intel Mac компьютерлерінде жұмыс істейді, бірақ тиімділігі төмен болады, себебі олар Rosetta арқылы дереу аударылуы керек; олар Mac OS X 10.7 Lion және одан кейінгі нұсқаларда жұмыс істемейді, өйткені Rosetta енді операциялық жүйенің құрамына кірмейді.
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. On April 16, 2007, Adobe Systems announced the release of Adobe Creative Suite 3, the first version of the application suite in the Universal Binary format. From 2006 to 2010, many Mac OS X applications were ported to Universal Binary format, including QuarkXPress, Apple's own Final Cut Studio, Adobe Creative Suite, Microsoft Office 2008, and Shockwave Player with version 11 after that time most were made Intel only apps. Non Universal 32 bit PowerPC programs will run on Intel Macs running Mac OS X 10.4, 10.5, and 10.6 (in most cases), but with non optimal performance, since they must be translated on the fly by Rosetta; they will not run on Mac OS X 10.7 Lion and later as Rosetta is no longer part of the OS.
iOS жүйесі
Apple компаниясы iOS қосымшалары үшін Universal Binaries сияқты екілік форматты архитектуралық үйлесімділік кезеңдерінде бірнеше рет әдепкі бойынша пайдаланған: шамамен 2010 жылы armv6, armv7 және armv7s арасындағы ауысу кезінде, сондай-ақ шамамен 2016 жылы armv7 және arm64 арасындағы ауысу кезінде. App Store автоматты түрде бинарлық файлдарды оптимизациялайды. Бұл практикаға есім берілген жоқ, себебі ол әзірлеушілерді ғана қызықтырады.
Apple has used the same binary format as Universal Binaries for iOS applications by default on multiple occasions of architectural co existence: around 2010 during the armv6 armv7 armv7s transition and around 2016 during the armv7 arm64 transition. The App Store automatically thins the binaries. No trade names were derived for this practice, as it is only a concern of the developer.
Жалпыға бірдей 2
2020 жылдың 22 маусымында Apple компаниясы Intel x86 64 негізіндегі процессорлардан ARM64 негізіндегі Apple кремнийіне екі жылдық толық ауысуды жариялады, ол 2020 жылдың соңында macOS Big Sur жүйесімен басталады. Осы ауысуға көмектесу үшін, жаңа Universal 2 бинарлық форматы енгізілді, ол қолданбаларды x86 64 немесе ARM64 процессорларында іске қосуға мүмкіндік береді. Snow Leopard жүйесіндегі Жүйе туралы ақпарат құралы бұл ақпаратты "Қолданбалар" бөлімінде көрсетеді.
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. 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. Snow Leopard's System Profiler provides this information on the Applications tab.