Zum Hauptinhalt Zur Navigation

Programmiersprache: Go 1.19 erscheint mit überarbeitetem Speichermodell

Das Speichermodell von Go sei nun an jenen von C/C++, Rust oder anderen Sprachen ausgerichtet. Die Nutzung von Atomics soll einfacher werden.
/ Ulrich Bantle (Linux Magazin) , Sebastian Grüner
Kommentare News folgen (öffnet im neuen Fenster)
Die Taschenratte, englisch Gopher, ist das Maskottchen der Sprache Go. (Bild: Ketzirah Lesser & Art Drauglis, flickr.com)
Die Taschenratte, englisch Gopher, ist das Maskottchen der Sprache Go. Bild: Ketzirah Lesser & Art Drauglis, flickr.com / CC-BY-SA 2.0

Die aktuelle Version 1.19 der Programmiersprache Go ist erschienen(öffnet im neuen Fenster) . Laut der Ankündigung haben die Beteiligten das Speichermodell der Sprache überarbeitet. Das sei geschehen, um Go an das von C, C++, Java, JavaScript, Rust und Swift verwendete Speichermodell anzugleichen, heißt es weiter. Mit der Aktualisierung des Speichermodells führt Go 1.19 neue Typen im sync/atomic -Paket ein, die die Verwendung atomarer Werte erleichtern sollen, wie atomic.Int64 und atomic.Pointer[T] .

Hintergründe zu dem Projekt liefert eine ausführliche Erklärung durch den langjährigen Go-Entwickler Russ Cox(öffnet im neuen Fenster) . Demnach ist 2009 mit Entstehung der Sprache erstmals auch dessen Speichermodell erstellt und seitdem auch leicht aktualisiert worden.

Cox schreibt aber auch: "Es ist klar, dass es zumindest ein paar Details gibt, die wir dem aktuellen Speichermodell hinzufügen sollten, darunter eine ausdrückliche Befürwortung von Race-Detektoren und eine klare Aussage darüber, wie die APIs in sync/atomic-Programmen synchronisieren." Einige der Ideen von Cox hat das Team auf Github diskutiert(öffnet im neuen Fenster) und für die aktuelle Version 1.19 umgesetzt.

Kleine Updates

Die Laufzeitumgebung bietet in Go 1.19 Unterstützung für eine weiche Speicherbegrenzung. Diese Speichergrenze umfasst den Go-Heap und alle anderen von der Laufzeitumgebung verwalteten Speicher und schließt externe Speicherquellen wie Mappings der Binärdatei selbst, in anderen Sprachen verwalteten Speicher und vom Betriebssystem im Auftrag des Go-Programms gehaltenen Speicher aus, teilen die Entwickler mit.

An der Sprache selbst gebe es nur eine kleine Änderung und die betreffe eine Korrektur des Geltungsbereichs von Typparametern in Methodendeklarationen, teilen die Entwickler mit. Bestehende Programme seien davon nicht betroffen. Auch die Bibliotheken haben Neuerungen erfahren. Wie gewohnt betonen die Entwickler die Rückwärtskompatibilität: "Wir erwarten, dass fast alle Go-Programme weiterhin kompiliert werden und wie bisher laufen."


Relevante Themen