Die Entwickler der Programmiersprache Go haben die Standardbibliothek aufgebohrt, der Runtime Beine gemacht, die zugehörigen Tools erweitert und die Ausgabe als WebAssembly-Programm verbessert. Die Sprache selbst kennt zudem Generic Type Aliases.
Dabei darf ein Type-Alias jetzt auch Parameter besitzen. Als Beispiel nennt die entsprechend erweiterte Sprachspezifikation:
type set[P comparable] = map[P]bool
Verschiedene Optimierungen in der Laufzeitumgebung sorgen dafür, dass Go-Programme bis zu drei Prozent flotter laufen. Unter anderem erfolgt die Speicherallokation von kleinen Objekten effizienter. Darüber hinaus haben die Entwickler „map“ auf der Basis von Swiss Tables, einer speziellen Variante der Hash-Tabellen, neu implementiert.
Aktualisierte Standardbibliothek
Das amerikanische National Institute of Standards and Technology (NIST) beschreibt im Standard FIPS 140-3, welche Anforderungen eine kryptographische Komponente erfüllen sollte – insbesondere wenn sie in US-Behörden zum Einsatz kommen. Die Standardbibliothek von Go 1.24 ermöglicht jetzt die Einhaltung von FIPS 140-3. Gleichzeitig wanderten einige Kryptographiepakete aus dem „x/crypto“-Modul in die Standardbibliothek.
Über den neuen Datentyp „os.Root“ lassen sich Dateisystemoperationen auf ein vorgegebenes Verzeichnis beschränken: Die Funktion „os.OpenRoot“ öffnet ein Verzeichnis und liefert ein „os.Root“ zurück. Die darauf ausgeführten Dateioperationen können dieses Verzeichnis dann nicht mehr verlassen. Auch einem symbolischen Link, der auf einen Pfad außerhalb des Verzeichnisses verweist, folgt Go dann nicht mehr.
Benchmarks dürfen jetzt die schnellere und weniger fehleranfällige Methode „testing.B.Loop“ für Benchmark-Iterationen verwenden. Wer beim Beenden seines Go-Programms noch aufräumen möchte, kann dazu auf das neue „runtime.AddCleanup“ zurückgreifen. Der dabei implementierte Cleanup-Mechanismus soll flexibler und effizienter arbeiten als das bisher dazu angebotene „runtime.SetFinalizer“.
Neues in der Toolchain
Das zentrale Werkzeug „go“ kann die Tool-Abhängigkeiten eines Models verfolgen. Dazu kennt es den neuen Parameter „-tool“, mit dem man via „go get -tool“ eine „tool“-Direktive dem aktuellen Modul hinzufügen kann. Die damit deklarierten Werkzeuge führt dann wiederum „go tool [tool name]“ aus.
Das Kommando „go vet“ bietet einen neuen „test“-Analyzer. Er erkennt häufige Fehler und Probleme in den Deklarationen von Tests, Fuzzers und Benchmarks sowie den Beispielen in Testpaketen.
Erweiterte WebAssembly-Unterstützung
Abschließend haben die Entwickler die neue Compiler-Direktive „go:wasmexport“ eingeführt, mit der sich Funktionen zu einem WebAssembly-Host exportieren lassen. Go 1.24 kann zudem das Programm als WASI reactor/library bauen.





