Programmiersprache: Go 1.7 erschienen

Bei der nun freigegebenen Version 1.7 steckt viel Arbeit in der Weiterentwicklung von Tools und Bibliotheken, dafür gibt es wenig Änderungen an der Sprache selbst.

vorlesen Druckansicht
Programmiersprrache: Go 1.7 erschienen
Lesezeit: 3 Min.
Von
  • Frank MĂĽller
  • Alexander Neumann

Google hat die Version 1.7 der Programmiersprache Go freigegeben. Das neue Release enthält einen neuen Port für IBMs Mainframe System z (s390x), außerdem zahlreiche Überarbeitungen auf Compilerebene. So umfasst der Compiler für Go 1.7 ein neues SSA-Backend (Static Single Assignment), das wohl Beschleunigungen von 5 bis 35 Prozent auf 64-Bit-x86-Systemen ermöglichen soll.

Außerdem gibt es ein neues, offenbar kompakteres Format zum Exportieren von Daten. Zusätzlich ist von Beschleunigungen bei der Garbage Collection und Änderungen beim Generieren von Metadaten sowie Stack Frame Pointers für Profiling-Werkzeuge wie perf unter Linux oder VTune von Intel die Rede.

Weitere Werkzeugänderungen betreffen den 64-Bit-ARM-Assembler, cgo, der nun auch Fortran-Quellen verarbeiten kann, und go selbst. Hier gehört das bisher experimentelle Vendoring externer Packages nun zum Standard, ebenso lassen sich Quellen von git.openstack.org importieren. Auf bislang experimenteller Ebene ist die Nutzung reiner Binär-Packages dazugekommen. Weitere Verbesserungen gab es bei den Subkommandos doc, vet, tool dist und tool trace.

Etliche Überarbeitungen trifft man bei den Standardbibliotheken an. So wiesen Packages wie crypto/sha1, crypto/sha256, encoding/binary, fmt, hash/adler32, hash/crc32, hash/crc64, image/color, math/big, strconv, strings, unicode und unicode/utf16 schon in der Beta-Version teilweise mehr als 10 Prozent Geschwindigkeitszuwachs auf.

Bei den Packages selbst wanderte golang.org/x/net/context als context in die Standardbibliothek. net/http/httptrace erlaubt ein Tracing fĂĽr HTTP-Clients, und Tests lassen sich nun schachteln und teilen sich den Code fĂĽr Setup und Tear-down. Die sogenannte Panics der Standardbibliothek nutzen nun Werte, welche die Schnittstellen error und runtime.Error erfĂĽllen. Das runtime-Package hat dazu noch die Funktionen KeepAlive, CallersFrame und SetCgoTraceback erhalten. Sie helfen bei der Speicherkontrolle, dem Ermitteln von Laufzeitinformationen und der gemeinsamen AusfĂĽhrung von Go- und C-Code.

Eine kleine Änderung gibt es bei der Sprachdefinition. Anstelle des bisherigen, nicht präzise definierten "Final Statements" tritt nun das "Terminating Statement". Es ist in der Form definiert, wie es dem Verhalten der gc- und gccgo-Compiler entspricht. Demnach werden acht unterschiedliche Statements als terminierend definiert. Eine Liste von Statements endet in einem Terminating Statement, wenn die Liste nicht leer und das letzte, nicht leere Statement eines der acht terminierenden ist. Das interne Package go/types wurde entsprechend angepasst.

Go ist eine von Google vorangetriebene Sprache, die das Unternehmen 2009 vorstellte. Damals platzierte es Go als C-Alternative. 2015 befreite sich das Projekt dann von letzten C-Überbleibseln im eigenen Code. Bekannte Systeme, die mit Go geschrieben worden sind, sind beispielsweise die MongoDB-Tools und Docker; natürlich kommt Go auch bei Google zum Einsatz, aber auch zum Beispiel bei SoundCloud. Das Vorgänger-Release Go 1.6 war im Februar erschienen. (ane)