Darling
- title
- Darling
- type
- toolbox
- summary
- Wine для софта macOS: запускает бинарники Mach-O в Linux через сервер ядра Darwin в userspace и фреймворки Apple; CLI работает, GUI экспериментален
- tags
- macos, linux, compatibility-layer, watchlist
- language
- C/Objective-C
- license
- GPL-3.0
- created
- 2026-09-14
- updated
- 2026-09-14
- lang
- ru
- translation_of
- darling
- source_updated
- 2026-09-14
- translated
- 2026-09-14
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Darling запускает программы для macOS в Linux без виртуальной машины - точно так же, как Wine запускает программы для Windows. Проект сам проводит эту аналогию, а название образовано сложением Darwin и Linux. Бинарник macOS загружается напрямую, на его системные вызовы отвечает реализация Darwin со стороны Linux, а фреймворки Apple, с которыми он скомпонован, берутся либо из опенсорсных релизов самой Apple, либо переписаны заново. Многие утилиты командной строки уже работают, а графические приложения пока остаются незавершённой частью.
Как это устроено
Здесь две основные части. Загрузчик Mach-O отображает исполняемые файлы macOS в процесс Linux, а darlingserver - сервер ядра в пространстве пользователя (userspace) - реализует Mach IPC, POSIX и системные вызовы Darwin, которые ожидают эти файлы. Аппаратной эмуляции нет, поэтому между инструкциями программы и процессором ничего не стоит; при этом ни лендинг, ни README не упоминают трансляцию между архитектурами CPU.
Уровнем выше код берётся из двух источников. Низкоуровневые компоненты - XNU, libSystem, Security - собираются из открытых релизов Darwin от Apple. Так же проект решает и вопрос с EULA: используются только те части Darwin, которые Apple опубликовала как свободное ПО. Высокоуровневые фреймворки приходится писать заново. Foundation, CoreFoundation, CoreAudio и AppKit переписаны с нуля: AppKit - поверх The Cocotron с добавлением частей из Apportable Foundation и GNUstep. Поддержка GUI опирается на этот AppKit и начальный бэкенд Metal, транслирующий вызовы в Vulkan.
Установленные программы живут в DPREFIX, аналоге WINEPREFIX от Darling: это chroot-подобное дерево с файловой структурой macOS, по умолчанию расположенное в ~/.darling и переопределяемое переменной окружения DPREFIX. Префиксы строятся на базе overlayfs, откуда и вытекает самое жёсткое практическое ограничение - см. ниже.
Использование
$ uname
Linux
$ darling shell
Darling [~]$ uname
Darwin
darling shell открывает macOS-подобный shell внутри префикса, где доступно достаточно утилит Apple, чтобы устанавливать программы привычным для macOS способом:
Darling [~]$ installer -pkg mc-4.8.7-0.pkg -target / # .pkg; uninstaller removes
Darling [~]$ hdiutil attach Xcode_7.2.dmg # DMG images
Darling [~]$ cp -r /Volumes/Xcode_7.2/Xcode.app /Applications
В качестве примера в README показана компиляция C hello-world с помощью clang из образа Xcode 7.2 и запуск полученного бинарника. Более новые версии Xcode поставляются в виде архивов .xip, которые распаковываются внутри shell с помощью unxip. Обратите внимание на то, чего пример не обещает: работает тулчейн Xcode, но не само приложение Xcode.
Проект также запускается под WSL 2, поэтому его можно запускать и на машинах с Windows.
Ограничения
- Поддержка GUI на лендинге охарактеризована как базовая и экспериментальная, предназначенная для простых графических приложений. Рассчитывать на запуск полноценного десктопного приложения для macOS не стоит.
- Установщики
.mpkgне поддерживаются. - Префикс на базе overlayfs не может находиться на NFS или eCryptfs, а путь по умолчанию сразу выдаёт ошибку при зашифрованном домашнем каталоге.
- Вопрос архитектуры CPU не затронут ни на одной из страниц, что критично на фоне перехода софта для macOS исключительно на сборки под arm64.
- Поддержка приложений для iOS - долгосрочное пожелание, которое упирается в необходимость писать UIKit с нуля.
- Пакеты от сообщества существуют, но команда Darling их явно не проверяет; официальные пакеты покрывают лишь некоторые дистрибутивы.
Связанное
Darling ссылается на опыт Wine, а в abi-stability описано, почему Win32 ABI через Wine в итоге стал стабильной бинарной мишенью в Linux. Darling до такого состояния ещё далеко, поскольку именно те фреймворки, которые требуются GUI-приложениям, всё ещё приходится переписывать. О том, чего стоит довести требовательное приложение до работы через слой совместимости, подробно рассказано на примере Wine в lightroom-cc-on-linux.
В списке наблюдения из-за ситуации с GUI: проверить снова, запустят ли доработки AppKit и Metal-поверх-Vulkan нетривиальные графические приложения.
Репозиторий: darlinghq/darling, GPL-3.0 (подмодули могут отличаться). Число звёзд не зафиксировано.