Darling es una capa de compatibilidad de macOS de código abierto y gratuita para Linux. [1] Duplica funciones de macOS al proporcionar implementaciones alternativas de las bibliotecas y los marcos que llaman los programas de macOS. [2] Este método de duplicación difiere de otros métodos que también podrían considerarse emulación, [3] donde los programas de macOS se ejecutan en una máquina virtual . [4] Se ha dicho que Darling es la contraparte de WINE para ejecutar aplicaciones de macOS. [5]
El proyecto comenzó en el verano de 2012 y se basa en un proyecto anterior, llamado maloader, que se interrumpió debido a la falta de tiempo. Se ha demostrado que la capa funciona con muchas aplicaciones de consola , como Midnight Commander , The Unarchiver , Python , etc. en la capa, pero también tiene soporte básico para aplicaciones gráficas basadas en el marco Cocoa. [6] [1] Darling tiene la capacidad de extraer imágenes de disco de Apple . [7]
El proyecto tiene como objetivo dar soporte a aplicaciones iOS en el futuro. [8]
En la entrada del sistema Darling hay un cargador para binarios Mach-O , el formato ejecutable de los sistemas operativos de Apple . El predecesor de Darling, maloader, presentó un enfoque maximalista al problema al intentar replicar todo lo que hace el cargador de biblioteca dinámica dyld de Apple. Esto resultó ser difícil y, desde una "transición a Mach-O" en 2017, Darling ha estado usando un cargador liviano lo suficiente como para lanzar el cargador de código abierto dyld de Apple en su lugar. [9]
Para proporcionar a los binarios de macOS un núcleo , Darling utiliza un núcleo XNU modificado (con una licencia APSL) envuelto en un módulo de núcleo Linux con una licencia GPL. [ necesita actualización ] No es lo mismo que incluir código GPL en software APSL, y la licencia APSL permite la vinculación desde código con una licencia diferente (en este caso GPL). El módulo maneja el trabajo típico de un núcleo Mach , principalmente el manejo de puertos IPC . [10] Existen algunos problemas de licencia [ cita requerida ] en el módulo darling-mach, ya que el equipo está agregando modificaciones GNU GPL al núcleo APSL . [11] [ verificación fallida ]
El entorno raíz está por encima del núcleo. Darling, al igual que WINE, admite prefijos chroot , implementados mediante el sistema operativo Linux overlayfs (a diferencia de la traducción de rutas en WINE). Los espacios de nombres PID , IPC y UTS se utilizan para crear un contenedor para el sistema Darwin en su interior.
Los frameworks y bibliotecas de sistema de Darling se basan, en la medida de lo posible, en el código fuente publicado por Apple. La transición a Mach-O permite que estos frameworks se creen más fácilmente, porque ahora están creados en el formato Mach-O para el que fueron diseñados. [9] Para llenar los vacíos de muchos frameworks de nivel superior como Cocoa , Darling utiliza código de Cocotron, ApportableFoundation y GNUstep . [1]
El sistema Darling más grande se basa en muchos componentes externos que utilizan varias licencias, todas ellas de código abierto. La licencia principal es GPLv3 . [12]
Darling utiliza un módulo de kernel para proporcionar ciertas funciones específicas de OS X, principalmente Mach Ports IPC. Ninguna aplicación de OS X se puede ejecutar sin este módulo, ya que Libc requiere Mach Ports para su inicialización e incluso para cosas muy básicas como sleep().