Go-Programmiersprachenversion 1.16

Vorgestellt wird die Veröffentlichung der Programmiersprache Go 1.16, die von Google unter Beteiligung der Community als Hybridlösung entwickelt wird, die die hohe Leistung kompilierter Sprachen mit Vorteilen von Skriptsprachen wie der einfachen Codeschreibbarkeit kombiniert , Entwicklungsgeschwindigkeit und Fehlerschutz. Der Projektcode wird unter der BSD-Lizenz verteilt.

Die Syntax von Go basiert auf bekannten Elementen der C-Sprache mit einigen Anleihen aus der Python-Sprache. Die Sprache ist recht prägnant, aber der Code ist leicht zu lesen und zu verstehen. Go-Code wird in eigenständige ausführbare Binärdateien kompiliert, die nativ ohne Verwendung einer virtuellen Maschine ausgeführt werden (Profilerstellung, Debugging-Module und andere Subsysteme zur Erkennung von Laufzeitproblemen sind als Laufzeitkomponenten integriert), was eine mit C-Programmen vergleichbare Leistung ermöglicht.

Das Projekt wird zunächst mit Blick auf Multithread-Programmierung und effizienten Betrieb auf Multi-Core-Systemen entwickelt, einschließlich der Bereitstellung von Mitteln auf Bedienerebene zur Organisation paralleler Berechnungen und Interaktion zwischen parallel ausgeführten Methoden. Die Sprache bietet außerdem einen integrierten Schutz vor überbelegten Speicherblöcken und bietet die Möglichkeit, einen Garbage Collector zu verwenden.

Wichtige neue Funktionen, die in Go 1.16 eingeführt wurden:

  • Das Embed-Paket wurde hinzugefügt, das Tools zum Einbetten beliebiger Dateien und Verzeichnisse in das Programm bereitstellt. Eine neue „//go:embed“-Direktive wird bereitgestellt, um Dateien anzugeben, die zur Kompilierungszeit eingebettet werden sollen. Wenn Sie beispielsweise „//go:embed test.txt“ im Codekommentar angeben und dann die Variable „var f embed.FS“ deklarieren, wird die test.txt-Datei eingebettet und Sie können über „ f“-Deskriptor. Auf ähnliche Weise können Sie Dateien mit Ressourcen oder einzelnen Werten eines bestimmten Typs einbetten, die für die Arbeit erforderlich sind. Um beispielsweise die Zeichenfolgenvariable „s“ aus der Datei version.txt zu erhalten, können Sie Folgendes angeben: import _ „embed.“ ” //go:embed version.txt var s string print(s)
  • Standardmäßig ist nun das neue Modulsystem mit integrierter Versionierungsunterstützung erforderlich, das das GOPATH-basierte Abhängigkeitsmanagement ersetzt. Die Umgebungsvariable GO111MODULE ist jetzt standardmäßig auf „on“ gesetzt und der Modulmodus wird unabhängig vom Vorhandensein einer go.mod-Datei im Arbeits- oder übergeordneten Verzeichnis verwendet. Im neuen Modus ändern Build-Befehle wie „go build“ und „go test“ den Inhalt von go.mod und go.sum nicht, und der Befehl „go install“ verarbeitet Versionsargumente („go install example.com/[E-Mail geschützt] "). Um das alte Verhalten wiederherzustellen, ändern Sie GO111MODULE auf „auto“. Festzuhalten ist, dass bereits 96 % der Entwickler auf das neue Modulsystem umgestiegen sind.
  • Der Linker wurde optimiert. Bei großen Projekten ist das Layout jetzt 20–25 % schneller und benötigt 5–15 % weniger Speicher.
  • Der Compiler hat Unterstützung für die Inline-Erweiterung von Funktionen mit abgekürzten Definitionen von „for“-Schleifen, Methodenwerten und „Typschalter“-Konstrukten hinzugefügt.
  • Unterstützung für Apple-Systeme hinzugefügt, die mit dem neuen Apple M1 ARM-Chip ausgestattet sind. Netbsd/arm64- und openbsd/mips64-Ports mit Unterstützung für NetBSD auf 64-Bit-ARM und OpenBSD auf MIPS64-Systemen hinzugefügt. Unterstützung für cgo und den Modus „-buildmode=pie“ zum Linux/riscv64-Port hinzugefügt.
  • Die Unterstützung für den x87-Kompilierungsmodus wurde eingestellt (GO386=387). Unterstützung für anweisungslose SSE2-Prozessoren ist jetzt über den Softwaremodus „GO386=softfloat“ verfügbar.

Darüber hinaus können wir den Beginn des Testens der Beta-Version der Dart 2.12-Sprache vermerken, in der der abgesicherte Modus „Null“ stabilisiert wurde, was dazu beitragen wird, Abstürze zu vermeiden, die durch Versuche verursacht werden, Variablen zu verwenden, deren Wert undefiniert und auf „Null“ gesetzt ist “. Der Modus impliziert, dass Variablen keine Nullwerte haben können, es sei denn, ihnen wird explizit der Wert Null zugewiesen. Der Modus respektiert strikt Variablentypen, wodurch der Compiler zusätzliche Optimierungen anwenden kann. Die Typkonformität wird zur Kompilierzeit überprüft. Wenn Sie beispielsweise versuchen, den Wert „Null“ einer Variablen mit einem Typ zuzuweisen, der keinen undefinierten Zustand impliziert, wie z. B. „int“, wird ein Fehler angezeigt.

Source: opennet.ru

Kommentar hinzufügen