Programmiersprache Go 1.21 hat KompatibilitÀt und Codeoptimierung im Fokus

(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.
Kompatibel beim Versionsaufstieg
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.
Compiler nutzt Profiler-Daten
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.
Kleine sprachliche Ănderungen
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
Copyright © 2023 Heise Medien