WWDC: Mozilla Firefox als Portierungsbeispiel für Intel-Macs
Apple-Programmierer gaben auf der Entwickler-Konferenz erste Hinweise und Beispiele, wie Mac-OS-X-Software für PowerPC-Systeme auf Intel-Macs portiert werden kann.
Nur relativ wenige Änderungen mussten Apple-Entwickler am Quelltext des Web-Browsers Firefox vornehmen, damit dieser auf einem Mac-Rechner mit Intel-CPU läuft. Auf der Entwicklerkonferenz WWDC wollten die Entwickler damit exemplarisch vorführen, welche Probleme beim Portieren von PowerPC-Software auf Intel-Macs, die es ab Mitte nächsten Jahres zu kaufen geben soll, auftreten können. Apple beschreibt die Fallstricke ausführlich in dem Binary Porting Guide.
Voraussetzung für das erfolgreiche Erstellen eines Intel-kompatiblen Programms ist der Einsatz der Version 4 des Compilers gcc. Die strikten Prüfungen dieser gcc-Version finden viele Schwachstellen im Code, die sonst ein Portieren verhindern würden. Läuft ein Programm fehlerfrei durch diese Compiler-Version, hat man schon die halbe Miete geschafft, erklärten die Apple-Entwickler.
Eine weitere Stolperfalle ist die Plattformerkennung in configure-Skripten. Anhand dieser Plattformkennung wird etwa versucht, nötige Compiler-Optionen zu ermitteln. Viele Unix-Programme kennen mittlerweile Mac OS X, aber nur mit einer PowerPC-CPU. Ein Intel-Mac-OS-X wirft sie noch aus der Bahn. Die für Intel-Binaries nötige XCode-Version 2.1 legt ihre Build-Ergebnisse außerdem in anderen Verzeichnisstrukturen ab als ältere Versionen, was bisher ebenfalls ein KO-Kriterium darstellt. Um Problemen aus dem Weg zu gehen, hat Apple außerdem an einigen Systemfunktionen Änderungen vorgenommen, die es ebenfalls zu integrieren gilt, etwa bei AliasRecords, den Abmessungen von QuickDraw-Bildern oder Konstanten von CoreGraphics.
Dem Endian-Problem begegnet Apple mit speziellen Funktionen zum Umdrehen der Byte-Reihenfolge. PowerPC- und Intel-CPUs ordnen die Bytes von Zahlenwerten unterschiedlich an: Der Endian Mode bezeichnet die Art, wie Prozessoren Datenwörter im Speicher ablegen; PowerPCs verwenden Big-Endian, während die x86-Welt die Bytes umgekehrt abspeichert (Little-Endian, niederwertiges Byte zuerst). Von #ifdef-Orgien rät Apple nun ab: Die Funktionen seien so geschrieben, dass sie auf einem PowerPC-Mac -- weil unnötig -- vom Compiler wegoptimiert würden, also keine Rechenzeit kosten. Nur auf einer Intel-CPU würden sie ihre Arbeit verrichten.
Bei der Firefox-Portierung sorgten x86-Assemblerteile für Abstürze. Sie manipulierten direkt den Stack, den Mac OS X jedoch immer auf einer 16-Byte-Grenze vorfinden möchte. Entwickler von Netzwerk-Software müssen daran denken, dass auf Intel-Maschinen die Byte-Reihenfolge bei Netzwerk-Transfers nicht wie bei PowerPCs mit der des Prozessors übereinstimmt. Zum Thema Geschwindigkeit wollten sich die Apple-Entwickler übrigens nicht äußern. Dafür sei es noch zu früh, zumal der Intel-Mac des Developer Transition Kit mit 3,6-GHz-Pentium-4-CPU noch nicht optimiert sei.
Zu Apples Worldwide Developer Conference (WWDC) siehe auch: