Перейти к содержанию

Darling (Linux)

Материал из Википедии — свободной энциклопедии
Darling
Логотип программы Darling
Скриншот программы Darling
Простое Cocoa-приложение 'HelloWorld', продемонстрированное на macOS (слева) и Linux (справа)
Тип слой совместимости
Автор Любош Долежал
Написана на Си, C++, Objective-C[1] и язык ассемблера
Операционная система Linux
Дата выпуска 2012
Последняя версия
Тестовая версия 0.1.20251023 (23 октября 2025; 12 месяцев назад (2025-10-23))
Репозиторий github.com/darlinghq/darling
Лицензия Различные, в основном GPLv3
Сайт darlinghq.org
Логотип Викисклада Медиафайлы на Викискладе

Darling — это свободный и открытый слой совместимости с macOS для Linux.[3] Он дублирует функции macOS, реализуя функционал через альтернативные реализации библиотек и фреймворков, при вызове из программ macOS.[4] Этот метод отличается от прямой эмуляции,[5] где программы запускаются в программной среде Apple в виртуальной машине.[6] Darling называют аналогом Wine для macOS.[7]

Проект стартовал летом 2012 года и основывается на предыдущем проекте под названием maloader, который был прекращен из-за нехватки времени. Слой показал свою работоспособность со многими консольными приложениями, такими как Midnight Commander, The Unarchiver, Python и т. д., он также имеет базовую поддержку графических приложений, основанных на фреймворке Cocoa.[8][3] Darling имеет возможность извлекать образы дисков Apple.[9]

Проект нацелен на поддержку приложений iOS в будущем.[10]

Архитектура

[править | править код]

На входе в систему Darling находится загрузчик для бинарных файлов Mach-O, исполняемого формата для операционных систем Apple. Предшественник Darling, maloader, представлял максималистский подход к проблеме, пытаясь воспроизвести все, что делает загрузчик динамических библиотек Apple dyld. Это оказалось сложным, и с «перехода на Mach-O» в 2017 году Darling использует легковесный загрузчик, достаточный для запуска открытого исходного кода Apple dyld.[11]

Для обеспечения бинарных файлов macOS вызовами ядра, Darling использует модифицированное ядро XNU (с лицензией APSL), обернутое в модуль ядра Linux с лицензией GPL. Модуль выполняет типичную работу ядра Mach, в основном обработку IPC портов.[12] Есть некоторые проблемы с лицензированием в модуле darling-mach, поскольку команда добавляет GNU GPL модификации к ядру APSL.[13]

Над ядром находится корневое окружение. Darling, как и Wine, поддерживает префиксы chroot, реализованные с использованием Linux overlayfs[англ.] (в отличие от трансляции путей в WINE). Пространства имен PID, IPC и UTS используются для создания контейнера для системы Darwin внутри.

Фреймворки и системные библиотеки в Darling, насколько это возможно, основаны на исходном коде, выпущенном Apple. Переход на Mach-O позволяет легче создавать эти фреймворки, потому что теперь они создаются в формате Mach-O, для которого они были предназначены.[11] Чтобы заполнить пробелы для многих высокоуровневых фреймворков, таких как Cocoa, Darling использует код из Cocotron, ApportableFoundation[англ.] и GNUstep.[3]

Большая система Darling основана на многих внешних компонентах, которые используют различные лицензии, все из которых являются открытыми. Основная лицензия — GPLv3.[14]

Примечания

[править | править код]
  1. ↑ https://github.com/EvanLi/Github-Ranking/blob/master/Data/github-ranking-2025-07-06.csv — 2025.
  2. ↑ https://github.com/darlinghq/darling/releases/tag/v0.1.20220704
  3. 1 2 3 Darling |. www.darlinghq.org. Дата обращения: 17 июня 2022. Архивировано 16 июня 2022 года.
  4. ↑ You Can Now Use 'Darling' to Run macOS Software on Linux | iPhone in Canada Blog (амер. англ.) (5 октября 2020). Дата обращения: 17 июня 2022. Архивировано 17 июня 2022 года.
  5. ↑ González, Diego Germán. MacOS programs on Linux? With Darling it is possible. (англ.). Linux Adictos (31 октября 2021). Дата обращения: 17 июня 2022. Архивировано 26 мая 2022 года.
  6. ↑ Brodkin, Jon. OS X apps run on Linux with Wine-like emulator for Mac software. Ars Technica (6 августа 2013). Дата обращения: 23 января 2014. Архивировано 6 августа 2019 года.
  7. ↑ Lynch, Jim. Will we ever be able to run OS X apps in Linux with Darling?. InfoWorld (англ.). Архивировано 23 июля 2018. Дата обращения: 23 июля 2018.
  8. ↑ Darling Picks Up New Contributors For Its macOS Compatibility Layer On Linux (англ.). www.phoronix.com. Дата обращения: 17 июня 2022. Архивировано 17 июня 2022 года.
  9. ↑ Installing software - Darling Docs. docs.darlinghq.org. Дата обращения: 27 января 2022. Архивировано 27 января 2022 года.
  10. ↑ Heath, Nick. OS X apps on their way to Linux courtesy of Darling project. ZDNet (15 июля 2013). Дата обращения: 23 января 2014. Архивировано 9 января 2015 года.
  11. 1 2 Bugaev, Sergey. Mach-O linking and loading tricks (24 июля 2018). Дата обращения: 12 января 2020. Архивировано 12 января 2020 года.
  12. ↑ Build Instructions. Darling. — «Darling uses a kernel module to provide certain OS X specific features, mainly Mach Ports IPC. No OS X application can be run without this module, since Libc requires Mach Ports for its initialization and even for very basic things such as sleep().» Дата обращения: 12 января 2020. Архивировано из оригинала 21 января 2020 года.
  13. ↑ Issue: Code from Apple under the APSL is incompatible with the GPL. GitHub. Дата обращения: 12 января 2020. Архивировано 7 октября 2020 года.
  14. ↑ Darling. GitHub (16 октября 2021). Дата обращения: 13 марта 2026. Архивировано 18 марта 2026 года.