Open Source im professionellen Einsatz
Linux-Magazin 10/2013
© Li xuejun, 123RF.com

© Li xuejun, 123RF.com

Die GNU Compiler Collection

Freier Übersetzer

Was heute als GNU Compiler Collection in fast jeder Linux-Distribution steckt, ist das Ergebnis eines Forks. Das Alternativprojekt Egcs öffnete um die Jahrtausendwende die Entwicklung und siegte.

690

1983 begründete Richard M. Stallman (Abbildung 1) das GNU-Projekt mit dem Ziel, ein komplett freies Betriebssystem zu schaffen. Um die Software dafür schreiben zu können, suchte er nach einem freien Compiler und stieß an einer niederländischen Universität auf das Free University Compiler Kit. Dessen Autor weigerte sich jedoch mit einer schnippischen Antwort, ihm den Compiler für das GNU-Projekt zu überlassen. Das wiederum spornte Richard Stallman dazu an, einen eigenen, plattformübergreifenden Compiler zu entwickeln.

Abbildung 1: Richard Stallman brauchte für sein GNU-Projekt dringend einen Compiler.

Selbst ist der GNU-Mann

Als Ausgangspunkt durfte er den Pascal-Compiler Pastel vom Lawrence Livermore Laboratory verwenden. Stallman schrieb für ihn zunächst ein C-Frontend und versuchte dann den kompletten Compiler auf andere Rechner zu portieren. Dabei musste er jedoch feststellen, dass der Pastel-Compiler äußerst verschwenderisch mit dem Speicher umging. Das wiederum erschwerte den Einsatz auf kleinen Rechnern – Mitte der 80er Jahre zählte noch jedes einzelne Kilobyte. Notgedrungen begann der GNU-Chef einen komplett neuen Compiler zu entwickeln, bei dem er immerhin sein C-Frontend weiterverwenden konnte.

Bis die erste Betaversion das Licht der Welt erblickte, sollten allerdings noch drei Jahre vergehen. Zwischenzeitlich arbeitete Richard Stallman am Texteditor Emacs und gründete die Free Software Foundation (FSF). Sie sorgte für die finanziellen Mittel und stellt auch noch heute die Infrastruktur für die Compiler-Entwickler bereit.

Am 22. März 1987 kündigte Richard Stallman schließlich seinen GNU C Compiler, kurz GCC, über die Projekt-Mailingliste an [1]. Der Compiler unterstützte den kompletten Ansi-C-Standard und führte bereits zahlreiche Optimierungen durch, beispielsweise erkannte er unerreichbare Anweisungen. Code erzeugte der GCC für Sun-3-Workstations mit 68020-Prozessor sowie Vax-Maschinen, ließ sich aber leicht auf andere Systeme mit 32-Bit-Prozessor portieren.

Wer den GCC nicht über den FTP-Server herunterladen konnte, durfte ihn auch auf einem Magnetband anfordern – gegen eine Versandgebühr von 150 Dollar. Gleichzeitig bat Stallman alle Nutzer darum, Fehler zu suchen und zu melden. Die korrigierte Version 1.0 erschien rund einen Monat später. Rasch entstanden weitere Portierungen, die mitunter sogar schnellere und bessere Ergebnisse produzierten als die mit den jeweiligen Systemen gelieferten kommerziellen Compiler. Schon im ersten Jahr lernte GCC auch C++ übersetzen, Ende 1987 erschien bereits Version 1.16 [2].

Besonders engagiert zeigte sich das Unternehmen Cygnus, das sein Geld mit kommerziellem Support für den GCC und den zugehörigen Tools verdiente. Cygnus betreute unter anderem den Debugger und die GNU Binutils. Unter dem Namen GNU Pro verkaufte die Firma sogar ein recht bekanntes Komplettpaket in einer Schachtel. Vor allem Cygnus-Mitbegründer Michael Tiemann trieb die Entwicklung des GCC maßgeblich voran [3]. Zusammen mit der FSF startete Cygnus 1991 die Arbeit an der überholten GCC-Version 2, die im Februar 1992 erschien.

Rührige Eier

Ab Mitte der 1990er Jahre verlangsamte sich das Veröffentlichungstempo zusehends. Stallman und die FSF wollten den Compiler vor allem stabiler machen, Neuerungen standen immer weniger im Fokus. Die eigentliche Weiterentwicklung fand deshalb weitgehend hinter verschlossenen Türen in einem kleinen Entwicklerteam statt. Andere Nutzer durften lediglich Verbesserungen vorschlagen. Unter diesem Vorgehen litt vor allem der C++-Compiler, dessen Ausbau nur schleppend vorankam.

Die unter anderem auch dank Linux extrem rasch gewachsene externe Programmierergemeinde wollte die Entwicklung jedoch beschleunigen und viele weitere Features einbringen. Die unterschiedlichen Sichtweisen gipfelten 1997 schließlich in einem heftigen Streit auf der GCC-Mailingliste.

Irgendwann wurde es einigen frustrierten Entwicklern zu bunt: Unter der Führung von Cygnus schufen sie ihre eigene Variante des Compilers namens Egcs (ausgesprochen "Eggs", Eier, [4]). Sie sollte vor allem auch die bis dahin aus der Not entstandenen kleineren GCC-Forks wieder zusammenführen. Die erste Version von Egcs basierte auf GCC 2.8, erschien im Dezember 1997 und enthielt vor allem zahlreiche Optimierungen.

Das Entwicklungsmodell des Egcs mit öffentlichen Mailinglisten, Bugtracker und frei zugänglichem Code-Repository zog zahlreiche Programmierer an, was wiederum die Entwicklung beschleunigte. Ab 1998 übernahm ein unabhängiges Steering Committee die Aufsicht über das Egcs-Projekt [5]. Es sollte nicht nur wichtige Richtungsentscheidungen treffen, sondern vor allem verhindern, dass einzelne Personen oder Organisationen die Kontrolle über das komplette Projekt an sich reißen. Mitglieder des Komitees waren neben GCC-Entwicklern auch Nutzer des Compilers, zum Beispiel die Kernelentwickler, die ein großes Interesse an der Fortführung des Projekts hatten [5].

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.