# Carbon (Apple)

Carbon ist eine Sammlung von Programmierschnittstellen (APIs) von Apple, die Teile des unter der Macintosh System Software enthaltenen Macintosh-Baukasten (englisch Macintosh Toolbox) bereitstellt. Es war von vornherein als Brückentechnologie gedacht, um es seinerzeit Programmentwicklern möglichst leicht zu machen, ihre Mac-OS-Applikationen für das später erschienene Mac OS X vorzubereiten. Zum Zeitpunkt der Einführung war Mac OS 8 das aktuelle Betriebssystem von Apple, Mac OS 9 sowie dessen Nachfolger und neue Betriebssystemgeneration Mac OS X befanden sich in Entwicklung.
Mac OS X wurde 2012 in OS X umbenannt, ohne „Mac“ im Namen, und 2016 schließlich in macOS. Carbon wurde seit 2007 nicht mehr weiterentwickelt und blieb daher auf 32-Bit beschränkt, ist jedoch bis macOS Mojave (10.14, 2018) Bestandteil des Betriebssystems. Ab macOS Catalina, der 2019 veröffentlichten Version 10.15 des ursprünglichen Mac OS X, fehlt Carbon gänzlich, auch deshalb, weil seit dieser Version generell nur mehr 64-Bit-Anwendungen unterstützt werden.

## Macintosh Toolbox

Die Macintosh Toolbox, zu Deutsch auch Macintosh-Baukasten, ist jener Teil an Funktionsaufrufen des originalen Macintosh Systems (1984), die im ROM untergebracht und dadurch fest mit dem jeweiligen Macintosh-Computer verbunden waren. Lange Zeit war es von Apple so dargestellt worden, dass nur ein Apple-Computer die grafischen Funktionen auf diese Weise bereitstellen kann.
Die Toolbox erlaubt es Programmierern, bereitgestellte Funktionen der System Software zu nutzen, um auf einfache Weise vom System erstellte (und somit auch einheitlich aussehende) Fenster, Menüs, Kontrollkästchen und Dialogfelder zu erstellen und Ereignisse zu steuern. Auch Funktionen des Finder, der selbst nicht Teil des Toolbox-ROM ist, lassen sich über dieselbe Art von Funktionsaufrufen nutzen.
Im Laufe der Entwicklung der Macintosh System Software wurde die Programmierschnittstelle (API) stetig erweitert, etwa um QuickDraw und QuickTime. Undokumentierte Funktionen wurden jedoch auch gestrichen. So war mit System 7 (1991) die zuvor in Pascal programmierte API in C neu implementiert worden, was die Portierung des Betriebssystems von der m68k- auf die PowerPC-Architektur erleichterte. Auch wurde im Zuge des Projekts „Star Trek“ an einer Portierung von System 7 und damit auch der enthaltenen Programmierschnittstelle auf x86-PCs gearbeitet, diese wurde aber nicht fertiggestellt. Da viele Macintosh-Anwenderprogramme für System 6 undokumentierte Funktionen nutzten, mussten die Entwickler diese bereits für System 7 anpassen.
Ab 1997 versuchte Apple auf eine gänzlich neue Programmierschnittstelle zu wechseln: die von NeXT übernommene OpenStep-API, die mit dem Betriebssystemprojekt Rhapsody als Yellow Box und mit Mac OS X als Cocoa weiterentwickelt wurde. Dabei hätten jedoch alle existierenden Macintosh-Programme vollkommen neu geschrieben werden müssen. Die Hersteller von für Apple unverzichtbarer Anwendungssoftware gaben nach der WWDC 1997 zu verstehen, dass sie diesen Portierungsaufwand nicht in Kauf nehmen würden, woraufhin Apple notgedrungen einen großteils Quelltext-kompatiblen Ersatz für den Macintosh-Baukasten entwickeln musste. Dieser Ersatz ist Carbon, der mit Mac OS X eingeführt wurde und auch für das klassische Mac OS als CarbonLib verfügbar ist. Damit waren nur geringere Anpassungen am Quelltext nötig, damit ein bestehendes Macintosh-Programm für das Carbon-API neu kompiliert werden konnte, das dann auf beiden Betriebssystemen (Mac OS und Mac OS X) lauffähig ist.

## Carbon

