Go 1.7 bringt einige signifikante Änderungen mit. Dazu gehören Verbesserungen am Compiler-Backend und -Frontend, die Integration des Context-Paketes sowie Support für hierarchische Tests und Benchmarks.
Go-Programme profitieren laut dem Release Announcement von Verbesserungen am Garbage Collector und Optimierungen der Standard Library und laufen etwas schneller. Programme mit vielen untätigen Goroutines legen deutlich kürzere Garbage-Collection-Pausen ein, als noch in Go 1.6. Zudem führt Go 1.7 Subtest und Sub-Benchmarks ein, für die Entwickler nicht jeweils separate Funktionen definieren müssen.
Ein neues Compiler-Backend, das die Static Single-assignment Form (SSA) unterstützt, wurde im Laufe des vergangenen Jahres entwickelt. Laut den Messungen des Projekts laufen dank ihm Benchmarks 5 bis 35 Prozent schneller ab. Das neue Backend produziere zudem kompakteren und effizienteren Code, der zugleich einige Optimierungen mitbringt, etwa Bounds-check und Subexpression Elimination. Bislang läuft das neue Backend nur auf x86-64-Architekturen.
Auch das Frontend des Compilers arbeitet dank eines kompakteren Exportdaten-Formats zügiger und auch, weil Prozesse Deklarationen effizienter importieren. Die weitgehend unsichtbaren Änderungen verkürzen nicht nur die Kompilierzeit merklich, sondern reduzieren die Größe von Binärdateien um 20 bis 30 Prozent.
Das “golang.org/x/net/context”-Paket hat sich in den vergangenen Jahren in vielen Situationen als essenziell herausgestellt, etwa beim Einsatz von Applikationen, die mit Networking, Infrastruktur und Microservices zu tun haben (etwa Kubernetes, Docker). Die Go-Entwickler tragen diesem Umstand nun Rechnung und haben “contexts” in die Standard Library integriert. Die Pakete “net”, “net/http” und “os/exec” unterstützen Kontexte, mehr Details verrät ein Blogpost.
Neben weiteren Verbesserungen und Reparaturen ist der mit Go 1.5 eingeführte Support für ein Vendor-Verzeichnis nun fester Bestandteil von Go 1.7 und muss nicht extra aktiviert werden. Wer Go 1.7 herunterladen möchte, findet den Quellcode auf der Projektseite.




