¿En qué lenguaje de software está escrito Mac OS X?

  • El kernel de XNU/Darwin está principalmente en C, con algo de C++ para IOKit (la arquitectura de los controladores de dispositivos) y ensamblador para las cosas de muy bajo nivel.
  • La zona de usuario de Unix proviene de FreeBSD y está principalmente en C.
  • Las API del «núcleo» están principalmente en C, aunque se solapan con Cocoa en muchos lugares.
  • Cocoa está en Objective-C. Probablemente hay algunos trozos de (Objective-)C++ flotando alrededor de las aplicaciones estándar como iTunes.
  • Partes de la interfaz de usuario – sobre todo el Dock en El Capitán, pero probablemente más en futuras versiones – están escritas en Swift, pero sobre todo Swift se utiliza para el desarrollo de aplicaciones en iOS.
  • El sistema de compilación, LLVM, y sus dos principales componentes del compilador, Clang y Swift, están en C++. Curiosamente, Swift no es auto-alojado; mi entendimiento es que Chris Lattner sintió que pasar por la molestia de darle un bootstrap adecuado era una complicación innecesaria mientras el lenguaje estaba todavía en flujo. Swift también proporcionará eventualmente su propia versión del FoundationKit escrita en Swift, pero está a medio terminar en este momento.
  • Las versiones anteriores a OS X desde el Sistema 7 en adelante eran en su mayoría C++ y ensamblador (680×0 y PPC) para los nuevos componentes, aunque probablemente había una gran cantidad de código Pascal heredado de los primeros días, ya que sé que Apple nunca dio al MacOS clásico una limpieza a fondo aparte de reescribir el Finder un par de veces. (Se rumorea que en algún momento se perdieron los scripts de compilación de MPW para el núcleo del sistema operativo y que sólo pudieron reconstruir el sistema mediante parches e intercambio de componentes). La caja de herramientas, la principal API de la interfaz de usuario, estaba principalmente en ensamblador 680×0, aunque con el paso de los años las partes críticas para la velocidad se reescribieron en ensamblador PowerPC. El Modelo de Objetos del Sistema de IBM, que Apple adoptó junto con el fallido proyecto OpenDoc, no era un lenguaje, sino una ABI; su objetivo era solucionar el infame problema de la «clase base frágil» que afecta a C++ y otros lenguajes OO con múltiples implementaciones, en este caso los compiladores de Symantec (MrC), IBM (xlc), Motorola y Metrowerks (Codewarrior). (GCC no era un factor en ese momento debido a la venganza de Richard Stallman contra Apple, y Chris Lattner creo que todavía estaba en la escuela secundaria por lo que LLVM no existía todavía). Esto apareció creo que alrededor de System 7.5.5 o así, tal vez un poco después. Poco o nada de este código sigue existiendo en el sistema, con la posible excepción de algún código de cola en Quicktime Player e iTunes y los restos de Carbon.