Nach sechsmonatiger Entwicklung wird die Programmiersprache Go 1.25 veröffentlicht, die von Google mit Unterstützung der Community entwickelt wird. Die Sprache kombiniert die hohe Leistung, die typischen kompilierbaren Sprachen eigen ist, mit den Vorteilen von Skriptsprachen, wie z. B. der einfachen Code-Schreibung, der hohen Entwicklungsgeschwindigkeit und der Fehlervermeidung. Der Quellcode des Projekts wird unter der BSD-Lizenz veröffentlicht.
Die Syntax von Go basiert auf vertrauten Elementen der Programmiersprache C, ergänzt durch einige Entlehnungen aus Oberon. Die Sprache ist kompakt, während der Code gut lesbar und nachvollziehbar bleibt. Go-Code wird in eigenständige binäre ausführbare Dateien kompiliert, die nativ ohne den Einsatz einer virtuellen Maschine ausgeführt werden (Profilierungs-, Debugging-Module und andere Subsysteme zur Problemerkennung werden in Form von Runtime-Komponenten integriert), was eine Leistung ermöglicht, die mit Programmen in C vergleichbar ist.
Das Projekt wird von Anfang an mit Blick auf Multithreading-Programmierung und effiziente Nutzung von Multicore-Systemen entwickelt. So wurden beispielsweise auf Operator-Ebene Mittel zur Organisation paralleler Berechnungen und zur Interaktion zwischen parallel ausgeführten Methoden implementiert. Die Sprache bietet auch integrierte Mechanismen zum Schutz vor Pufferüberläufen und ermöglicht die Nutzung eines Garbage Collectors.
Zu den Änderungen in der neuen Version gehören:
- Ein experimenteller Garbage Collector namens „greenteagc“ wurde hinzugefügt, der darauf abzielt, die Leistung bei der Erstellung und dem Scannen kleiner Objekte zu verbessern. In Anwendungen, die intensiv Garbage Collection nutzen, zeigt der Einsatz von „greenteagc“ eine Reduzierung der Overheadkosten für die Garbage Collection um 10-40%.
- Experimentelle Pakete encoding/json/v2 und encoding/json/jsontext wurden hinzugefügt. Das erste Paket enthält eine überarbeitete, hochleistungsfähige Implementierung des Pakets encoding/json. Das zweite Paket bietet Funktionen für die Low-Level-Verarbeitung der JSON-Syntax.
- Ein neues Paket testing/synctest wurde hinzugefügt, um die Synchronisation zwischen verschiedenen Threads in parallel ausgeführtem Code zu testen.
- In dem Befehl „go build“ ist standardmäßig die Option „-asan“ aktiviert, die Speicherleck-Prüfungen beim Programmende durchführt.
- In den Befehl „go vet“ wurden neue Analysatoren „waitgroup“ und „hostport“ hinzugefügt, um die fehlerhafte Verwendung von sync.WaitGroup.Add und fmt.Sprintf(„%s:%d“, host, port) zu prüfen.
- Bei der Berechnung des Wertes von GOMAXPROCS wird jetzt nicht nur die Anzahl der verfügbaren logischen CPUs festgelegt, sondern es werden auch die in Containern angewandten CPU-Leistungsbeschränkungen berücksichtigt.
- Der Compiler und der Linker unterstützen die Generierung von Debugging-Informationen im DWARF5-Format, das eine kompaktere Datenrepräsentation bietet.
Quelle: opennet.ru
