Go 1.12: Das bietet das neue Release von Googles Programmiersprache

Google hält den halbjährlichen Turnus bei und hat nun Go 1.12 veröffentlicht. Das Release unterstützt TLS 1.3 und bietet einen besseren Modul-Support.

In Pocket speichern vorlesen Druckansicht 23 Kommentare lesen
Go 1.12: Das bietet das neue Release von Googles Programmiersprache
Lesezeit: 4 Min.
Von
  • Alexander Neumann
Inhaltsverzeichnis

Google hat die Version 1.12 der Programmiersprache Go vorgestellt. Das neue Release erscheint rund sechs Monate nach Go 1.11. Die meisten Änderungen betreffen Toolchain, Runtime und Bibliotheken. Es gibt keine Änderungen an der Sprachspezifikation.

Die Entwickler gehen davon aus, dass sich fast alle Go-Programme weiterhin wie bisher kompilieren und ausführen lassen. Als Highlights machen die Sprachentwickler unter anderem die Opt-in-Unterstützung für TLS 1.3, ein verbesserter Modulsupport, die Unterstützung für Windows/ARM und eine verbesserte Kompatibilität mit macOS und iOS aus.

In der Compiler-Toolchain finden Anwender nun mehr Funktionen, die standardmäßig für das sogenannte Inlining geeignet sind, und der Compiler akzeptiert ein Flag, das die zu verwendende Sprachversion festlegt. Hilfreiche beim Trace-Tool mag die nun enthaltene Plotfunktion für die Nutzung von Mutatoren sein, mit der man mehr Informationen über die Auswirkungen beim Einsatz des Garbage Collector erfahren kann. Viele Überarbeitungen gab es an der DWARF-Debug-Informationen, die der Compiler erzeugt, einschließlich Verbesserungen beim Argument Printing und bei Informationen über variable Positionen.

Der go vet-Befehl wurde neu geschrieben, um als Grundlage für eine Reihe verschiedener Quellcode-Analysetools zu dienen. Ein Nebeneffekt ist jedoch, dass go tool vet nicht mehr unterstützt wird. Externe Tools, die go tool vet verwenden, müssen deswegen angepasst werden, um go vet zu verwenden. Der Build-Cache wird nun als Schritt zur Beseitigung von $GOPATH/pkg benötigt. Das Setzen der Umgebungsvariablen GOCACHE=off führt zu einem Fehler bei go-Befehlen, die in den Cache schreiben.

Go 1.12 verbessert offenbar signifikant die Leistung beim Sweeping, wenn ein großer Teil des Heap-Speichers in Verwendung bleibt. Das reduziert anscheinend die Allokationslatenz unmittelbar nach einer Garbage Collection. Die Go-Runtime gibt nun außerdem Speicher aggressiver an das Betriebssystem zurück, insbesondere als Reaktion auf große Allokationen, die bestehende Heaps nicht wiederverwenden können. Der Timer und der Deadline-Code der Go-Runtime sind jetzt offenbar schneller und skalieren mit einer höheren Anzahl von CPUs wohl besser. Das soll insbesondere die Performance bei der Manipulation von Deadlines der Netzwerkverbindungen verbessern.

Änderungen in den Core-Bibliotheken beschränken sich hauptsächlich auf die Kryptographie. So ist Go 1.12 die erste Version mit optionaler Unterstützung von TLS 1.3 (Transport Layer Security). Die weiteren Änderungen an den Bibliotheken listen die Release Notes auf. Hier finden sich auch weitere Informationen zu den Neuerungen und Änderungen bei der Plattformunterstützung.

Hinsichtlich der nächsten Version (1.13) gibt es bereits konkrete Vorschläge, etwa Unicode für Identifier einsetzen zu können. Außerdem sollen sich Integer-Zahlen nun neben dezimal, oktal und hexadezimal auch im Binärformat definieren lassen. Unterstriche sind für die Gruppierung von Ziffern angedacht, zum Beispiel x := 1_000_000. Zusätzlich wird diskutiert, vorzeichenbehaftete Integerwerte beim Shift-Operator zu erlauben. Hiermit soll sich in vielen Fällen der bisherige Code mit manuellen Shifts in beide Richtungen vereinfachen lassen. Die schon lange vermissten Dependencies sollen ebenfalls eine wichtige Rolle spielen. Mit Go 1.13 sollen dann auch die wichtigsten Arbeiten des in Version 1.11 eingeführten Modulsystems abgeschlossen sein.

Und auch gibt es schon geraume Zeit Ideen für eine nächste Generation von Go, die ein aktueller iX-Artikel zu Go 2 beleuchtet.

Google hatte Go 2009 erstmals der Öffentlichkeit vorgestellt und die Programmiersprache als Alternative zu C positioniert. 2015 befreite sich das Projekt von den letzten C-Überbleibseln im Code und besitzt seitdem eine komplett in Go geschriebene Toolchain und Laufzeitumgebung. Die Programmiersprache unterstützt Nebenläufigkeit und entstand vor allem mit Blick auf verteilte Cloud- und Serveranwendungen. Zu den neueren Vorzeigeprojekten gehören Docker und Kubernetes, die in Go geschrieben sind.

Siehe dazu auf heise Developer:

(ane)