Bereit für 1.13

Go 1.12 ist da: Überarbeitete Go Modules & TLS 1.3 Support

Dominik Mohilo

© Reneé French (CC BY 3.0 DE) ©SuS Media

Schon sind wieder 6 Monate um und Google liefert pünltlich wie eh und je die neue Version der Programmiersprache Go. An der Sprache selbst wurden keine Veränderungen vorgenommen, aber die Golang besteht ja bekanntlich aus weit mehr als nur Sprachspezifikationen. Im Fokus standen vor allem erneut die Go-Module und die Unterstützung für das Verschlüsselungsprotokoll TLS 1.3 (opt-in).

Wer auf Go 2.0 wartet, der wird sich noch etwas gedulden müssen, jedenfalls steht das zu befürchten. Bereits 2017 hat einer der führenden Köpfe hinter Googles Programmiersprache, Russ Cox, das nächste Major Release angeteasert, aber auch zu bedenken gegeben, dass es sich noch eine ganze Weile hinziehen würde. Und er behielt recht, wie wir heute, zwei Jahre später, wissen. Dass die Entwicklung der Golang dennoch voranschreitet, stetig und regelmäßig, zeigt allerdings, dass die Warterei ein Ablaufdatum hat, welches wir nur noch nicht mitgeteilt bekommen haben.

Wie dem auch sei, Go 1.12 ist erschienen. Und wie bereits Go 1.11 gibt es keine Neuerungen an der Sprache selbst, lediglich im Tooling, den Ports, der Runtime und der Core Library.

Go 1.12: Das ist neu

Tooling / Go Modules

Beginnen wir mitten im Tooling. Die Go Modules wurden erneut überarbeitet und sind sie aktiv (also wenn GO111MODULE auf on steht), werden beim go-Befehl ab sofort modulbewusste Aktionen auch außerhalb eines Modulverzeichnisses unterstützt. Das gilt allerdings nur dann, wenn diese Aktionen keine Importpfade, die zum aktuellen Verzeichnis zugehörig sind, auflösen oder die Datei go.mod explizit verändern müssen. Abgesehen davon können go Befehle, die Module herunterladen und entpacken, sicher nebenläufig ausgeführt werden. Diese und die anderen Änderungen in Bezug auf die Module sind die letzten Anpassungen, bevor die Go Modules in Go 1.13 dann zum Standard werden.

Freunde des Befehls go tool vet müssen jetzt stark sein: Dieses wird nicht mehr unterstützt. Externe Tools, die diesen Befehl genutzt haben, müssen umgeschrieben werden, sodass go vet genutzt werden kann. Ähnlich verhält es sich mit godoc, das nun sein Dasein als Webserver fristet und kein CLI mehr hat. Aber keine Sorge, die godoc-Funktionalität kann via go doc aufgerufen werden. Ab Go 1.13 wird godoc dann ganz verschwinden, Nutzer müssen dann via go get auf den Webserver zugreifen.

Runtime

Performance ist das A und O und dementsprechend wurde Go 1.12 insofern optimiert, dass das Sweeping deutlich schneller abläuft, wenn der Großteil des Heaps live bleibt. Gut für die Performance des gesamten Systems ist hingegen die Tatsache, dass mit Go 1.12 Arbeitsspeicher vehementer ans Betriebssystem zurückgegeben wird, wenn er nicht mehr gebraucht wird. Ist das OS zufällig Linux, nutzt die Runtime MADV_FREE, um ungenutzten Speicher für Linux wieder freizugeben.

DevOpsCon Istio Cheat Sheet

Free: BRAND NEW DevOps Istio Cheat Sheet

Ever felt like service mesh chaos is taking over? Then our brand new Istio cheat sheet is the right one for you! DevOpsCon speaker Michael Hofmann has summarized Istio’s most important commands and functions. Download FOR FREE now & sort out your microservices architecture!

Core Library

Wichtigstes neues Feature für die Core Library ist ohne Zweifel der optionale Support für TLS 1.3. Das Sicherheitsprotokoll kann durch das Hinzufügen des Werts tls13=1 zur Umgebungsvariable CODEBUG aktiviert werden. Das ist allerdings nur für die aktuelle Version der Golang notwendig: Ab Go 1.13 wird auch TLS 1.3 zum Standard. Vorsicht: Wer TLS 1.3 nutzen möchte, der sollte sicher sein, dass in der Config keine explizite Angabe zu der zu verwendenden Version von TLS gemacht wurde.

Kleinere Änderungen gab es in der Core Library wie üblich zuhauf. Schlüssel-/Wertpaare eine Map können mit der neuen Delete-Methode in expvar gelöscht werden, in image ist die Funktion RegisterFormat ab sofort auch für Nebenläufigkeit geeignet und das neue Interface StringWriter fasst die Funktion WriteString zusammen.

Ports

Last but not least gibt es auch ein paar Veränderungen in Sachen Ports: So können sich etwa Bastler freuen, die Go auf Windows IoT Core auf 32-bit ARM-Chips einsetzen. Diese kommen etwa im berühmten Raspberry Pi 3 vor. Ermöglicht wird dies durch den neuen Port windows/arm. macOS-Nutzer sollten, wenn sie Go in aktuellster Fassung verwenden wollen, schnellstmöglich mindestens auf macOS 10.11 El Capitan updaten, denn Go 1.12 ist die letzte Version der Sprache mit Support für macOS 10.10 Yosemite.

Ausblick

Detaillierter auf die Änderungen in der Golang wird Frank Müller in einem Fachartikel zum Release eingehen. Bis dahin gibt es weitere Informationen im Blog-Artikel von Andrew Bonventre und natürlich in den Release Notes zu Go 1.12. Herunterladen kann man die neue Sprachversion hier.

Verwandte Themen:

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

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: