Need for Speed

Go 1.8: Google verbessert Sprachspezifikation, Tools und Performance
Kommentare

Wenn die Bahn so pünktlich wäre, wie die Releases von Googles C-Alternative Go, würde vermutlich die gesamte deutsche Comedy-Branche in arge Schwierigkeiten geraten. Ganz nach Zeitplan veröffentlichte der Suchmaschinenriese gerade Go 1.8 ziemlich genau ein halbes Jahr nach dem letzten Update.

Die meisten Änderungen beim Update auf Google Go 1.8 sind in der Toolchain, der Runtime und den Bibliotheken zu finden, allerdings gibt es auch zwei kleinere Änderungen im Bereich der Sprachspezifikation. Neben der Unterstützung für 32-bit MIPS und HTTP/2 Push bringt die neueste Sprachversion unter anderem auch ein verbessertes Backend für den Compiler und Graceful Shutdowns zur Reduzierung der Server-Downtime.

Go 1.8: Die Features

Go Sprache

An der Sprache selbst wurden für die aktuelle Version von Google Go nur kleinere Anpassungen vorgenommen. Konvertiert man einen Wert explizit von einem Struct Type zu einem anderen, werden die Tags ab Go 1.8 ignoriert. Zwei Structs, die sich lediglich in ihren Tags unterscheiden, können somit von einem zum anderen konvertiert werden:

func example() {
	type T1 struct {
		X int `json:"foo"`
	}
	type T2 struct {
		X int `json:"bar"`
	}
	var v1 T1
	var v2 T2
	v1 = T1(v2) // now legal
}

Quelle: Golang-Blog

Die zweite Änderung im Bereich der Sprache selbst betrifft die Implementierungen. Diese müssen nun nur noch eine Unterstützung für 16-bit-Exponenten in Gleitkommakonstanten vorweisen. Allerdings sind hiervon weder der gc– noch der gccgo-Compiler betroffen, die beide weiterhin 32-bit-Exponenten supporten.

Go Tools

In Go 1.7 wurde ein neues Compiler-Backend für 64-bit x86-Systeme eingeführt, das auf SSA basiert und nun für sämtliche Architekturen verfügbar ist. Der generierte Code wird dadurch nicht nur kompakter und effizienter, auch eine bessere Plattform für Optimierungen wie die Bounds Check Elimination wird zur Verfügung gestellt. Allein durch diese Änderungen soll sich die Performanz um bis zu 30 Prozent verbessern.

Der Compiler und der Linker wurden seit Go 1.7 ebenfalls optimiert und das Entwicklerteam verspricht eine um etwa 15 Prozent verbesserte Geschwindigkeit. Das neue Compiler-Frontend ist bisher für Nutzer nicht zu bemerken, legt aber den Grundstein für zukünftige Performance-Verbesserungen.

Das Cgo-Tool merkt sich nun unter anderem den Wert der während einem make.bash gesetzten CGO_ENABLED-Environment-Variable und wendet ihn standardmäßig auf alle zukünftigen Kompilierungen an, außerdem wurde der Call-Overhead von Go nach C um etwa die Hälfte reduziert. Für das Produzieren von Pprof-kompatiblen Blockings und Latenzprofilen eines Execution Tracings wurde dem Trace-Tool die neue Flag -pprof hinzugefügt.

Lesen Sie auch: TIOBE kürt Go zur Programmiersprache des Jahres 2016

Weitere Änderungen

Mit dem neuen Kommando go bug wird automatisch ein Report auf GitHub erstellt, der vorgefertigte Informationen über das aktuelle System enthält. Auch neu im Bereich der Kommandos: go getberücksichtigt ab Go 1.8 immer HTTP-Proxy-Environment-Variablen, go doc hingegen gruppiert Konstanten und Variablen jetzt mit deren Types.

Der HTTP-Server unterstützt nach dem Update HTTP/2 Push. Dadurch können Server präventiv Antworten an Clients schicken und somit die Netzwerk-Latenz durch die Eliminierung von Roundtrips minimieren. Der Support von Graceful Shutdowns kann hingegen für die Minimierung der Server-Downtime sorgen.

Das Kompatibilitätsversprechen

Wichtig! Das Team von Google Go kündigte an, dass das Kompatibilitätsversprechen natürlich auch auf Go 1.8 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.

Auf dem Blog zu Google Go hat das Team sämtliche Highlights des Releases vorgestellt, auch Informationen zu den traditionellen Release Parties gibt es dort. Wer detaillierte Informationen über sämtliche Änderungen einsehen möchte, die Go 1.8 an Bord hat, für den empfiehlt sich ein Blick in die vollständigen Release Notes.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -