Yamakuzure wrote:Wenn ich die
Beschreibung richtig verstehe, dann ist "abi_tag" genau dafür da, für mehr Kompatibilität zu sorgen, wenn es ABI-Änderungen gibt. Man kann dann Funktionen, Variablen und Klassendefinitionen belassen, und per abi_tag einfach neue Varianten hinzufügen, so dass das eigene Produkt zur vorherigen ABI-Version kompatibel bleibt.
Dass andere Compiler dann ersteinmal Unterstützung hierfür einbauen müssen, ist ja klar.
Das Problem bei der Art der Implementation ist aber, dass damit ein Mischbetrieb gcc-4 und gcc-5 genauso verhindert wird. Mit anderen Worten, wenn man einmal das Update zum gcc-5 gemacht hat, was ja auch mit genug Stress verbunden ist und welcher inzwischen bei Testing aktuell ist, dann ist gar nichts anderes als der gcc-5 mehr möglich.
Ein System zu schaffen, was für mehr Kompatibilität sorgen soll, welches zur Folge hat, dass man zu allem anderen inkompatibel ist, ist für mich eine suboptimale Lösung.
Ich werde mal ein Testsystem mit maskiertem gcc-5 aufsetzen und sehen, was dann passiert. So langsam wird der gcc für mich wie der IE6 und llvm wie Firefox
Es gibt nun mal Standards und an die sollte man sich halten. Ok, dass kann man dem gcc nicht vorwerfen. Aber zum Standard inkompatible Erweiterungen einzubauen, das ist eigentlich die Spezialität von Microsoft.
Um das mal ganz direkt aus der Sicht des Anwenders (nicht des Entwicklers) zu sagen: Der gcc-5 bringt mir keine Vorteile. Der erzeugte Code ist, von einigen Ausnahmen abgesehen, weder schneller noch kleiner als beim gcc-4. Für die Kompilierzeiten gilt das Gleiche. Das Teil macht nur Stress.
Natürlich kann man das als Entwickler anders sehen und ich kann das ja auch nachvollziehen. Aber die Umsetzung ist genauso wie Microsoft es damals mit dem IE gemacht. Von oben herab mit der Arroganz des Monopolisten. Und das ist für mich die Motivation, davon unabhängig zu werden.