Googles Programmiersprache Go (Golang) hat ihre neueste Version, Go 1.19, veröffentlicht. Sie verbessert die Unterstützung von Generika, führt ein erweitertes Speichermodell ein und bietet eine Reihe weiterer Funktionen. Das Update konzentriert sich auf die Verfeinerung der kürzlich hinzugefügten Generika, die erstmals in Go 1.18 eingeführt wurden, und die Optimierung der Leistung von generischem Code um bis zu 20 Prozent.
Verbesserungen in Go 1.19
Mit der Veröffentlichung von Go 1.19 am 2. August konzentriert sich die Entwicklung der Generik-Unterstützung auf die Behebung von subtilen Problemen und Eckfällen, die von der Community gemeldet wurden, sowie auf Leistungsverbesserungen. Die Einführung von Generika in die Sprache war eine lang erwartete Funktion, die in Go 1.18, das im März veröffentlicht wurde, hinzugefügt wurde.
Das Speichermodell von Go wurde aktualisiert, um das Verhalten des sync/atomic-Pakets explizit zu definieren, das atomare Speicherprimitive auf niedriger Ebene für die Implementierung von Synchronisationsalgorithmen bereitstellt. Die formale Definition der happens-before-Beziehung wurde überarbeitet, um sie an die von C, C++, Java, JavaScript, Rust und Swift verwendeten Speichermodelle anzugleichen. Diese Aktualisierung hat keine Auswirkungen auf bestehende Programme.
Als Teil der Aktualisierung des Speichermodells wurden neue Typen im sync/atomic-Paket eingeführt, darunter atomic.int64 und atomic.Pointer(T), die die Verwendung von atomaren Werten erleichtern. Go 1.19 steht ab sofort unter go.dev für Windows, macOS und Linux zum Download bereit.
Zusätzliche Funktionen in Go 1.19
Neben den Verbesserungen bei den Generika und dem neuen Speichermodell hat Go 1.19 weitere Funktionen eingeführt:
- Ein Soft-Memory-Limit für den Garbage-Collector, das hilft, Go-Programme zu optimieren, die in Containern mit dedizierten Speicherzuweisungen laufen.
- Leistungs- und Implementierungsverbesserungen, wie z.B. dynamische Größenanpassung von Coroutine-Stapeln, um das Kopieren von Stapeln zu reduzieren, automatische Verwendung von zusätzlichen Dateideskriptoren auf den meisten Unix-Systemen, Sprungtabellen für große switch-Anweisungen auf x86-64 und ARM64 und Unterstützung für Debugger-injizierte Funktionsaufrufe auf ARM64.
- Eine kleine Korrektur für Typ-Parameter in Methoden-Deklarationen ohne Auswirkungen auf bestehende Programme.
- Doc-Kommentare unterstützen nun Links, Listen und Überschriftssyntax, was die Zusammensetzung von Doc-Kommentaren klarer macht, insbesondere für Pakete mit umfangreichen APIs.
- Aus Sicherheitsgründen erlaubt das os/exec-Paket keine relativen Pfade mehr in PATH-Lookups.
- Es wurde eine neue Build-Bedingung, unix, eingeführt, die erfüllt ist, wenn das Zielbetriebssystem auf einem Unix-ähnlichen System läuft.
Mit der zunehmenden Verbreitung von no-code und low-code Plattformen wie AppMaster ist es für Entwickler unerlässlich, mit den neuesten Fortschritten in beliebten Programmiersprachen wie Go auf dem Laufenden zu bleiben. Die Integration von Go in AppMaster kann die Entwicklung von Backend-Anwendungen beschleunigen und bietet verbesserte Skalierbarkeit und Kosteneffizienz. Go 1.19 bringt wesentliche Verbesserungen, um die Leistung, die Sicherheit und die Erfahrung der Entwickler zu erhöhen und stärkt damit seine Position als wichtiges Werkzeug für die moderne Softwareentwicklung.