Veröffentlichung der Programmiersprache Go 1.23 mit Unterstützung für Telemetrie

Nach sechs Monaten Entwicklung ist die Veröffentlichung der Programmiersprache Go 1.23 erschienen, die von Google entwickelt wird und die Unterstützung der Community als hybride Lösung bietet. Sie vereint die hohe Leistung kompilierter Sprachen mit den Vorteilen von Skriptsprachen, darunter die Leichtigkeit des Schreibens, eine schnelle Entwicklung und Fehleranfälligkeit. Der Code des Projekts wird unter der BSD-Lizenz verbreitet.

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 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.

Zu den Änderungen in der neuen Version gehören:

  • In Schleifen des Typs „for“ kann nun eine Funktion als Argument des Ausdrucks „range“ angegeben werden, um diese Funktion als Iterator zu verwenden. Dies ermöglicht die Erstellung eigener Iteratoren für beliebige Sequenzen. Es können Funktionen der folgenden Typen angegeben werden: func(func() bool), func(func(K) bool) und func(func(K, V) bool). Ein neues Paket namens iter wurde hinzugefügt, das grundlegende Operationen zur Organisation der Durchläufe durch Sequenzen bereitstellt. Zudem wurden neue Funktionen für den Umgang mit Iteratoren in den Paketen slices und maps hinzugefügt. Beispielsweise kann zum Durchlaufen der Schlüssel eines assoziativen Arrays in sortierter Form nun geschrieben werden: „for i, x := range slices.Sorted(maps.Keys(m)) {…}“.
  • Die vorläufige Unterstützung für die Verwendung von Typaliasen mit eigenen Parametern in generischen Funktionen (Generika) wurde hinzugefügt, die durch das Aktivieren von GOEXPERIMENT=aliastypeparams aktiviert werden kann. Damit können Funktionen erstellt werden, die mit mehreren Typen gleichzeitig arbeiten.
  • Das Toolkit wurde um die Möglichkeit ergänzt, Telemetrie zu senden. der Server telemetry.go.dev. Die Telemetrie wird in lokalen Dateien gespeichert, die für Audits verfügbar sind, und umfasst ausschließlich Daten zu den Leistungsmerkmalen des Tools (Telemetrie wird nicht in Benutzeranwendungen integriert, die mit dem Tool gesammelt werden). Standardmäßig ist das Senden der Telemetriedaten an einen externen Server deaktiviert (Opt-in) und muss mit dem neuen Befehl „go telemetry on“ aktiviert werden. Das Senden von Telemetriedaten hilft dabei, Anomalien und unerwartetes Verhalten zu erkennen, die Interaktion der Entwickler mit dem Tool zu bewerten und zu verstehen, welche Optionen am gefragtesten sind und welche kaum genutzt werden. Es wird erwartet, dass die gesammelten Statistiken dabei helfen, das Tool zu modernisieren und die Effizienz und Benutzerfreundlichkeit zu steigern.
    Veröffentlichung der Programmiersprache Go 1.23 mit Unterstützung für Telemetrie
  • Der Befehl „go env -changed“ wurde hinzugefügt, um nur die Einstellungen anzuzeigen, deren Werte von den Standardwerten abweichen.
  • Der Befehl „go mod tidy -diff“ wurde hinzugefügt, der anstelle von Änderungen in den Dateien die Unterschiede in Form eines Patches im Diff-Format ausgibt.
  • Das Team «go vet» hat einen Versionsanalysator hinzugefügt, der Elemente anzeigt, die zu neu für die Verwendung in der ausgewählten Go-Version sind. Zum Beispiel gibt der Analysator eine Warnung aus, wenn die Funktion reflect.TypeFor, die in Version 1.22 eingeführt wurde, in einem Modul verwendet wird, das die Unterstützung für Version 1.21 angibt.
  • Die Implementierung der Typen time.Timer und time.Ticker wurde verbessert, wobei Änderungen bezüglich der Pufferung und der Optimierung der Speicherbereinigung vorgenommen wurden.
  • Ein Paket namens structs wurde hinzugefügt, das Typen zur Modifikation von Struktur-Eigenschaften definiert.
  • Ein Paket unique mit Funktionen zur Kanonisierung vergleichbarer Werte wurde hinzugefügt.
  • Die Dateien go.mod und go.work unterstützen jetzt die Direktive godebug zur Steuerung der Debugging-Funktionen.
  • Es wurde experimentelle Unterstützung für OpenBSD auf 64-Bit RISC-V-Systemen (openbsd/riscv64) hinzugefügt. Zudem wurde die Unterstützung für Linux, macOS, ARM64, RISC-V und WASI verbessert.
  • Die Leistung auf i386- und amd64-Architekturen wurde erhöht, indem die auf Profilierungsergebnissen basierende Optimierung (PGO – Profile-guided optimization) aktiviert wurde, die Merkmale berücksichtigt, die während der Programmausführung ermittelt werden.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster