Programmiersprache Go 1.19 passt ihr Speichermodell an C, Java und Rust an

Das Update auf Go 1.19 bessert bei den Generics nach und gleicht das Memory Model stärker an die Definitionen bei C, C++, Java, JavaScript, Rust und Swift an.

In Pocket speichern vorlesen Druckansicht 18 Kommentare lesen

(Bild: Scott Prokop / Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Matthias Parbel

Das Go-Entwicklerteam hat Version 1.19 der Programmiersprache veröffentlicht. Laut Ankündigung sind in das neue Release eine Reihe von Leistungs- und Implementierungsverbesserungen eingeflossen, unter anderem auch zu den erst in Go 1.18 offiziell freigegebenen Generics. Das Go-Team hat zudem das Speichermodell in einigen Punkten stärker an die Memory Models verbreiteter Programmiersprachen wie C, Java und Rust angeglichen.

Die wichtigste Neuerung im vorangegangenen Release war die Einführung der Generics – ein in zahlreichen Sprachen etabliertes Feature, das Go-Entwicklerinnen und -Entwicklern lange vorenthalten blieb. Um die mit generischer Programmierung verbundene Komplexität zu vermeiden, hatten die Go-Designer ursprünglich auf Generics verzichtet.

Generische Datenstrukturen wie Listen, Graphen oder Baumstrukturen mussten daher bis Go 1.18 für jeden konkreten Datentyp, den sie verwalten sollten, immer wieder neu implementiert werden, statt den Typ auch im späteren Verlauf noch zuordnen zu können. Mit Freigabe von Go 1.19 dürfen Entwicklerinnen und -Entwickler nicht nur auf Leistungssteigerungen beim Einsatz der Generics hoffen – das Go-Team spricht von einem Plus bis zu 20 Prozent –, auch verschiedene von der Community gemeldete Fragen und Probleme sollen abgearbeitet worden sein.

Überarbeitet haben die Macher hinter der auf Google zurückgehenden Sprache außerdem das Go-Speichermodell. Konkret wurde für das Update auf Version 1.19 das Verhalten des sync/atomic-Pakets klarer festgelegt. Die Definition der Happens-before-Relation wurde dazu an die der Memory Models von C, C++, Java, JavaScript, Rust und Swift angeglichen – bestehende Go-Programme sollen davon allerdings unberührt bleiben. Um darüber hinaus den Einsatz atomarer Werte zu vereinfachen, hat das Go-Team das sync/atomic-Paket um neue Typen wie atomic.Int64 und atomic.Pointer[T] ergänzt.

Weitere Neuerungen in Go 1.19 betreffen die Dokumentation, insbesondere die Doc Comments. Um die Navigation innerhalb der Kommentare zu erleichtern und damit auch Go-Entwicklerinnen und -Entwickler gezielter zu unterstützen, klareren Code zu schreiben, lassen sich Doc Comments künftig um Links und Listen ergänzen. Für Überschriften ist zudem eine verständlichere Syntax vorgesehen. Vorhandene Kommentare lassen sich mit gofmt neu formatieren und für die neuen Funktionen anpassen. Mehr Details zu den Änderungen finden sich in der Dokumentation.

Einen vollständigen Überblick und ergänzende Informationen zu sämtlichen Neuerungen in Go 1.19 liefert die Ankündigung auf dem offiziellen The-Go-Blog.

(map)