Programmiersprache Go 1.21 hat Kompatibilität und Codeoptimierung im Fokus

Über eine Umgebungsvariable lässt sich der Umgang mit Änderungen in Go-Releases steuern, und die Sprache stabilisiert die Profile-Guided Optimization.

In Pocket speichern vorlesen Druckansicht
A,Pillar,With,A,Lot,Of,Traffic,Lights.,Berlin,,Germany

(Bild: Try_my_best/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Google hat im regelmäßigen Halbjahrestakt Go 1.21 veröffentlicht. Die Programmiersprache bringt in der aktuellen Version vor allem Verbesserungen in der Toolchain mit. Im Fokus stehen dabei die Rückwärtskompatibilität und das Optimieren des Codes beim Kompilieren. Außerdem bietet die Sprache drei neue Funktionen.

Go 1.21 formalisiert den Einsatz der Umgebungsvariable GODEBUG, um die Rückwärtskompatibilität zwischen Minor Releases sicherzustellen. Die Sprache führt zwar in der 1.x-Reihe keine Breaking Changes ein, aber Programme können Kompatibilitätsprobleme bekommen, wenn sie sich beispielsweise auf fehlerhafte Umsetzungen in der Sprache verlassen, die in einem Bugfix verschwinden.

Die neue Umgebungsvariable dient dazu, einzelne Anpassungen zu deaktivieren, um das jeweils aktuelle Go-Release ohne das ausgewählte Feature zu verwenden. In der Dokumentation zu GODEBUG findet sich als Beispiel eine Clientanwendung, die mit einem Server kommuniziert, der eine fehlerhafte HTTP/2-Implementierung hat. Seit Go 1.6 setzt die Sprache standardmäßig auf die neuere Version des Netzwerkprotokolls. Wenn HTTP/2 zu Problemen in der Anwendung führt, lässt es sich über die Umgebungsvariable für Client und Server separat deaktivieren:

GODEBUG=http2client=0,http2server=0

Die Dokumentation zu GODEBUG führt die Settings zum Abschalten der in den 1.x-Versionen eingeführten Features auf, die sich kommasepariert kombinieren lassen. Programme und Pakete können die Umgebungsvariable zudem passend zum Namen für die interne Fehlersuche mit dem Debugger verwenden und dabei eigene Werte definieren.

Die Profile-Guided Optimization (PGO) war bereits in Go 1.20 enthalten, aber bisher als Preview gekennzeichnet. Mit dem aktuellen Release gilt die Funktion als stabil. Bei der PGO nutzt der Compiler Informationen des Profilers für Performance-Optimierungen, die speziell für produktive Anwendungen ausgelegt sind.

Um die Funktion zu nutzen, muss zunächst das Profiling in Go aktiviert sein. Der Profiler erstellt dann CPU-pprof-Profile, die der Compiler nutzt, um Optimierungspotenzial zu erkennen. Er kann unter anderem häufig aufgerufene Methoden als Inline-Funktionen umsetzen, um den Overhead für den Aufruf loszuwerden.

Die Programmiersprache bringt im aktuellen Release zudem drei neue Funktionen mit: min und max geben den kleinsten beziehungsweise größten Wert von einer Reihe Parameter zurück. clear dient dazu, alle Elemente einer Map zu löschen oder alle Elemente eines Slice auf Nullwerte zu setzen.

Weitere Neuerungen in Go 1.21, die unter anderem die Typinferenz verbessern, finden sich in den Release Notes. Bei den Betriebssystemen von Apple und Microsoft setzt das Release die Mindestvoraussetzung herauf und benötigt nun mindestens macOS 10.15 beziehungsweise Windows 10.

(rme)