Googles Programmiersprache Go: Abschied von C-Überbleibseln

Das jüngste Sprachrelease, Go 1.5, ist nun komplett in Googles Programmiersprache geschrieben. Aber auch die anderen neuen Features lassen die neue Version zu einem bedeutenden Release werden.

In Pocket speichern vorlesen Druckansicht 127 Kommentare lesen
Go verabschiedet sich von C-Überbleibseln
Lesezeit: 3 Min.
Von
  • Alexander Neumann

Aus mehrerlei Gründen ist das nun freigegebene Go 1.5 nicht nur ein gewöhnliches Punktrelease von Googles hauptsächlich für die Systemprogrammierung vorgesehener Programmiersprache. Die Entwickler haben sich nämlich in der neuen Sprachversion von den letzten Überresten an C-Code verabschieden können, sodass die mitgelieferte Tool Chain und die Laufzeitumgebung nun komplett in Go geschrieben sind. Dafür musste Go 1.5 signifikant überarbeitet werden – siehe hierzu auch die Release Notes.

Die Änderungen erfolgten vor dem Hintergrund, dass die Entwickler der Meinung waren, dass sich so einfacher korrekter Go-Code schreiben lasse, zumal sich dieser jetzt besser debuggen lassen soll. Auch in puncto paralleler Ausführung, Modularisierung und Profiling hat Go den Entwicklern zufolge Vorteile gegenüber C.

Der zweite wichtige neue Punkt ist der Nebenläufigkeit nutzende und komplett neu aufgesetzte Garbage Collector, der ein wenig mehr Speicher und CPU-Zeit benötigt, dafür aber kürzere Pausen als der Vorgänger einlegen soll. Es ist nun außerdem mit der neuen Version möglich, Bibliotheken zu erstellen, die Go-Programme nutzen können und Go-Programme in C-Archiv-Dateien oder Shared Libraries für C-Programme umzubauen.

Die einzige Änderung an der Sprache ist kleiner: So wurde die literalen Ausdrücke für map-Funktionen dahingehend geändert, dass sie sich prägnanter und mehr im Einklang mit slice-Literalen verhalten. Der neue "go tool trace"-Befehl gewährt die Visualisierung von Programm-Traces, die von der neuen Ablaufverfolgungsinfrastruktur zur Laufzeit angezeigt werden. Der ebenfalls neue "go doc"-Befehl führt zu einer Kommandozeilen-Oberfläche, über die sich die Go-Paket-Dokumentation aufrufen lässt.

Der neue Execution Tracker ist dafür vorgesehen, Daten zu sammeln, um aus ihnen Diagramme zum Ausführen von Prozessen erstellen zu können. Auch für Analyse und Refactoring gibt es neue Werkzeuge, mit denen sich etwa der Call-Graph eines Go-Programms oder Details der Zeiger-Analyse ausgeben, Identifier im Code typsicher umbenennen oder Quellen auf Grundlage von Templates umarbeiten lassen.

Schließlich ist das Go-Mobile-Projekt zu nennen, das aber nicht explizit zum neuen Go-Release gehört. Es handelt sich dabei um ein Experiment, wie sich mit der Programmiersprache Apps für Android- und iOS-Geräte entwickeln lassen. In dem Kontext verwundert es daher nicht, dass der darwin/arm64- und der linux/arm64-Port nun offiziell in Go 1.5 unterstützt werden. Die ppc64- und ppc64le-Ports sind hingegen noch experimenteller Natur.

Go 1.5 ist das sechste größere Release der Programmiersprache, die von Google 2009 als Konkurrent für C ins Rennen geschickt worden war. Bekannte Systeme, die mit Go geschrieben worden sind, sind beispielsweise die MongoDB-Tools und Docker; natürlich kommt Go auch bei Google zum Einsatz, aber auch bei zum Beispiel SoundCoud. (ane)