Veröffentlichung der Programmiersprache Go 1.18

Vorgestellt wird die Veröffentlichung der Programmiersprache Go 1.18, 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.

Die neue Version unterstĂŒtzt generische Funktionen und Typen, sodass Entwickler Funktionen definieren und verwenden können, die fĂŒr die gleichzeitige Verwendung mehrerer Typen ausgelegt sind. DarĂŒber hinaus können mithilfe von Schnittstellen kombinierte Typen erstellt werden, die mehrere Datentypen abdecken. Die UnterstĂŒtzung fĂŒr generische Typen wird ohne BeeintrĂ€chtigung der AbwĂ€rtskompatibilitĂ€t mit vorhandenem Code implementiert. // Summieren festgelegter Werte, funktioniert fĂŒr die Typen int64 und float64 func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Eine weitere Option mit einer generischen Typdefinition: type Number interface { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

Weitere Verbesserungen:

  • Das Standard-Toolkit enthĂ€lt Dienstprogramme fĂŒr Fuzzing-Code-Tests. Beim Fuzzing-Test wird ein Stream aller möglichen zufĂ€lligen Kombinationen von Eingabedaten generiert und mögliche Fehler wĂ€hrend der Verarbeitung aufgezeichnet. FĂŒhrt eine Sequenz zu einem Absturz oder entspricht sie nicht der erwarteten Reaktion, deutet dies höchstwahrscheinlich auf einen Fehler oder eine Schwachstelle hin.
  • UnterstĂŒtzung fĂŒr Arbeitsbereiche mit mehreren Modulen hinzugefĂŒgt, die es Ihnen ermöglichen, Befehle auf mehreren Modulen gleichzeitig auszufĂŒhren, sodass Sie Code in mehreren Modulen gleichzeitig erstellen und ausfĂŒhren können.
  • FĂŒr Systeme mit Apple M1-, ARM64- und PowerPC64-Prozessoren wurden erhebliche Leistungsoptimierungen vorgenommen. Die Möglichkeit, Register anstelle des Stacks zu verwenden, um Argumente an Funktionen zu ĂŒbergeben und Ergebnisse zurĂŒckzugeben, wurde aktiviert. Das Inline-Auflösen von Schleifen durch den Compiler wurde verbessert. Die TypprĂŒfung im Compiler wurde komplett ĂŒberarbeitet. In einigen Tests stieg die Code-Leistung im Vergleich zur vorherigen Version um 20 %, die Kompilierung selbst dauerte jedoch etwa 15 % lĂ€nger.
  • Zur Laufzeit wurde die Effizienz der RĂŒckgabe freigegebenen Speichers an das Betriebssystem erhöht und die Funktionsweise des Garbage Collectors verbessert, sodass sein Verhalten vorhersehbarer ist.
  • Die Standardbibliothek wurde um neue Pakete fĂŒr net/netip und debug/buildinfo erweitert. Die UnterstĂŒtzung fĂŒr TLS 1.0 und 1.1 ist im Client-Code nun standardmĂ€ĂŸig deaktiviert. Das Modul crypto/x509 verarbeitet keine mit dem SHA-1-Hash signierten Zertifikate mehr.
  • Die Anforderungen an die Umwelt wurden erhöht LinuxJetzt benötigen Sie einen Kernel, damit er funktioniert. Linux mindestens Version 2.6.32. Ähnliche Änderungen werden fĂŒr FreeBSD in der nĂ€chsten Version erwartet (die UnterstĂŒtzung fĂŒr den FreeBSD 11.x-Zweig wird eingestellt) und erfordern mindestens FreeBSD 12.2 zum AusfĂŒhren.

Source: opennet.ru

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster