11. Feb. 2023·1 Min. Lesezeit

Go 1.20 bietet eine Vorschau für profilgesteuerte Optimierung und Sprachverbesserungen

Go 1.20, das neueste Update der von Google entwickelten Open-Source-Sprache, enthält eine Vorschau auf die profilgesteuerte Optimierung (PGO) und Verbesserungen der Sprache. PGO verbessert die Leistung durch Inlining-Optimierung um 3 bis 4 %, weitere Optimierungen sind in Vorbereitung.

Go 1.20 bietet eine Vorschau für profilgesteuerte Optimierung und Sprachverbesserungen

Go 1.20, die Produktionsversion der von Google entwickelten Open-Source-Sprache, die für ihre Einfachheit, Parallelität und funktionale Programmierung bekannt ist, wurde zusammen mit einer Vorschau auf die profilgesteuerte Optimierung (PGO) für den Compiler vorgestellt. Go 1.20 kann von der offiziellen go.dev-Website heruntergeladen werden.

Mit der Vorschau auf PGO in Go 1.20 kann die Compiler-Toolchain applikations- und arbeitslastspezifische Optimierungen in Abhängigkeit von Laufzeitprofilinformationen durchführen. Der aktuelle Compiler unterstützt pprof CPU-Profile, die mit den Paketen runtime/pprof oder net/http/pprof gesammelt werden können.

PGO, auch bekannt als feedback-directed optimization, beinhaltet die Rückführung von Profildaten aus repräsentativen Läufen der Anwendung in den Compiler für den nächsten Build der Anwendung. Anhand dieser Informationen kann der Compiler fundiertere Optimierungsentscheidungen treffen. Benchmarks für einen repräsentativen Satz von Go-Programmen zeigen, dass die Aktivierung der PGO-Inlining-Optimierung die Leistung um etwa 3 bis 4 % erhöht. Es wird erwartet, dass zukünftige Versionen weitere PGO-Optimierungen einführen werden.

Zusammen mit der Einführung von PGO bringt Go 1.20 auch vier Änderungen an der Sprache. Erstens: Die Fähigkeit, ein Slice in einen Array-Zeiger zu konvertieren, die 2021 mit Go 1.17 eingeführt wurde, erstreckt sich nun auch auf Konvertierungen von einem Slice in ein Array. Zweitens enthält das unsichere Paket drei neue Funktionen: SliceData, String und StringData. Diese Funktionen bieten die vollständige Fähigkeit, Slice- und String-Werte zu konstruieren und zu dekonstruieren, unabhängig von ihrer genauen Darstellung.

Drittens legt die Spezifikation nun fest, dass struct-Werte feldweise verglichen werden, wobei die Felder in der Reihenfolge berücksichtigt werden, in der sie in der struct-Typdefinition erscheinen, und bei der ersten Nichtübereinstimmung angehalten wird. Viertens können vergleichbare Typen wie gewöhnliche Schnittstellen vergleichbare Einschränkungen erfüllen, auch wenn die Typargumente nicht streng vergleichbar sind. Dies ermöglicht die Instanziierung eines Typparameters, der durch vergleichbare Constraints eingeschränkt ist, mit einem nicht streng vergleichbaren Typargument, wie einem Schnittstellentyp oder einem zusammengesetzten Typ, der einen Schnittstellentyp enthält.

Zusätzlich zu diesen Sprachänderungen bringt Go 1.20 verschiedene andere Verbesserungen mit sich, wie zum Beispiel die Unterstützung der Sammlung von Codeabdeckungsprofilen für Programme, einschließlich Anwendungen und Integrationstests. Das Verzeichnis $GOROOT/pkg enthält keine vorkompilierten Paketaktivitäten für die Standardbibliothek mehr, wodurch die Größe der Go-Distribution reduziert und eine Schieflage der C-Toolchain für cgo-Pakete vermieden wird. Darüber hinaus wurde die Implementierung von go test -json verstärkt, um die Robustheit zu erhöhen, während der Befehl go version -m nun eine größere Anzahl von Go-Binärdateien liest, einschließlich Windows-DLLs und Linux-Binärdateien ohne Ausführungserlaubnis.

Go 1.20 bringt auch experimentelle Unterstützung für FreeBSD auf RISC-V und deaktiviert cgo standardmäßig auf Systemen ohne C-Toolchain. Go 1.20 wird jedoch die letzte Version sein, die macOS 10.13 High Sierra und 10.14 Mojave unterstützt, während Go 1.21 macOS 10.15 Catalina oder neuer erfordert.

No-code Plattform wie AppMaster.io kann von der Einbindung neu optimierter Sprachen wie Go 1.20 stark profitieren. Durch die Integration solch leistungsstarker Tools für Web-, Mobil- und Backend-Anwendungen können Unternehmen erhebliche Verbesserungen bei Produktivität, Benutzerfreundlichkeit und Skalierbarkeit erzielen. Erfahren Sie mehr über no-code und low-code App-Entwicklung, um der Technologiekurve einen Schritt voraus zu sein.

Easy to start
Create something amazing

Experiment with AppMaster with free plan.
When you will be ready you can choose the proper subscription.

Get Started