iX 3/2019
S. 92
Report
Programmiersprachen
Aufmacherbild

Go auf dem Weg zu Version 2

Reisepläne

Neun Jahre hat Go nun bereits auf dem Buckel. Go 1.11 ist immer noch aktuell, doch der Wechsel auf Version 2 ist schon länger in der Diskussion. Go 2 wird allerdings keinen harten Bruch markieren.

Von leichten Änderungen während der Vorversionen abgesehen, zum Beispiel dem spracheigenen Interface-Typ error, hat sich der Kern von Googles Go bis jetzt nicht verändert. Seit der Freigabe der Version 1.0 2012 fanden alle Änderungen nur in den Bibliotheken, den Tools oder der Optimierung der Runtime statt. Daher erhöhte man auch nur die Nummern der Unterversionen auf derzeit 1.11.

Doch so schön ein verlässlicher und robuster Sprachkern ist, gibt es trotzdem immer wieder Fragen nach fehlenden Features und Anregungen für gewünschte Eigenschaften. Einiges davon lässt sich, wie bisher, in Form neuer oder geänderter Packages umsetzen. Andere Wünsche setzen voraus, die Definition der Sprache zu ändern. Entsprechend den Prinzipien der Go-Entwickler wird dies zur Version 2 der Sprache führen.

Go 2 ist kein wirklich neues Thema. Bereits auf der GopherCon 2017 ging Russ Cox auf den Stand der Sprache und das mit Go 2 bezeichnete Ziel ein. Wie schon 2007 lautet es Skalierung. Skalierung wollen die Go-Entwickler einerseits auf der Einsatzseite der Sprache erreichen, also für nebenläufige und verteilte Systeme. Andererseits gilt die Zielsetzung ebenfalls für skalierende Entwicklungslandschaften, also große und verteilt miteinander an einer großen Codebasis wirkende Gruppen von Entwicklern.

Änderungen an der Sprache übernimmt Google aktuell noch komplett selbst. Ein kleines, internes Team steuert den Prozess, sucht nach Schwachstellen und setzt die Änderungen um. Der Einfluss von außen ist dabei relativ gering. Zukünftig jedoch sollen die Nutzer mehr Mitspracherecht bekommen. Die Weiterentwicklung der Sprache soll in einen vor allem Community-getriebenen Prozess übergehen.

In den letzten beiden Jahren haben die Planungen konkrete Formen angenommen und der Prozess ist näher definiert. Zu den Punkten auf der Liste der Änderungen und Anpassungen gehören die Rahmenbedingungen für Proposals. Sie finden sich im Go-Projekt auf GitHub unter Issues und tragen das Label Go 2. Inzwischen ist die Zahl der Issues auf 120 angewachsen. Robert Griesemer und Ian Lance Taylor haben sie mithilfe verschiedener Kriterien sortiert und schließlich evaluiert. Dabei haben sich zwei Hauptthemen herauskristallisiert: Error Handling und Generics.

Zunächst stehen Go 1.12 und 1.13 an

Aktuell geht es in der Entwicklung der Sprache erst einmal mit den Versionen 1.12 und 1.13 weiter. Google hat die nächste Release für Februar dieses Jahres angekündigt. Go 1.13 soll im August mit einigen Neuerungen folgen. Dabei geht es hauptsächlich um Tooling und IDE-Integration.

In Bezug auf die Version 1.13 sind bereits konkrete Vorschläge in der Diskussion. Einer davon lautet beispielsweise, Unicode für Identifier einsetzen zu können. Außerdem lassen sich Integerzahlen nun neben dezimal, oktal und hexadezimal auch im Binärformat definieren. Ebenso sind Unterstriche für die Gruppierung von Ziffern angedacht, zum Beispiel x := 1_000_000. Beides erhöht die Lesbarkeit. Zusätzlich wird gerade diskutiert, vorzeichenbehaftete Integerwerte beim Shift-Operator zu erlauben. Hiermit kann in vielen Fällen der bisherige Code mit manuellen Shifts in beide Richtungen vereinfacht werden.

Dependencies werden ebenfalls eine wichtige Rolle spielen und zählen zu den nicht gerade trivialen Herausforderungen für große Softwareprojekte. Initial eingeführt hatte Google die Module in Go 1.11 und sich vorgenommen, sie bis Go 1.13 zum Standard zu machen. Das zeigt, wie komplex das Thema ist. Russ Cox hat die Probleme und Hürden in diesem Zusammenhang allgemeingültig im Artikel „Our Software Dependency Problem“ auf seinem Blog research!rsc zusammengefasst.

Go 2 verspricht Syntaxänderungen