Universal Binary 2: Was ist mit älteren macOS-Versionen?

Schon bei der Migration von PowerPC- zu Intel-Prozessoren führte Apple ein neues App-Format ein, um PowerPC- und Intel-Versionen in einer App zu vereinen. Nutzer mussten sich im Idealfall keinerlei Gedanken machen – macOS wählte den passenden auszuführenden Code automatisch aus. Bei der Umstellung von Intel- auf Apple-eigene Prozessoren steht Apple nun vor genau dem selben Problem und führt daher das "Universal Binary 2"-Format ein – doch dies scheint nur ein Marketing-Name zu sein.


Für den ARM-Umstieg erfand Apple das Rad nicht neu: Das Mach-O-Binärformat für ausführbare Dateien passte Apple nicht an – es ist noch genau das selbe Format, welches Apple beim damaligen Intel-Umstieg verwendete. Daher lassen sich rein vom Binärformat der ausführbaren Datei noch Apps erstellen, welche in Mac OS X 10.4 lauffähig sind.

Es ist sogar möglich, eine ausführbare Datei für ARM, Intel und PowerPC zu erzeugen, wie der Entwickler von TenFourFox dokumentiert. Bei TenFourFox handelt es sich um einen Port moderner Firefox-Versionen für betagte PowerPC-Macs.

Sollte also ein App-Hersteller derzeit 10.12 oder 10.13 unterstützen, aber eine ARM-Version ankündigen, ist nicht damit zu rechnen, dass die App plötzlich nicht mehr mit macOS 10.12 oder 10.13 zusammenarbeitet – das Binärformat wird auch von älteren Betriebssystemen erkannt.

Einschränkung: Frameworks
Das Binärformat von ausführbaren Dateien erlaubt es, selbst Mac-Betriebssysteme zu unterstützen, welche 10 Jahre oder älter sind. Doch werden kaum Entwickler von modernen Mac-Apps diese Option nutzen, da mit Schwierigkeiten aus einer anderen Richtung zu rechnen ist: Apple passte über die Jahre diverse Programmierbibliotheken an und fügte neue hinzu, welche sich nicht in älteren Betriebssystemversionen wiederfinden. Daher ist es in den allermeisten Fällen für die App-Entwickler nicht wirtschaftlich, noch ältere Systemversionen zu unterstützen.

Terminal: lipo
Apple liefert ein interessantes Terminal-Programm namens "lipo" aus: Hiermit kann man feststellen, welche Architekturen ein Programm unterstützt. Das Kommando…
lipo -archs /Applications/Keynote.app/Contents/MacOS/Keynote 
…gibt beispielsweise aus, welche Prozessorarchitekturen von Apple Keynote unterstützt werden (im aktuellen Fall nur x86/Intel). Aber lipo ist auch dafür gedacht, bestimmte Architekturen aus einer App zu entfernen oder um ein "Universal Binary" per Hand zusammenzubauen.

Kommentare

Dirk!14.07.20 09:00
Ich habe hier noch ein selbstgeschriebenes Tool in Objective-C für NextStep/OPENSTEP von ca. 1995, dass mittels lipo alle nicht benötigten Architekturen rekursiv aus einem App-Bundle entfernt. Damals bis zu 4 (68k, i386, sparc, hppa) und Speicherplatz war kostbar.
+1
Zerojojo14.07.20 09:27
Kurzfassung: Universal Binary 2: Was ist mit älteren macOS-Versionen? Alles gut!

Die Überschrift klang dramatischer.
-1
UWS14.07.20 10:05
Zerojojo
Die Überschrift klang dramatischer.

Eine Überschrift sollte eine Einführung in den Artikel darunter geben, zum Lesen anregen und im Idealfall (Boulevard außen vor gelassen) kein allzu dramatischer Clickbait sein. Die Überschrift erfüllt das alles doch aus meiner Sicht bestens...

...und ich gehe jetzt mal davon aus, dass sie zwischenzeitlich nicht geändert wurde (Stand 14.07.2020 10:05 = Universal Binary 2: Was ist mit älteren macOS-Versionen?)

Universal Binary 2: War es das mit alten macOS-Versionen?
Universal Binary 2: Das Ende alter macOS-Versionen?
Universal Binary 2: Der Tod alter macOS-Versionen?
Universal Binary 2: Die Zerstörung von macOS* wie wir es kennen?
(*betrifft es nur alte Versionen?)


DAS wäre dramatisierend... wichtig übrigens, dabei nie das Fragezeichen vergessen
+1
Zerojojo14.07.20 10:33
Vielleicht bin ich schon zu sehr von der Boulevard Presse genordet, dass ich hier gelesen habe: Universal Binary 2: UND WAS IST MIT ÄLTEREN macOS VERSIONEN???

Wollte die Überschrift nicht an den Pranger stellen.
+1
Mendel Kucharzeck
Mendel Kucharzeck14.07.20 11:08
Wir hatten bei der Vorstellung des "neuen" Universal-Binary-Formates erstmal Angst um die Kompatibilität unserer Software-Projekte wie MacStammbaum, Screenium, iFinance und Logoist. Wir versuchen möglichst, die Systemvoraussetzungen einer großen Version gleich zu halten – wenn Universal Binaries 2 nicht mehr unter 10.13 geklappt hätten, wäre das mehr als problematisch. Zum Glück ist es ja vollständig kompatibel mit alten macOS-Versionen.
+1
ssb
ssb14.07.20 11:38
Universal Binary 2 ist nur Marketing Blabla. Das war Universal Binary schon.

Das sind einfach MACH-O FAT ARCHIVE Dateien, da könnte man sogar noch PPC mit hinzufügen, wenn man einen passenden Compiler hat (clang in Xcode kann das nicht, der offizielle clang schon - aber dann fehlen die Frameworks).
Ich habe da auch schon selbst Tools geschrieben, die UBs aufdröseln, damit dann lustige Dinge tun und sie am Schluß wieder zusammenfügen. Ist kein Hexenwerk, stammt alles noch aus den Anfangszeiten des MACH-Kernels.
0
Mecki
Mecki14.07.20 12:41
ssb
Universal Binary 2 ist nur Marketing Blabla. Das war Universal Binary schon.

Das sind einfach MACH-O FAT ARCHIVE Dateien, da könnte man sogar noch PPC mit hinzufügen
Warum wiederholst du alles das, was hier schon im Artikel steht? Da steht sowohl, dass das nur ein Marketing Name ist, als auch, dass man sogar PPC noch hinzufügen könnte.
+5
Retrax14.07.20 14:20
Hat sich Apple eigentlich schon bzgl. nativer ARM Versionen ausgelassen?

Ist das wenn die ARM Macs rauskommen vielleicht sogar erstmal gar nicht erwünscht - sondern UB2 soll der App Standard der kommenden Jahre sein?
-1
Mendel Kucharzeck
Mendel Kucharzeck14.07.20 14:43
Retrax
Das verstehe ich nicht. Apple will so viele native Apps wie möglich haben – daher schicken die ja auch das DTK an Entwickler raus, um das zu gewährleisten.
+2

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.