zurĂŒck zum Artikel

Programmiersprache Go 1.21 hat KompatibilitÀt und Codeoptimierung im Fokus

Rainald Menge-Sonnentag
A,Pillar,With,A,Lot,Of,Traffic,Lights.,Berlin,,Germany

(Bild: Try_my_best/Shutterstock.com)

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

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 [1], 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 [2] 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 [3] 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 [4] 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 [5], 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 [6], 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 [7]. 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 [8])


URL dieses Artikels:
https://www.heise.de/-9239813

Links in diesem Artikel:
[1] https://go.dev/doc/go1compat
[2] https://www.heise.de/news/C-Alternative-Programmiersprache-Go-1-6-mit-HTTP-2-Support-veroeffentlicht-3109984.html
[3] https://go.dev/doc/godebug
[4] https://pkg.go.dev/runtime#hdr-Environment_Variables
[5] https://www.heise.de/news/Programmiersprache-Go-1-20-nutzt-Profiler-Informationen-zum-Optimieren-des-Codes-7480173.html
[6] https://pkg.go.dev/runtime/pprof
[7] https://go.dev/doc/go1.21#godebug
[8] mailto:rme@ix.de