Home

Binärkompatibilität

Binärkompatibilität bezeichnet die Fähigkeit von Softwarekomponenten, Binärdateien zu verknüpfen oder auszuführen, ohne dass der Quellcode neu kompiliert werden muss. Sie hängt eng mit dem Application Binary Interface (ABI) zusammen, das Festlegungen zu Funktions- und Datenschnittstellen, Aufrufkonventionen, Datentypen, Speicherlayout und Start-up-Code umfasst. Abhängigkeiten erstrecken sich über Architektur, Betriebssystem und Compiler. Praktisch bedeutet dies, dass Programme eine neue Bibliothek oder Laufzeitumgebung nutzen können, ohne neu zu kompilieren.

Man unterscheidet Abwärts- und Vorwärtskompatibilität. Abwärtskompatibilität bedeutet, dass neuere Systeme oder Bibliotheken ältere Binärdateien unterstützen; Vorwärtskompatibilität

Herausforderungen ergeben sich bei ABI-Änderungen: Das Layout von Strukturen, Funktionssignaturen oder Aufrufkonventionen kann sich ändern; Funktionen

Maßnahmen zur Wahrung der Binärkompatibilität umfassen eine ABI-stabile Politik, Bibliothek-Versionierung einschließlich Symbolversionierung, Deprecation-Strategien, Wrapper- oder Adapter-Schichten

Beispiele finden sich in Linux mit der glibc-ABI und Windows mit der Win32/Win64-ABI. POSIX-Standards helfen ebenfalls,

zielt
darauf
ab,
dass
ältere
Binärdateien
mit
zukünftigen
Versionen
funktionieren.
Erreicht
wird
dies
oft
durch
stabile
ABIs,
klare
Versionierung
und
gut
definierte
Symbolschnittstellen.
können
hinzugefügt
oder
entfernt
werden;
Compiler-
oder
Linker-Verhalten
kann
variieren.
Weitere
Ursachen
sind
Endianness,
Datengrößen,
Speicherausrichtung
sowie
Export-
und
Import-Symbole
bei
dynamischer
Verlinkung.
Sicherheits-
oder
Leistungsanpassungen
kann
ebenfalls
zu
Bruchstellen
führen,
wenn
sie
das
ABI
betreffen.
sowie
Containerisierung
oder
plattformabhängige
Paketverwaltung,
um
Abhängigkeiten
gezielt
zu
steuern.
stabile
Verträge
zu
wahren,
während
Entwickler
Abwärtskompatibilität
über
Minor-Versionen
anstreben.