Carbon basiert auf den Programmierschnittstellen des Macintosh-Baukasten (englisch Macintosh Toolbox) der klassischen Macintosh System Software (1984, ab 1996 Mac OS), abzüglich derer, die historisch gewachsen und redundant waren, und solcher, die typischen Mac OS X-Funktionen wie präemptivem Multitasking und Speicherschutz im Weg standen. So wurden von ca. 8.000 Funktionen auf dem klassischen Mac OS rund 2.000 Funktionen nicht in Carbon übernommen. Wurde ein Mac-OS-Programm so geschrieben, dass es die Carbon-Bibliothek nutzte, so konnte es sowohl auf Mac OS als auch auf Mac OS X nativ ausgeführt werden. Voraussetzung war jedoch, dass kein Motorola-68k-Code mehr verwendet wurde, da Carbon unter Mac OS nur auf der PowerPC-Architektur verfügbar war.
Mit dem Verwenden der Carbon-Bibliothek ergab sich für die Entwickler der Vorteil, bereits bestehenden Quelltext in großen Teilen weiter verwenden zu können. Der Portierungsaufwand war also überschaubar, denn für die modernere Cocoa-API, die ihren Ursprung im NeXT-Betriebssystem NeXTStep hat, hätte ein sehr großer Anteil des Quelltextes der bestehenden Programme neu geschrieben werden müssen. Viele bekannte Programme waren noch lange Zeit Carbon-Programme, beispielsweise auch Adobe Photoshop bis zur Version CS4 (Ende 2008). Apple selbst nutzte Carbon für einige Bestandteile von Mac OS X, die es auch schon unter Mac OS gab – erst für Mac OS X Snow Leopard (10.6, 2009) wurde beispielsweise der Finder in Cocoa neu geschrieben. Auch die Frontends von iTunes und QuickTime Player für Mac OS 9, Mac OS X und Windows basierten lange Zeit auf Carbon. Neu entwickelte Apple-Programme wie z. B. der Safari-Browser für Mac OS X und Windows basierten hingegen von Beginn an auf dem moderneren Cocoa.
Die Carbon-Bibliothek ist in Mac OS X seit der ersten Version (Public Beta, 2000) Bestandteil des Betriebssystems. Unter Mac OS 8.1 bis 9.2.2 muss die Bibliothek, die gratis zum Herunterladen verteilt wurde, manuell nachinstalliert werden. Nach Meinung eines Entwicklers kann Carbon allerdings erst ab der in Mac OS X 10.2 („Jaguar,“ 2002) integrierten Version als fertig betrachtet werden. Die letzte Version der CarbonLib ist 1.6 und benötigt mindestens Mac OS 8.6. In der Classic-Umgebung ist CarbonLib 1.6.1 enthalten, das automatisch in das virtualisierte Mac OS 9.1 oder neuer installiert wird.
Programme, die die Carbon-Bibliothek verwendeten und auf Mac OS und Mac OS X lauffähig waren, hießen zumeist carbonized applications (übersetzt also „carbonisierte Programme“). Auf spätere reine Mac-OS-X-Programme, die die Carbon-Bibliothek verwendeten, wurde der Begriff nicht angewandt.
Bereits in Mac OS X Tiger (10.4, 2005) konnten 64-Bit-Konsolenprogramme ausgeführt werden; mit Mac OS X Leopard (10.5, 2007) war Cocoa 64-Bit-tauglich. Seit Mac OS X Snow Leopard (10.6, 2009) konnte entweder ein 32-Bit- oder ein 64-Bit-Kernel gestartet werden. Ab OS X Mountain Lion (10.8, 2012) ist das Betriebssystem voll auf 64-Bit umgestellt. Pläne, auch Carbon 64-Bit-tauglich zu machen, wurden von Apple 2007 fallengelassen. Während sich Mac OS X also schrittweise in ein reines 64-Bit-Betriebssystem verwandelte, wurde die Weiterentwicklung von Carbon nun endgültig eingestellt, und alte Programme, die noch Carbon benötigten, blieben auf 32-Bit beschränkt. Unter anderem deswegen war Adobe Photoshop CS4 unter Windows bereits als 64-Bit-Programm verfügbar, unter Mac OS X jedoch noch immer ein 32-Bit-Programm. Zur Portierung von Photoshop auf Cocoa wurde ein eigenes Entwicklerteam eingesetzt (C2C: Carbon to Cocoa). Ende April 2010 veröffentlichte Adobe schließlich Photoshop CS5 als 32- und 64-Bit-Cocoa-Anwendung.
Auf dem seit 2007 verfügbaren iOS ist Carbon nicht vorhanden. Mit dem generellen Wegfall der 32-Bit-Unterstützung in macOS ab Version 10.15 (2019) wurde Carbon, das 64-Bit nicht unterstützt, endgültig entfernt.