Go 1.15 verbessert Linker und integriert Zeitzonen-Datenbank

Go 1.15 überspringt ausgefallene Proxies, verbessert den Linker “substanziell”, bringt ein “time/tzdata”-Paket mit und warnt vor bestimmten Formen falsch eingeschätzter Strings.

In der Umgebungsvariablen GOPROXY lassen sich URLs für mehrere Proxys ablegen. Die trennt der Entwickler entweder mit einer Pipe oder mit Kommata. Nur im zweiten Fall verwendet Go den nächsten Proxy wenn der vorherige nicht funktioniert und zum Beispiel die Fehlermeldungen 404 und 410 zurückgibt.

Der Linker von Go soll in Version 1.15 wesentlich effizienter arbeiten. Er ist nicht nur schneller, sondern verbraucht dabei auch weniger Ressourcen. Zugleich ist der verwendete Code robuster. Auch konkrete Zahlen nennt die Ankündigung: Für ein “repräsentatives Set” großer Go-Anwendungen klappt das Linken 20 Prozent schneller als zuvor und braucht durchschnittlich 30 Prozent weniger Ressourcen. Das gilt zumindest für ELF-basierte Betriebssysteme auf AMD64-Architekturen. Bei anderen Kombinationen fallen die Änderungen moderater aus.

Zeitzonen und Vet Tool

Der Name des neu integrierten Pakets “timezone/tzdata” dürfte einigen Entwicklern bekannt vorkommen. Es erlaubt den Umgang mit Zeitzonen und kommt auch in einigen anderen Kontexten vor. Im Go-Kontext erlaubt es das Paket, Zeitzonen-Informationen in ein Go-Programm zu integrieren. Das hilft zum Beispiel auf Systemen, die keine lokale Zeitzonen-Datenbank mitbringen. Ein Programm wächst dadurch um 800 KByte.

Golangs Vet Tool durchforstet den Code nach verdächtigen Konstrukten und meldet diese. Verwendet ein Entwickler etwa einen “printf()”-Aufruf mit dem falschen Format-String bemerkt Vet das. Seit Go 1.15 weist Vet auch auf Fälle hin, in denen der Integer-Typ von “string(x)” weder “rune” noch “byte” ist. Hintergrund ist, dass viele Konversionen dieser Form davon ausgehen, dass “string(x)” zu einer String-Repräsentation der Integer “x” führt. Tatsächlich erzeugt das Konstrukt einen String, der das UTF-8-Encoding des Wertes “x” repräsentiert. Ein Beispiel nennen die Release Notes auch: “string(9786)” wird nicht zu einem String mit dem Wert “9786”, sondern zu einem String “\xe2\x98\xba” oder zu “☺”. Die ausführlichen Release Notes gehen weiter ins Detail und stellen noch mehr Neuerungen von Go 1.15 vor.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben