Go-Programmiersprachenversion 1.15

Eingereicht von Veröffentlichung einer Programmiersprache Gehe 1.15, das von Google unter Beteiligung der Community als Hybridlösung entwickelt wird, die die hohe Leistung kompilierter Sprachen mit den Vorteilen von Skriptsprachen wie einfacher Code-Schreibbarkeit, Entwicklungsgeschwindigkeit und Fehlerschutz kombiniert. Projektnummer vertrieben von unter der BSD-Lizenz.

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 und andere Subsysteme zur Erkennung von Laufzeitproblemen sind als integriert). Laufzeitkomponenten), wodurch Sie eine mit C-Programmen vergleichbare Leistung erzielen können.

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.

Haupt- Innovationeneingeführt in der Go-Version 1.15:

  • Die Arbeit des Linkers wurde erheblich verbessert, sowohl hinsichtlich der Erhöhung der Betriebsgeschwindigkeit und der Reduzierung des Speicherverbrauchs als auch hinsichtlich der Vereinfachung der Codewartung. Beim Testen auf Betriebssystemen, die das ausführbare ELF-Dateiformat verwenden (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), wurde ein typischer Satz großer Go-Anwendungen 20 % schneller erstellt und der Speicherverbrauch wurde um durchschnittlich 30 % reduziert. Eine höhere Produktivität wurde durch die Umstellung auf ein neues Objektdateiformat und die Überarbeitung interner Phasen ermöglicht, um den Grad der Parallelisierung der Arbeit zu erhöhen. Der native Linker wird jetzt standardmäßig auf Linux/AMD64- und Linux/Arm64-Systemen in „-buildmode=pie“ verwendet, was die Verwendung eines C-Linkers nicht mehr erfordert.
  • Zur Laufzeit wurde die Verteilung kleiner Objekte auf Systemen mit vielen CPU-Kernen deutlich verbessert und die Latenz reduziert. Bei Fehlern werden anstelle der Adresse Werte mit numerischen und Zeichenfolgentypen angezeigt. Wenn Sie SIGSEGV-, SIGBUS- und SIGFPE-Signale an eine Go-Anwendung senden und kein os/signal.Notify-Handler vorhanden ist, wird die Anwendung mit einer Stack-Trace-Ausgabe beendet (zuvor war das Verhalten unvorhersehbar).
  • Der Compiler wurde optimiert, um die Größe der generierten ausführbaren Dateien um durchschnittlich 5 % zu reduzieren, indem die Einbeziehung einiger Metadaten für den Garbage Collector gestoppt und ungenutzte Metadaten aggressiver bereinigt werden.
  • Das Flag „-spectre“ wurde dem Compiler und Assembler hinzugefügt, um den Schutz vor Angriffen der Spectre-Klasse zu ermöglichen (für die meisten Programme ist dies nicht erforderlich; die Aktivierung der Option kann nur gerechtfertigt sein). einige sehr spezifische Fälle).
  • In X.509-Zertifikaten ist das Feld „CommonName“ veraltet, das nicht mehr als Hostname behandelt wird, wenn das Feld „Subject Alternative Names“ fehlt.
  • Der Befehl „go“ in der Umgebungsvariablen GOPROXY kann jetzt mehrere Proxys auflisten, getrennt durch ein Komma oder „|“. Wenn der erste Proxy in der Liste einen Fehler (404 oder 410) zurückgibt, wird versucht, über den zweiten Proxy Kontakt aufzunehmen usw.
  • Das Veterinärdienstprogramm hat eine Warnung vor dem Versuch einer Konvertierung aus string(x) hinzugefügt, wenn „x“ ein ganzzahliger Typ außer Rune oder Byte ist.
  • Das Flag „-gnu“ wurde zum Dienstprogramm objdump hinzugefügt, um die Disassemblierung der GNU-Assembler-Syntax zu unterstützen.
  • Neues Paket hinzugefügt Zeit/Zeitdaten, wodurch Sie eine Datenbank mit Zeitzonendaten in das Programm integrieren können.
  • Aus Quelltexten und Dokumentation ENTFERNT die Begriffe Whitelist/Blacklist und Master/Slave, die nun durch „allowlist“, „blocklist“, „process“, „pty“, „proc“ und „control“ ersetzt werden.
  • An der Standardbibliothek wurden zahlreiche kleinere Verbesserungen vorgenommen.
  • Unterstützung für OpenBSD 6.7 in den Modi GOARCH=arm und GOARCH=arm64 hinzugefügt (zuvor wurden nur GOARCH=386 und GOARCH=amd64 unterstützt).
  • Die Entwicklung der 64-Bit-RISC-V-Plattform (GOOS=linux, GOARCH=riscv64) wurde fortgesetzt.
  • Für 32-Bit-x86-Systeme werden mit dem nächsten Release die Mindestsystemanforderungen erhöht – es werden weiterhin nur Prozessoren mit SSE2 unterstützt. Um im GOARCH=386-Modus zu bauen, benötigen Sie mindestens einen Intel Pentium 4 (veröffentlicht im Jahr 2000) oder einen AMD Opteron/Athlon 64 (veröffentlicht im Jahr 2003).

Source: opennet.ru

Kommentar hinzufügen