Universal Binary - это формат программы для Mac, в котором внутри одного файла .app хранится скомпилированный код сразу для двух архитектур: Intel x86_64 и Apple Silicon ARM64. При запуске macOS сама выбирает подходящую часть и игнорирует другую.
Зачем это нужно
В 2020 году Apple начала переход с Intel на Apple Silicon. Разработчики оказались в сложном положении: одни пользователи на Intel, другие на M1. Universal Binary решил проблему - одна программа работает у всех нативно, без потери скорости от Rosetta 2.
Это уже третий «Universal» в истории Apple:
- Universal (2006-2009) - PowerPC + Intel при переходе с PowerPC
- Universal 2 (2020+) - Intel + Apple Silicon
Чем лучше работы через Rosetta 2
- Быстрее - выполняется напрямую без перевода инструкций
- Меньше памяти - нет накладных расходов на эмуляцию
- Меньше нагрузка на батарею на ноутбуках
- Совместимость - некоторые системные функции работают только в нативных программах
Как проверить, является ли программа Universal
Способ 1: «Свойства файла»
Кликните по файлу .app правой кнопкой → «Свойства» (Get Info, Cmd+I). В разделе «Тип» увидите:
- Application (Universal) - универсальная
- Application (Apple Silicon) - только нативная для Apple Silicon
- Application (Intel) - только Intel, запускается через Rosetta 2
Способ 2: Activity Monitor
Откройте «Активити Монитор» → CPU → колонка «Kind»:
- Apple - сейчас работает в нативном режиме (или Universal на Apple Silicon)
- Intel - сейчас работает через Rosetta 2
Способ 3: терминал
file /Applications/Имя.app/Contents/MacOS/Имя
Если вывод содержит (for architecture x86_64) и (for architecture arm64) - программа Universal.
Размер программ
Universal Binary занимает больше места на диске, потому что содержит код для двух архитектур. Программа в 100 МБ может вырасти до 150-180 МБ. Разработчики иногда выпускают отдельные сборки для экономии места: «Apple Silicon», «Intel», «Universal».