Programmiersprache: Go 1.13 ist da und setzt standardmäßig auf TLS 1.3
Die neue Version von Googles Programmiersprache Go setzt standardmäßig auf TLS 1.3 und bringt Änderungen im Umgang mit Zahlenliteralen.
![Programmiersprache: Go 1.13 ist da](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/7/4/2/8/2/6/go-ca51e0641cc1eaf5-41b8fb6f97f1ecc6.jpeg)
- Björn Bohn
Google hat Version 1.13 der Programmiersprache Go veröffentlicht. Damit erscheint sie rund sechs Monate nach der vorherigen Version Go 1.12, jedoch rund einen Monat später als ursprünglich angedacht. Das neue Release bringt eine Fülle an Änderungen mit sich, die jedoch wie bei Go üblich mit bisherigen Versionen kompatibel sein sollen. Neu ist unter anderem eine weitreichende Überarbeitung der Zahlenliterale sowie die standardmäßige Aktivierung von TLS (Transport Layer Security) 1.3. Außerdem soll sich wohl der Support für Go Modules verbessert haben und der go
-Befehl lädt Module automatisch herunter und verifiziert sie gegen den Go Module Mirror sowie die Go-Checksum-Datenbank.
Modernisierung der Zahlenliterale
Wie als Teil des Number Literal Proposals beschlossen, hat das Go-Team die Präfixe für Zahlenliterale weitgehend überarbeitet. Die Präfixe 0b und 0B kennzeichnen nun binäre Integerliterale, 0o oder 0O einen oktalen Integer. Für Fließkommazahlen im Hexadezimalsystem kommt 0x oder 0X zum Einsatz, beispielsweise 0x1.0p-1021. Der imaginäre Suffix i kann nun mit allen Integern oder Fließkommazahlen verwendet werden, und die Zeichen einer Zahl können mit einem Unterstrich separiert werden, etwa 1_000_000.
Gemäß einem neuen Vorschlag für Shift Counts entfällt die Einschränkung, dass ein Shift Count nicht vorzeichenbehaftet sein muss. Diese Änderung erübrigt wohl viele künstliche uint
Conversions, die ausschließlich eingeführt wurden, um die Einschränkung der << und >> Operatoren zu erfüllen. Diese Sprachänderungen wurden durch Änderungen am Compiler und entsprechende interne Änderungen an den Bibliothekspaketen go/scanner und text/scanner (Zahlenliterale) sowie go/types (signed shift counts) umgesetzt.
TLS 1.3 als neuer Standard, besserer Support für Go Modules
Wie bereits in der vorherigen Version angekündigt, setzt Go nun standardmäßig auf TLS 1.3 im crypto/tls-Paket. Wer auf den Sicherheitsstandard verzichten möchte, kann sie mit der Werteingabe tls13=0
in der GODEBUG-Umgebungsvariable ausschalten. Diese Möglichkeit wird aber mit Go 1.14 endgültig wegfallen.
Auf Seiten der Go Modules liefert die neue Go-Version eine Reihe an Änderungen. Beim Extrahieren eines Moduls aus einem Versionskontrollsystem führt der go
-Befehl nun eine zusätzliche Validierung des angeforderten Versionsstrings durch. Die neue Umgebungsvariable GOPRIVATE zeigt Modulpfade an, die nicht öffentlich zugänglich sind. Er dient als Standardwert für die untergeordneten Variablen GONOPROXY und GONOSUMDB, die eine feinere Kontrolle darüber ermöglichen, welche Module über einen Proxy abgerufen und über die Checksum-Datenbank verifiziert werden.
Im Module-Aware-Modus aktualisiert go get
mit dem Flag -u
jetzt einen kleineren Satz von Modulen, der konsistenter ist mit dem Satz von Paketen, der durch go get -u
im GOPATH-Modus aktualisiert wird. go get -u
updatet weiterhin die Module und Pakete, die auf der Befehlszeile benannt sind, aktualisiert aber zusätzlich nur die Module, die die von den benannten Paketen importierten Pakete enthalten, und nicht die transitiven Modulanforderungen der Module, die die benannten Pakete enthalten.
Eine vollständige Liste der Änderungen findet sich im Blogbeitrag zum neuen Release. Die Programmiersprache findet sich ebenfalls auf GitHub.
Siehe dazu auf heise Developer:
(bbo)