Pourquoi MacOS est-il souvent appelé "Darwin" ?
Ce n'est pas le cas. MacOS n'est pas Darwin et Darwin n'est pas MacOS.
L'histoire de MacOS est longue, alambiquée et compliquée.
Cela commence avec Steve Jobs (pas tout à fait volontaire) qui "quitte" Apple et fonde NeXT. NeXT voulait révolutionner la station de travail personnelle. Ils ont construit à la fois un ordinateur puissant, le NeXT Computer (plus tard NeXTstation et NeXTcube), et un système d'exploitation puissant et moderne, appelé NeXTStep. (Vous comprenez ? L'étape suivante pour l'ordinateur suivant. Un nom vraiment créatif).
Le système d'exploitation était basé sur le portage de BSD sur un micro-noyau Mach, et sur l'ajout de bibliothèques système, de cadres et de boîtes à outils orientés objet (appelés "kits", que vous pouvez encore voir aujourd'hui dans le naming d'Apple), avec un cadre et un bureau d'interface graphique orientés objet, avec des applications orientées objet, le tout écrit dans un langage de programmation moderne orienté objet (Objective-C) comme langage système, par-dessus le système BSD de base. Le système d'affichage était basé sur PostScript, et il y avait même un coprocesseur Intel i860 exécutant une version dépouillée du système d'exploitation, uniquement pour le traitement du PostScript d'affichage, plus un puissant DSP pour le traitement vidéo et audio.
NeXTStep a été le pionnier de nombreuses choses que nous voyons dans la programmation graphique moderne. Il possédait l'un des premiers constructeurs d'interfaces graphiques, qui est encore aujourd'hui le moyen de concevoir des interfaces graphiques pour MacOS, iOS, iPadOS, etc. (Aujourd'hui, il s'appelle Xcode Interface Builder.) Il a donné naissance au tout premier App Store. Lorsque Tim Berners-Lee a inventé le World Wide Web, il a choisi NeXTStep comme système d'exploitation pour lequel il a écrit le premier navigateur. De nombreux studios de jeux ont utilisé NeXTStep et des stations de travail NeXT pour leur développement, par exemple id software pour Doom, Doom 2 et Quake. Lotus Improv, que beaucoup considèrent encore aujourd'hui comme bien meilleur qu'Excel, a été implémenté sur NeXTStep.
Plus tard, NeXT a séparé les cadres de haut niveau du système d'exploitation sous-jacent et les a rendus disponibles sous le nom d'OpenStep pour Windows NT, Sun Solaris, et sous le nom "OPENSTEP for Mach" toujours basé sur les mêmes bases que le NeXTStep original.
À ce moment-là, Apple avait essayé et échoué plusieurs fois à moderniser MacOS, et ils ont acheté NeXT (ramenant ainsi Steve Jobs dans la société) et toute sa propriété intellectuelle et sa technologie pour développer un successeur à MacOS basé sur OPENSTEP pour Mach. Ils ont modernisé le noyau Mach de 2.5 à 3 et l'ont étendu avec des concepts du noyau FreeBSD pour former un noyau connu sous le nom de xnu (une référence à l'échec du projet nuKernel chez Apple qui devait développer un "nouveau noyau"), et les bases BSD de 4.3BSD à 4.4BSD et plus tard FreeBSD.
Plus important encore, ils ont étendu et développé les API d'OpenStep et ont construit de nouvelles API par-dessus. L'ensemble de ces API est connu sous le nom de "Cocoa". Ils ont également construit une API appelée "Carbon", qui était une réimplémentation proche, mais pas identique, d'un sous-ensemble de l'API MacOS sur les nouvelles fondations. (L'intention était que, bien qu'il ne soit pas possible de simplement recompiler les applications MacOS existantes, il devrait être assez facile de les porter vers Carbon, puis au fil des ans de les réécrire en Cocoa).
Le premier prototype de ce système s'appelait Rhapsody. Le système complet n'étant pas terminé à temps, un sous-ensemble a été publié sous le nom de MacOS X Server 1.0. Et le reste appartient à l'histoire : Rhapsody est devenu MacOS X, puis OS X, puis MacOS, et quelque part en chemin, iOS a été séparé, puis divisé en iOS, iPadOS, tvOS et watchOS.
Maintenant, revenons à Darwin : Darwin est essentiellement le fondements de MacOS, depuis le noyau xnu, IOKit, les pilotes, etc. jusqu'aux bibliothèques et userland BSD, plus quelques développements spécifiques à MacOS tels que mDNSresponder et launchd. Il n'inclut cependant aucune partie de ce qui était OpenStep, Cocoa, Aqua, Quartz, QuickTime, ou tout autre élément de plus haut niveau. Il contient des pilotes et des systèmes de fichiers, bien que je ne sois pas tout à fait sûr que APFS fasse partie de Darwin.
Si vous repensez au moment où NeXT a "divorcé" l'OpenStep de haut niveau de ses fondations, les parties de bas niveau qui sont pas OpenStep serait celui qui deviendrait plus tard Darwin.
Au début, Apple avait l'habitude de mettre Darwin à disposition en tant que système d'exploitation distinct, y compris des binaires compilés, des installateurs, des ISO, etc. que vous pouviez installer sur du matériel Apple. Cependant, depuis de nombreuses années maintenant, Apple ne fournit qu'un dump du code source, à chaque fois qu'une nouvelle version de MacOS sort. Il n'est même pas possible de compiler ce code source, car il dépend des outils et du pipeline de construction internes d'Apple. Certains projets ont tenté de patcher Darwin pour le compiler avec des outils disponibles publiquement, mais ces projets sont tous morts par manque d'intérêt.
Étant donné que toutes les choses que vous avez mentionnées sont nées sous Unix et utilisent des API et des bibliothèques Unix, elles ne connaissent généralement pas les parties "non Darwin" de MacOS, il est donc logique qu'elles considèrent le système d'exploitation comme "Darwin". Notez que "Darwin" est également le nom du système d'exploitation qui est renvoyé lorsque vous appelez la commande Unix/POSIX int uname(struct utsname *buf)
ou la fonction de la bibliothèque uname
Utilitaire de ligne de commande Unix/POSIX.
Donc, pour répondre à la question que vous n'avez pas posée explicitement mais qui est implicite dans votre question : pourquoi Node.js renvoie-t-il "Darwin" pour le nom de MacOS ? Parce que lorsque Node.js demande à MacOS son nom, c'est ce que MacOS lui dit être son nom !
3 votes
C'est pour la même raison que le système d'exploitation Ubuntu est souvent appelé "Linux" ou que le système d'exploitation RaspberryPi est appelé "Linux" - Linux n'est pas un système d'exploitation. C'est un noyau qui peut être utilisé comme le cœur de votre système d'exploitation. C'est pourquoi nous appelons Android un système d'exploitation, même s'il utilise le noyau Linux.
8 votes
Darwin, cependant, est un système d'exploitation, pas seulement un noyau (le noyau s'appelle xnu). Apple avait l'habitude de le rendre disponible sous la forme d'un système d'exploitation distinct, avec des binaires, un installateur, des ISO, etc.
3 votes
MacOS est un système complet. Darwin n'a pas l'interface graphique Aqua, c'est donc du texte brut ou - comme la plupart des autres variantes d'Unix/Linux - une interface graphique X11.