Major Release Nummer 8

Go 1.7: Vorschau auf die nächste Version von Googles C-Alternative

Dominik Mohilo

© GoLang

Google hält an seinem halbjährlichen Release-Plan für seine Programmiersprache „Go“ fest: nach der Veröffentlichung von Go 1.6 im Februar dieses Jahres, soll Go 1.7 im August zur Verfügung stehen. Für das achte Major Release haben die Macher von Go wenig Änderungen für die Sprache an sich geplant, dafür aber umso mehr Arbeit in die Weiterentwicklung der Tools und Core Library gesteckt.

Go Sprache und Ports

Googles Alternative zu C, Go, bekommt in Version 1.7, was die Sprache an sich angeht, nur ein kleines Schönheitsupdate: Zukünftig wird bei der Klärung, ob eine Liste von Anweisungen mit einem terminating Statement endet, das letzte nicht-leere Statement als Ende angesehen. Dieses Verhalten entspricht dem bereits existierenden Verhalten der gc- und gccgo-Compiler-Toolchains. Diese Änderung hat keine Auswirkung auf die Korrektheit von bereits existierenden Programmen.

Mit der neuen Version von Go wird es einen neuen experimentellen Port zu Linux auf z-Systemen geben (linux/s390x), zudem wird Version 1.7 einen Beginn des Ports zu Plan 9 auf ARM (plan9/arm) beinhalten. Die experimentellen Ports zu Linux auf 64-bit MIPS (linux/mips64 und linux/mips64le), die in Version 1.6 von Go eingeführt wurden, werden mit dem kommenden Update volle Untestützung für cgo und externes Verlinken erhalten. Der OpenBSD-Port wird ab Go 1.7 mindestens OpenBSD 5.6 benötigen, um auf den Systemaufruf getentropy(2) zugreifen zu können.

Go Tools

Im Assembler wurden die Registernamen der Vektoren auf v0 bis v31 geändert, da sie von vorigen Releases fehlerhafterweise mit v32 bis v63 bezeichnet wurden. Für 64-bit x86 Systeme wuden die folgenden Befehlssätze hinzugefügt: PCMPESTRI, RORXL, RORXQ, VINSERTI128, VPADDD, VPADDQ, VPALIGNR, VPBLENDD, VPERM2F128, VPERM2I128, VPOR, VPSHUFB, VPSHUFD, VPSLLD, VPSLLDQ, VPSLLQ, VPSRLD, VPSRLDQ, and VPSRLQ.

Entwickler für 64-bit x86 Systeme können sich im Bereich Compiler Toolchain in Go 1.7 auf ein komplett neues Codegenerierungs-Backend freuen, das auf dem Vorschlag von Keith Randall aus dem Jahr 2015 basiert. Das neue, auf SSA basierende Backend soll einen kompakteren und effektiveren Code generieren und eine bessere Plattform für Optimierungen wie bounds check elimination beinhalten. Zudem soll es die benötigte CPU-Zeit, die von den Benchmark-Programmen benötigt wird, um bis zu 35 Prozent reduzieren. Das neue Backend kann durch die Eingabe von -ssa=0 in den Compiler deaktiviert werden, falls das Kompilieren nur durch das Deaktivieren des neuen Backends funktioniert.

Pakete, die cgo nutzen können nun Fortran-Quelldateien enthalten (neben Quelldateien von C, C++, Objective C und SWIG). Allerdings müssen die Go-Bindings nach wie vor die APIs der Programmiersprache C verwenden. Besagte Go-Bindings sollen mit Version 1.7 auch die neue Hilfsfunktion C.CBytes verwenden. Im Gegensatz zu C.CString, das einen Go-string nimmt und einen *C.byte (also einen C-char*) ausgibt, nimmt C.CBytes einen Go-[]byte und gibt einen unsafe.Pointer (also einen C-void*) aus.

Go Core Library

Das testing-Paket unterstützt nun die Definition von Tests und Benchmarks mit jeweiligen Untertests bzw. –benchmarks. Das Schreiben von tabellengetriebenen Benchmarks und das Erstellen von hierarchischen Tests soll dadurch leichter werden, zudem wird das Paket Nutzern erlauben, Setups und tear-down-Code mit anderen Nutzern zu teilen.

Im Bereich der Runtime werden ab Go 1.7 nun sämtliche von ihr gestartete Panics die Panic-Werte nutzen, die sowohl den Built-in-Error als auch den runtime.Error implementieren, wie es die Sprachspezifikation vorschreibt. Die Runtime erhält außerdem die neuen Funktionen KeepAlive und SetCgoTraceback. Erstere stellt einen expliziten Mechanismus für die Deklaration, dass ein zugeteiltes Objekt als „erreichbar“ in einem bestimmten Punkt eines Programmes angesehen werden muss, bereit. Letztere sorgt unter Verwendung von cgo für eine engere Integration zwischen Go- und C-Code, die im gleichen Prozess ausgeführt werden.

Eine Vollständige Übersicht über die kommenden Features und Bugfixes können sich Nutzer der Programmiersprache auf der Web-Seite von Go ansehen.

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
400
  Subscribe  
Benachrichtige mich zu: