Programmiersprache Go 1.23 erweitert Iteratoren und fĂĽhrt Telemetrie ein
Die Standard-Library von Go erhält in Version 1.23 drei neue Pakete. Die Toolchain kann nun Telemetriedaten weitergeben. Außerdem kommen Generic Type Aliases.

(Bild: Erstellt mit Dall-E durch iX)
Im turnusmäßigen Halbjahrestakt ist Go 1.23 erschienen. Das Release bringt vor allem Erweiterungen der Standard-Library und der Toolchain mit.
Bei den sprachlichen Neuerungen sind die erweiterten Iteratoren nennenswert. Bereits in Go 1.22 hatte das Team das Range-over-func-Experiment als Ansatz gestartet, benutzerdefinierte Iteratoren fĂĽr Funktionswerte zu verwenden.
Neue Pakete in der Standard-Library
Die Standardbibliothek von Go fĂĽhrt im aktuellen Release das Paket iter
ein, das grundlegende Definitionen fĂĽr benutzerdefinierte Iteratoren mitbringt. Parallel dazu hat das Go-Team die Pakete slices
und maps
erweitert, damit sie mit den Iteratoren zusammenarbeiten.
Unter anderem gibt Keys
einen Iterator ĂĽber alle SchlĂĽssel einer Map zurĂĽck. FĂĽr Slices gibt Backward
einen Iterator zurück, der das Slice rückwärts durchläuft. Weitere Ergänzungen finden sich im Abschnitt zu Iteratoren in den Release Notes.
Neben den iter
hat die Standard-Library in Go 1.23 zwei weitere neue Pakete an Bord: structs
ermöglicht es, die Eigenschaften von struct
-Typen unter anderem für das Speicherlayout zu verändern. Das Paket unique
dient dazu, vergleichbare Werte zu kanonisieren, um sie in eine Normalform zu bringen. Auf die Weise können Programme Werte effizient deduplizieren.
Mehr Einblick in die Toolchain
Go Telemetry ist ein neues System, das Telemetriedaten der Toolchain erfasst. Es ist als Opt-in-System ausgelegt: Standardmäßig sammeln die Werkzeuge der Go-Toolchain lediglich Statistiken, die sich lokal auswerten lassen. Wer go telemetry on
nutzt, überträgt etwa einmal wöchentlich ein Subset der Informationen an telemetry.go.dev. Auf der Site finden sich Charts zu einigen Nutzerdaten.
(Bild:Â Screenshot (Rainald Menge-Sonnentag))
Die Telemetrie lässt sich mit dem Parameter off
auch völlig deaktivieren, sodass Go auch lokal keine Nutzungsdaten speichert. Details zur Telemetrie und Hinweise zum Datenschutz finden sich in der Go-Dokumentation.
Erweiterungen fĂĽr den go-Befehl und fĂĽr Generics
Der go
-Befehl bekommt in der aktuellen Version ebenfalls ein paar Erweiterungen. Unter anderem kann der Unterbefehl vet
zum ĂśberprĂĽfen von Paketen mit dem stdversion
-Analyzer testen, ob einzelne Symbole neuer als die in der Konfigurationsdatei go.mod angegebenen Go-Version sind.
Passend dazu gibt es eine Ergänzung für go mod tidy
, das sicherstellt, dass die go.mod-Datei den Anforderungen an die Pakete und Dependencies entspricht: Mit dem zusätzlich Flag -diff
ändert der Befehl die Konfigurationsdatei nicht, sondern zeigt nur die benötigten Änderungen an.
Nennenswert im aktuellen Release sind zudem die als Preview gekennzeichneten generischen Typaliase als Erweiterung der in Version 1.18 eingefĂĽhrten Generics.
Weitere Neuerungen in Go 1.23 wie Anpassungen im time
-Paket lassen sich dem Go-Blog entnehmen. Die vollständige Liste der Neuerungen findet sich in den Release Notes. Die Binaries für Linux, Windows und macOS sowie des Sourcecodes stehen auf der Downloadseite bereit.
(rme)