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.

In Pocket speichern vorlesen Druckansicht 15 Kommentare lesen
Ein Laptop mit Code, dahinter ein "Gopher" (Taschenratte) fĂĽr das Maskottchen der Sprache

(Bild: Erstellt mit Dall-E durch iX)

Lesezeit: 3 Min.
Inhaltsverzeichnis

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.

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.

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.

Kurz nach dem offiziellen Start der Telemetrie sind die öffentlichen Daten wie hier für den Go-Language-Server gopls ("Go Please") überschaubar.

(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.

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)