Présentation de Darling

Darling est une couche de traduction qui permet d’exécuter des binaires macOS directement sous Linux, sans recourir à un émulateur matériel. Le projet est publié sous licence GPL‑v3 et son code source est hébergé publiquement sur GitHub. La démarche repose sur l’utilisation exclusive des parties du système Darwin rendues libres par Apple, ce qui évite toute violation de l’EULA d’Apple.

~ $ uname
Linux
~ $ darling shell
Darling [~]$ uname
Darwin

Architecture et composants clés

Darling implémente l’ensemble de l’environnement Darwin, incluant le micro‑noyau Mach, le chargeur dynamique dyld et le gestionnaire de services launchd. Ces composants sont re‑compilés pour l’architecture x86_64 Linux et interagissent avec le noyau Linux via des appels système traduits. La couche Cocoa repose principalement sur le projet Cocotron, complété par Apportable Foundation et des bibliothèques dérivées de GNUstep, ce qui fournit les API Objective‑C attendues par les applications macOS.

Le processus de traduction se déroule en trois étapes : interception des appels système macOS, conversion vers les équivalents Linux, puis exécution du code natif. Cette approche minimise la surcharge liée à la virtualisation, mais impose une correspondance précise entre les ABI (Application Binary Interface) des deux systèmes. Toute divergence, par exemple dans la gestion de la mémoire virtuelle ou les signaux, nécessite une implémentation spécifique dans le traducteur.

Support graphique et limites actuelles

Darling propose un support expérimental pour les applications graphiques simples. Le rendu s’appuie sur X11 ou Wayland, en traduisant les appels Cocoa vers les bibliothèques graphiques Linux. Cette couche est encore incomplète : les applications dépendant de Metal, Core Animation avancé ou de services de fenêtre complexes rencontrent des échecs ou des comportements inattendus. Le projet indique que le support GUI « basic » est fonctionnel, mais qu’une intégration complète, comparable à Wine pour Windows, reste à développer.

Le fonctionnement sous WSL 2 est également possible, car le traducteur ne dépend pas d’un noyau Linux natif mais uniquement des interfaces système exposées par le sous‑système. Cependant, les performances graphiques sont limitées par la couche d’affichage de Windows.

Perspectives d’évolution et contraintes légales

À moyen terme, les développeurs visent le support des applications iOS sur les appareils ARM, ce qui nécessiterait une ré‑implémentation de UIKit et une adaptation du modèle d’exécution aux architectures non‑x86. Cette ambition implique des défis de compatibilité binaire et de gestion des ressources propres aux processeurs ARM.

Sur le plan juridique, Darling se limite aux parties du code Darwin publiées sous licence libre. Toute extension qui incorporerait du code propriétaire d’Apple pourrait entraîner des conflits de licence. Le projet maintient donc une séparation stricte entre le code open‑source et les composants non distribués.