Rosetta — динамический двоичный транслятор, разработанный компанией Apple Inc для своих операционных систем (macOS) для совместимости приложений между различными архитектурами набора команд. Это дает разработчикам и потребителям переходный период, в течение которого они могут обновить свое прикладное программное обеспечение для работы на более новом оборудовании, «переведя» его на другую архитектуру. Название «Розетта» является отсылкой к Розеттскому камню, артефакту, который позволил перевести египетские иероглифы.[1]
Первая версия Rosetta, представленная в 2006 году как компонент Mac OS X Tiger, позволяет приложениям PowerPC работать на компьютерах Mac на базе Intel. Вторая версия, представленная в 2020 году как компонент macOS Big Sur, является частью перехода Mac от процессоров Intel к своим процессорам Apple silicon, производимых по технологии ARM.[2]
Разработка
правитьApple использовала четыре серии процессорных архитектур в своей линейке компьютеров Macintosh, а именно: Motorola 68000 series, PowerPC series, Intel Core series и свою собственную серию процессоров ARM-типа. Каждый переход делал программное обеспечение, созданное для более ранней архитектуры, несовместимым с новой, создавая потребность в программном обеспечении, позволяющем новой платформе эмулировать предыдущую.
Когда компания представила свои первые системы PowerPC, Apple включила программное обеспечение в ОС версии 7.1.2 и более поздние для эмуляции системы серии 68000. Этот эмулятор использует преимущества функций, встроенных в процессоры PowerPC, и получает доступ к самым нижним уровням ОС, работающим на том же уровне, что и наноядро Mac OS, и тесно связанным с ним. Это означает, что наноядро способно перехватывать прерывания PowerPC, переводить их в прерывания 68k (затем, при необходимости, переключать смешанный режим), а затем выполнять код 68k для обработки прерываний. Это позволяет чередовать строки кода 68k и PowerPC в одном двоичном файле fat.
Rosetta (переход на Intel)
правитьApple выпустила первую версию Rosetta в 2006 году, когда она начала переключать линейку Macintosh с PowerPC на процессор Intel. Первоначально он был включен в Mac OS X v10. 4. 4 «Tiger», версию, которая была выпущена с первыми компьютерами Mac на базе Intel, и позволяет многим приложениям PowerPC работать на компьютерах Mac на базе Intel без изменений. Rosetta основана на технологии QuickTransit[3], она не имеет пользовательского интерфейса и запускается по мере необходимости без уведомления пользователя, что привело Apple к описанию её как «самого удивительного программного обеспечения, которое вы никогда не увидите». Rosetta не устанавливается по умолчанию в Mac OS X v10. 6 «Snow Leopard», но доступна в качестве устанавливаемой опции. Rosetta не входит и не поддерживается в Mac OS X v10. 7 «Lion» или более поздней версии, которая поэтому не может запускать приложения PowerPC.[4]
Преимущества
правитьИз-за больших архитектурных различий между процессорами Intel и PowerPC Rosetta работает на более высоком уровне, чем эмулятор 68000, как программа пользовательского уровня, которая может только перехватывать и эмулировать код пользовательского уровня. Он переводит инструкции G3, G4 и AltiVec, но не инструкции G5. Хотя большинство коммерческих программ для компьютеров на базе PowerPC было совместимо с этими требованиями (системы G4 все еще широко использовались в то время), любые приложения, которые полагались на конкретные инструкции G5, должны были быть изменены своими разработчиками для работы на поддерживаемых Rosetta компьютерах на базе Intel. Apple сообщила, что приложения с интенсивным взаимодействием с пользователем, но низкими вычислительными потребностями (например, текстовые процессоры) лучше всего подходят для использования с Rosetta, в то время как приложения с высокими вычислительными потребностями (такие как игры, AutoCAD или Photoshop) — нет.
Ограничения поддержки
правитьРозетта также не поддерживает следующее:
- Классическую среду и, следовательно, любое приложение, созданное для Mac OS 9 или более ранних версий
- Код, который вставляет настройки в панель системных настроек
- Приложения, требующие точной обработки исключений
- Экранную заставку
- Расширения ядра и зависящие от них приложения
- Связанные Java-приложения или Java-приложения с библиотеками JNI, которые не могут быть переведены
- Java-апплеты в приложениях, переведенных на язык Rosetta, означают, что для загрузки Java-апплетов необходимо использовать собственное приложение Intel web browser, а не устаревшую версию PowerPC
Rosetta 2 (переход на ARM/Apple Silicon)
правитьВ 2020 году Apple анонсировала Rosetta 2, которая будет включена в состав macOS Big Sur и поможет в переходе Mac на Apple silicon с процессоров Intel. В дополнение к поддержке перевода just-in-time (JIT), доступной в Rosetta, Rosetta 2 включает поддержку перевода ahead-of-time compilation[5] при установке приложения.
Экспертные оценки
правитьПроизводительность «Rosetta 2» была высоко оценена. В некоторых бенчмарках Rosetta 2 работала лучше, чем старые собственные аппаратные компьютеры Intel Mac. Rosetta 2 работает для многих программ, но не для всех, некоторые вообще не работают или сообщают о «вялости». Многие программы можно сделать совместимыми с новыми компьютерами Mac путем перекомпиляции поставщиком программного обеспечения, что часто является простой задачей, в то время как для некоторых программ (например тех, которые включают код на ассемблере или генерируют машинный код) изменения не являются простыми или автоматизированными.
Пользовательский опыт
правитьКак и в первой версии, Rosetta 2 обычно не требует вмешательства пользователя. Когда пользователь впервые пытается запустить приложение только для Intel, macOS предлагает ему установить Rosetta 2, если компонент не доступен. Последующие запуски x86-программ будут выполняться через перевод автоматически. Существует также возможность заставить универсальный двоичный файл работать как код Intel через Rosetta 2, даже на машине на базе ARM.
Примечания
править- ↑ Core Duo iMacs debut speedy new chips (англ.). Macworld (28 января 2006). Дата обращения: 9 декабря 2020. Архивировано 6 декабря 2020 года.
- ↑ Tom Warren. Apple is switching Macs to its own processors starting later this year (англ.). The Verge (22 июня 2020). Дата обращения: 9 декабря 2020. Архивировано 22 июня 2020 года.
- ↑ Stephen Shankland. The brains behind Apple's Rosetta: Transitive (англ.). CNET. Дата обращения: 9 декабря 2020. Архивировано 1 марта 2016 года.
- ↑ Inside Mac OS X 10.7 Lion: Missing Front Row, Rosetta and Java runtime (англ.). AppleInsider. Дата обращения: 9 декабря 2020. Архивировано 10 марта 2021 года.
- ↑ Keynote - WWDC 2020 - Videos (англ.). Apple Developer. Дата обращения: 9 декабря 2020. Архивировано 18 сентября 2020 года.