In che linguaggio software è scritto Mac OS X?

  • Il kernel XNU/Darwin è per lo più C, con un po' di C++ per IOKit (l'architettura dei driver dei dispositivi) e assembler per le cose di livello molto basso.
  • Lo userland Unix viene da FreeBSD ed è principalmente in C.
  • Le API "Core" sono per lo più in C, sebbene si sovrappongano a Cocoa in molti punti.
  • Cocoa è in Objective-C. Ci sono probabilmente alcuni frammenti di (Objective-)C++ che galleggiano nelle app standard come iTunes.
  • Parti dell'interfaccia utente - soprattutto il Dock in El Capitan, ma probabilmente di più nelle versioni future - sono scritte in Swift, ma soprattutto Swift è usato per lo sviluppo di app su iOS.
  • Il sistema di compilazione, LLVM, e i suoi due componenti principali, Clang e Swift, sono in C++. È interessante notare che Swift non è auto-ospitato; la mia comprensione è che Chris Lattner ha ritenuto che passare attraverso il problema di dargli un adeguato bootstrap fosse una complicazione non necessaria mentre il linguaggio era ancora in evoluzione. Swift alla fine fornirà anche la propria versione del FoundationKit scritta in Swift, ma al momento è un po' mezzo finito.
  • Le versioni precedenti all'OS X da System 7 in poi erano per lo più C++ e assembler (680x0 e PPC) per i nuovi componenti, anche se probabilmente c'era molto codice Pascal dei primi tempi, dato che so che Apple non ha mai dato una ripulita completa al MacOS classico a parte riscrivere il Finder un paio di volte. (Si diceva che ad un certo punto avessero perso gli script di compilazione MPW per il nucleo del sistema operativo e che potessero ricostruire il sistema solo applicando patch e scambiando componenti). Il Toolbox, la principale API dell'interfaccia utente, era principalmente in assembler 680x0, anche se nel corso degli anni le parti critiche per la velocità furono riscritte in assembler PowerPC. Non un linguaggio ma un ABI era il System Object Model di IBM, che Apple adottò insieme al fallito progetto OpenDoc; questo aveva lo scopo di affrontare il famigerato problema della "classe base fragile" che colpisce il C++ e altri linguaggi OO con implementazioni multiple, in questo caso compilatori di Symantec (MrC), IBM (xlc), Motorola, e Metrowerks (Codewarrior). (GCC era un non fattore all'epoca a causa della vendetta di Richard Stallman contro Apple, e Chris Lattner penso fosse ancora al liceo, quindi LLVM non esisteva ancora). Questo è apparso credo intorno a System 7.5.5 o giù di lì, forse un po' dopo. Poco o niente di questo codice esiste ancora nel sistema, con la possibile eccezione di qualche codice collante in Quicktime Player e iTunes e i resti di Carbon.