Release der Programmiersprache Go 1.13

Präsentiert Die Veröffentlichung der Programmiersprache Go 1.13, die von Google in Zusammenarbeit mit der Community als hybride Lösung entwickelt wird, kombiniert die hohe Leistung kompilierter Sprachen mit den Vorteilen von Skriptsprachen, wie der einfachen Codeerstellung, der schnellen Entwicklung und der Fehlersicherheit. Der Projektcode wird unter der GPLv3-Lizenz bereitgestellt. unter der BSD-Lizenz.

Die Syntax von Go basiert auf bekannten Elementen der Sprache C mit einzelnen Entlehnungen aus der Sprache Python. Die Sprache ist recht prägnant, aber der Code ist leicht lesbar und nachvollziehbar. Go-Code wird in separate Binär-Executable-Dateien kompiliert, die nativ ohne Verwendung einer virtuellen Maschine ausgeführt werden (Profiling-Module, Debugging und andere Systeme zur Fehlererkennung werden als Runtime-Komponenten), 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.

Haupt Neuheiten, die mit der Veröffentlichung von Go 1.13 präsentiert wurden:

  • Im Paket crypto/tls ist standardmäßig Unterstützung für das Protokoll enthalten TLS 1.3. Ein neues Paket „crypto/ed25519“ wurde hinzugefügt, das Unterstützung für digitale Signaturen mit Ed25519 bietet;
  • Unterstützung für neue Präfixe von numerischen Literalen zur Definition von binären Zahlen (z. B. 0b101), oktalen (0o377), komplexen (2.71828i) und hexadezimalen Gleitkommazahlen (0x1p-1021) hinzugefügt; außerdem ist die Verwendung des Symbols „_“ zur besseren Lesbarkeit großer Zahlen (1_000_000) möglich.
  • Die Beschränkung auf die Verwendung nur von vorzeichenlosen Zählern bei Schiebeoperationen wurde aufgehoben, wodurch überflüssige Konvertierungen in den Typ uint vor der Nutzung der Operatoren „‹‹“ und „››“ vermieden werden.
  • Unterstützung für die Illumos-Plattform (GOOS=illumos) hinzugefügt. Kompatibilität mit der Plattform Android 10 gewährleistet. Die Anforderungen an die Minimalversionen von FreeBSD (11.2) und macOS (10.11 „El Capitan“) wurden erhöht.
  • Die Weiterentwicklung des neuen Modulsystems, das als Alternative zu GOPATH verwendet werden kann, geht weiter. Entgegen früheren Plänen wurde dieses System in Go 1.13 nicht standardmäßig aktiviert und erfordert die Aktivierung über die Variable GO111MODULE=on oder die Nutzung eines Kontexts, in dem Module automatisch verwendet werden. Das neue Modulsystem bietet integrierte Versionsunterstützung, Paketlieferwerkzeuge und ein verbessertes Abhängigkeitsmanagement. Mit Modulen sind Entwickler nicht mehr an das Arbeiten innerhalb des GOPATH-Baums gebunden, sie können Abhängigkeiten klar unter Berücksichtigung der Versionen definieren und reproduzierbare Builds erstellen.

    Im Gegensatz zu früheren Versionen erfolgt die automatische Anwendung des neuen Systems nun, wenn beim Ausführen des go-Befehls im aktuellen Arbeitsverzeichnis oder im übergeordneten Verzeichnis eine Datei go.mod vorhanden ist, auch wenn man sich im Verzeichnis GOPATH/src befindet. Es wurden neue Umgebungsvariablen hinzugefügt: GOPRIVATE, die die Pfade öffentlicher Module definiert, und GOSUMDB, die Zugriffseinstellungen für Modulsummenbanken festlegt, die nicht in der go.sum-Datei aufgeführt sind.

  • Im Standard wird im Team „go“ das Laden von Modulen und die Überprüfung ihrer Integrität sichergestellt, indem Module und Prüfzifferndaten von Google (proxy.golang.org, sum.golang.org und index.golang.org) verwendet werden;
  • Die Unterstützung nur für Binärpakete wurde eingestellt, das Erstellen eines Pakets im Modus „//go:binary-only-package“ führt nun zur Ausgabe eines Fehlers;
  • Im Befehl „go get“ wurde die Unterstützung für das Suffix „@patch“ hinzugefügt, das angibt, dass das Modul auf die letzte Korrekturversion aktualisiert werden soll, jedoch ohne Änderung der aktuellen Haupt- oder Nebenversion;
  • Beim Abrufen von Modulen aus Versionskontrollsystemen führt das Team „go“ jetzt eine zusätzliche Überprüfung der Versionsnummer durch und versucht, Pseudo-Versionen mit den Metadaten aus dem Repository abzugleichen;
  • Unterstützung für Fehlerinspektierung (Fehlerverkapselung) durch die Erstellung von Wrappern, die die Verwendung von typisierten Fehlerbehandlungsmechanismen ermöglichen. Zum Beispiel kann Fehler „e“ über den Fehler „w“ gewrappt werden, indem eine Methode bereitgestellt wird Unwrap, der das „w“ zurückgibt. Beide Fehler „e“ und „w“ sind im Programm verfügbar, und Entscheidungen basieren auf dem Fehler „w“, wobei „e“ zusätzlichen Kontext zu „w“ bietet oder ihn anders interpretiert;
  • Die Leistung der Runtime-Komponenten wurde optimiert (es wird eine Geschwindigkeitssteigerung von bis zu 30 % festgestellt) und es wird aggressiverer Speicher zur Betriebssystemrückgabe verwendet (früher wurde der Speicher nach fünf Minuten oder mehr zurückgegeben, jetzt sofort nach der Verkleinerung des Heaps).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster