Suche
Go for Gold

Go 1.9: Das erwartet Entwickler in der neuen Version

Dominik Mohilo

Im Sommer feiern wir mit der Taschenratte Jubiläum: Das zehnte Release im 1.x-Releasezyklus steht mit Go 1.9 an. An der Sprache selbst wird sich voraussichtlich nicht viel ändern, dafür umso mehr drum herum, also im Bereich der Toolchain, der Laufzeit und der Bibliothek. Wir haben eine kleine Vorschau vorbereitet.

Etwa zwei Monate muss sich die Go-Gemeinde noch gedulden, dann erscheint Go 1.9 und damit bereits die zehnte Go-Version seit Veröffentlichung des ersten Major Releases. Die Entwickler bei Google bleiben damit dem halbjährlichen Veröffentlichungsschema treu. Die im Folgenden erwähnten Änderungen bzw. Neuerungen werden voraussichtlich Teil der neuen Sprachversion sein, können sich aber natürlich in den kommenden Wochen noch ändern.

Nicht ändern wird sich allerdings Googles Kompatibilitätsversprechen: Das Team von Google Go kündigte an, dass das Kompatibilitätsversprechen natürlich auch auf Go 1.9 wieder angewandt wird. Es kann also davon ausgegangen werden, dass alle Go-Programme nach dem Update auf die aktuelle Version weiterhin kompilieren und laufen wie bisher.

Sprache

Wie bereits in der Vorgängerversion, Go 1.8, wird das Team von Google an der Sprache selbst kaum etwas ändern. Bislang ist mit der Einführung von Typaliasen lediglich eine einzige Änderung an der Sprache geplant. Durch deren Implementierung in die Sprache soll die graduelle Quelltextkorrektur während des Verschiebens von Typen zwischen Paketen möglich werden. So könnte eine entsprechende Deklaration aussehen:

type T1 = T2

Durch diese Deklaration wird ein Alias für T2 eingeführt (nämlich T1). Somit wird mit T1 und T2 der gleiche Typ angesprochen. Wer eine detailliertere Erklärung hierfür benötigt, findet weitere Informationen im Type Alias Design Document auf GitHub und im Artikel von Russ Cox zum Code Refactoring.

Tools

Deutlich mehr Änderungen gibt es im Bereich der Tools. So unterstützt der Go-Compiler ab Go 1.9 voraussichtlich das parallele Kompilieren der Funktionen eines Paketes. Dabei wird auf mehrere Rechenkerne gleichzeitig zugegriffen, was bereits jetzt für die parallele Kompilierung unterschiedlicher Pakete genutzt werden kann. Die parallele Kompilierung ist standardmäßig aktiviert, lässt sich aber manuell deaktivieren.

Lesen Sie auch: Go 1.8: Google verbessert Sprachspezifikation, Tools und Performance

Eine oft gewünschte Änderung bezieht sich auf das Vendor Matching: Mit dem Befehl ./... wird es in Tools, die Paketnamen akzeptieren, nicht mehr möglich sein, Pakete innerhalb von vendor-Verzeichnissen aufeinander abzustimmen. Die Funktion wird zukünftig über den Befehl ./vendor/... verfügbar sein.

Im Bereich ENV können sich Nutzer von JSON über die neue Flag go env -json freuen, die einen JSON-Output ermöglicht. Dieses ersetzt das betriebssystemspezifische Output-Format. Das Kommando go test hat ebenfalls eine neue Flag, nämlich -list. Diese nutzt einen regulären Ausdruck als Parameter und gibt in stdout die Namen sämtlicher Tests, Benchmarks und Beispiele aus, ohne sie auszuführen.

Bibliothek & Performance

Das Paket math/bits, das mit Go 1.9 veröffentlicht werden soll, bringt optimierte Implementierungen, um Bits zu editieren. Die Funktionen innerhalb dieses Pakets werden von den Compilern der meisten Architekturen zusätzlich erkannt und für eine bessere Performance wie intrinsische Funktionen behandelt.

Die beiden neuen Methods (*T).Helper und (*B).Helper kennzeichnen die Call-Funktion als eine Test-Helper-Funktion. Beim Ausgeben von Datei- oder Zeileninformationen wird diese Funktion also übersprungen, wodurch es möglich ist, Test-Helper-Funktionen zu schreiben und gleichzeitig brauchbare Zeilennummern beizubehalten.

Im Hinblick auf die Performance soll Googles C-Alternative alles wieder ein wenig schneller machen. Neben den vielen Änderungen in der Core Library wurde auch der Garbage Collector noch einmal aufgebohrt und überarbeitet. Funktionen der Bibliothek, die zuvor die Stop-the-World Garbage Collection triggerten, rufen jetzt die nebenläufige Garbage Collection auf.

Alle bislang verfügbaren Informationen über die neuen Features gibt es im entsprechenden Eintrag zur neuen Sprachversion in der Dokumentation der Programmiersprache.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.