En varios idiomas, en lugar de devolver algo como "MacOS", el comando para ver el sistema operativo devuelve
Darwin
Veo esto en lenguajes como R, y node.
¿Por qué MacOS se llama a veces Darwin?
En varios idiomas, en lugar de devolver algo como "MacOS", el comando para ver el sistema operativo devuelve
Darwin
Veo esto en lenguajes como R, y node.
¿Por qué MacOS se llama a veces Darwin?
¿Por qué se suele llamar a MacOS "Darwin"?
No lo es. MacOS no es Darwin y Darwin no es MacOS.
La historia de MacOS es larga, enrevesada y complicada.
Comienza con Steve Jobs (no del todo voluntario) "dejando" Apple y fundando NeXT. NeXT quería revolucionar la estación de trabajo personal. Construyeron tanto un potente ordenador, el NeXT Computer (más tarde NeXTstation y NeXTcube), como un potente y moderno sistema operativo, llamado NeXTStep. (¿Lo entiende? El siguiente paso para el siguiente ordenador. Un nombre realmente creativo).
El sistema operativo se basaba en portar BSD a un micronúcleo Mach, y en añadir librerías de sistema orientadas a objetos, marcos de trabajo y kits de herramientas (llamados "kits", que todavía se pueden ver en la nomenclatura de Apple hoy en día), con un marco de trabajo y un escritorio de interfaz gráfica de usuario orientados a objetos, con aplicaciones orientadas a objetos, todo ello escrito en un lenguaje de programación moderno orientado a objetos (Objective-C) como lenguaje de sistemas, sobre el sistema base BSD. El sistema de visualización estaba basado en PostScript, e incluso había un coprocesador Intel i860 que ejecutaba una versión reducida del sistema operativo, sólo para el procesamiento de Display PostScript, además de un potente DSP para el procesamiento de vídeo y audio.
NeXTStep fue pionero en muchas cosas que vemos en la programación moderna de interfaces gráficas. Tuvo uno de los primeros constructores de GUIs gráficas, que todavía hoy es la forma de diseñar GUIs para MacOS, iOS, iPadOS, etc. (Hoy se llama Xcode Interface Builder). Tuvo la primera App Store de la historia. Cuando Tim Berners-Lee inventó la World Wide Web, eligió NeXTStep como el sistema operativo para el que escribir el primer navegador. Muchos estudios de juegos utilizaron NeXTStep y estaciones de trabajo NeXT para su desarrollo, por ejemplo, id software para Doom, Doom 2 y Quake. Lotus Improv, considerado por muchos como muy superior a Excel incluso ahora, se implementó en NeXTStep.
Más tarde, NeXT separó los marcos de trabajo de alto nivel del sistema operativo subyacente y los puso a disposición bajo el nombre de OpenStep para Windows NT, Sun Solaris y bajo el nombre de "OPENSTEP para Mach", todavía basado en los mismos fundamentos que el NeXTStep original.
En este punto, Apple había intentado y fracasado múltiples veces modernizar MacOS, y compraron NeXT (con lo que Steve Jobs volvió a la empresa) y toda su propiedad intelectual y tecnología para desarrollar un sucesor de MacOS basado en OPENSTEP para Mach. Modernizaron el kernel de Mach de 2.5 a 3 y lo ampliaron con conceptos del kernel de FreeBSD para formar un kernel conocido como xnu (una referencia al fallido proyecto nuKernel de Apple que iba a desarrollar un "nuevo kernel"), y los fundamentos de BSD desde 4.3BSD hasta 4.4BSD y posteriormente FreeBSD.
Y lo que es más importante, ampliaron y expandieron las APIs de OpenStep y construyeron nuevas APIs sobre ellas. La colección de esas APIs se conoce como "Cocoa". También construyeron una API llamada "Carbon", que era una reimplementación cercana, pero no idéntica, de un subconjunto de la API de MacOS sobre las nuevas bases. (La intención era que, si bien no sería posible simplemente volver a compilar las aplicaciones existentes de MacOS, debería ser bastante fácil portarlas a Carbon, y luego, con los años, reescribirlas en Cocoa).
El primer prototipo de este sistema se llamó Rhapsody. El sistema completo no se terminó a tiempo, por lo que se publicó un subconjunto como MacOS X Server 1.0. Y el resto es historia: Rhapsody se convirtió en MacOS X, luego en OS X, luego en MacOS, y en algún punto del camino, iOS se separó, y luego se dividió aún más en iOS, iPadOS, tvOS y watchOS.
Ahora, volvamos a Darwin: Darwin es básicamente el apuntalamiento de MacOS, desde el kernel xnu, IOKit, drivers, etc. hasta las librerías BSD y userland, además de algunos desarrollos específicos de MacOS como mDNSresponder y launchd. Sin embargo, no incluye ninguna parte de lo que solía ser OpenStep, Cocoa, Aqua, Quartz, QuickTime, o cualquier otra cosa de alto nivel. Sí contiene controladores y sistemas de archivos, aunque no estoy del todo seguro de que APFS forme parte de Darwin.
Si se piensa en el momento en que NeXT "divorció" el OpenStep de alto nivel de sus bases, las partes de bajo nivel que son no OpenStep serían los que luego se convertirían en Darwin.
Al principio, Apple solía poner a disposición de los usuarios Darwin como un sistema operativo independiente, incluyendo binarios compilados, instaladores, ISOs, etc. que se podían instalar en el hardware de Apple. Sin embargo, desde hace muchos años, Apple sólo proporciona un volcado del código fuente, cada vez que sale una nueva versión de MacOS. Ni siquiera es posible compilar este código fuente, ya que depende de las herramientas de compilación internas de Apple y del proceso de compilación. Ha habido algunos proyectos que han intentado parchear Darwin para compilarlo con herramientas disponibles públicamente, pero todos esos proyectos han muerto por falta de interés.
Dado que todas las cosas que has mencionado nacieron en Unix y utilizan APIs y bibliotecas de Unix, en realidad ni siquiera conocen las partes "no Darwin" de MacOS, por lo que es lógico que consideren que el SO es "Darwin". Tenga en cuenta que "Darwin" es también lo que se devuelve como el nombre del sistema operativo cuando se llama a la API de Unix/POSIX int uname(struct utsname *buf)
o la función de la biblioteca uname
Utilidad de línea de comandos de Unix/POSIX.
Así que, para responder a la pregunta que no has hecho explícitamente pero que está implícita en tu pregunta: ¿por qué Node.js devuelve "Darwin" como nombre de MacOS? Porque cuando Node.js pregunta a MacOS por su nombre, ¡eso es lo que MacOS le dice que es su nombre!
Darwin es el núcleo sobre el que se ejecuta MacOS (antes Mac OS X, y OS X).
Se deriva de NextSTEP, que a su vez está construido sobre un núcleo de BSD y Mach, pero Darwin es el parte de código abierto de MacOS .
Históricamente, cuando Apple compró NeXT a finales de los años 90, se basó en el sistema operativo de NeXT (NeXTSTEP) para formar la base de la siguiente versión del SO para el Mac.
Ver Darwin en Wikipedia para más detalles.
Hay muchas maneras de tomar las huellas digitales de un sistema operativo, pero un método canónico para esto en de tipo unix sistemas es llamar a uname
Qué salidas Darwin en todas las versiones y construcciones de MacOS.
Apple publica el código fuente de la parte Darwin del sistema operativo para que puedas inspeccionar el código que coincide con el nombre.
https://opensource.apple.com/release/mac-os-x-100.html
Si quieres ver esto por ti mismo, abre un shell (en Terminal.app) y podrás generar la cadena Darwin y leer la página del manual de uname
o la llamada al sistema (man 3)
uname
man uname
man 3 uname
Este es un buen ejemplo de un programa que necesita saber qué sistema se está ejecutando llamando a uname
desde un shell script. Luego ajusta la sintaxis y las variables para hacer la misma tarea en varios SO:
Dejaré el "por qué los seres humanos hicieron esto" para otro momento - esa historia es rica y multifacética y hay toneladas de historias documentadas públicamente en Internet para los curiosos.
De Wikipedia Darwin es un sistema operativo de código abierto similar a Unix, lanzado por primera vez por Apple Inc. en 2000. Está compuesto por código desarrollado por Apple, así como por código derivado de NeXTSTEP, BSD, Mach y otros proyectos de software libre.
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.