EnglishРусский Map

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 (подмодули могут отличаться). Число звёзд не зафиксировано.