Die Programmiersprache Go 1.17 wurde veröffentlicht, die von Google in Zusammenarbeit mit der Community als hybrides Lösung entwickelt wird, die die hohe Leistung kompilierter Sprachen mit den Vorteilen Skriptsprachen kombiniert, wie z. B. einfache Code-Erstellung, schnelle Entwicklung und Fehlerresistenz. Der Projektcode wird unter der BSD-Lizenz veröffentlicht.
Die Syntax von Go basiert auf bekannten Elementen der Programmiersprache C mit einzelnen Entlehnungen aus Python. Die Sprache ist recht prägnant, der Code ist jedoch leicht lesbar und verständlich. Go-Code wird in separate, eigenständige ausführbare Binärdateien kompiliert, die nativ ohne Verwendung einer virtuellen Maschine ausgeführt werden (Profilierungs-, Debugging- und andere Fehlererkennungssysteme werden in Form von Runtime-Komponenten integriert), was eine Performance ermöglichen kann, die mit Programmen in C vergleichbar ist.
Das Projekt wird von Anfang an mit dem Fokus auf Multithreading und die effiziente Nutzung von Mehrkernsystemen entwickelt. Dabei werden auf Betreiber-Ebene implementierte Werkzeuge für die Organisation paralleler Berechnungen und die Interaktion zwischen gleichzeitig ausgeführten Methoden bereitgestellt. Die Sprache bietet zudem integrierte Schutzmechanismen gegen das Überschreiten der zulässigen Grenzen reservierter Speicherblöcke und ermöglicht die Nutzung eines Garbage Collectors.
In der neuen Version wurden geringfügige Änderungen an der Programmiersprache vorgenommen, die Unterstützung für die Windows-Edition auf der 64-Bit-Architektur ARM hinzugefügt und die Compiler-Optimierung fortgesetzt. Insbesondere wurden die Argumentübergabemethoden in Funktionen und die Rückgabe von Ergebnissen im Compiler überarbeitet, was eine durchschnittliche Leistungssteigerung von 5 % für Anwendungen und eine Verkürzung der ausführbaren Datei um 2 % auf x86_64-Systemen ermöglicht hat. Zu den funktionalen Änderungen gehören die Implementierung neuer Funktionen im Paket unsafe — unsafe.Add und unsafe.Slice für sichere arithmetische Operationen mit Zeigern sowie eine sichere Umwandlung von Zeigern in Slices und umgekehrt.
Quelle: opennet.ru
