• IT-Karriere:
  • Services:

Programmiersprache: Go 1.14 erscheint mit stabilem Modulsystem

Die aktuelle Version 1.14 von Go löst Abhängigkeiten einfacher auf und erlaubt das störungsfreie Einbetten von Schnittstellen, deren Methoden sich überschneiden. Ebenso kann nun ein unsicheres Go definiert werden.

Artikel veröffentlicht am , Kristian Kißling/Linux Magazin
Die Taschenratte (engl. Gopher) ist das Maskottchen von Go.
Die Taschenratte (engl. Gopher) ist das Maskottchen von Go. (Bild: Don Owens, flickr.com/CC-BY 2.0)

Die Programmiersprache Go enthält in der nun verfügbaren Version 1.14 mit den Go Modules ein neues System zum Verwalten von Abhängigkeiten. Ein Modul besteht dabei aus mehreren Paketen, die in einem Verzeichnis liegen und die durch die Datei go.mod verwaltet werden. In dieser kann unter anderem der Pfad zum Modul und zu den darin enthaltenen Abhängigkeiten definiert werden. Diese Abhängigkeiten wiederum listet die Datei einzeln mit Pfadnamen und Versionsnummern (Semver) auf.

Stellenmarkt
  1. ARI-Armaturen Albert Richter GmbH & Co. KG, Schloß Holte-Stukenbrock
  2. Rodenstock GmbH, München

Der Kommandozeilenbefehl go kommt bereits seit Go 1.11 mit dem neuen Modulsystem zum Auflösen von Abhängigkeiten klar. Davor liefen Importe über GOPATH. Doch erst ab der aktuellen Version deklarieren die Entwickler das Modulsystem als hinreichend stabil für den breiten Einsatz. Die Go-Entwickler betrachten es damit als produktionsreif und rufen die Nutzer auf, ab Version 1.14 auf das neue System zu wechseln.

Ebenfalls neu ist die Möglichkeit, Interfaces auch dann einzubetten, wenn ihre Methoden mit denen von übergeordneten Interfaces überlappen. Das heißt, die eingebetteten Interface-Methoden dürfen dieselben Namen und identische Signaturen tragen. Explizit deklarierte Methoden eines Interfaces müssen allerdings weiterhin Unikate bleiben.

Gewollt unsicher

Eine neu eingeführte Umgebungsvariable heißt GOINSECURE. Sie lässt sich dem go-Befehl übergeben und signalisiert, dass Go kein HTTPS benötigt und auch keine Zertifkate validieren muss, wenn es bestimmt Module lädt. Eine durch Kommata unterteilte Liste mit Glob-Patterns bildet den Wert für GOINSECURE. Potenziell öffnet GOINSECURE allerdings Sicherheitslücken. Entwickler sollten also genau wissen, wann und wie sie die Variable einsetzen.

Auch in der Laufzeitumgebung gibt es mit Version 1.14 Änderungen. Der Einsatz des Keywords defer erzeugt so gut wie keinen Overhead mehr im Vergleich zum bisherigen Ansatz. Der bestand darin, die verzögerte Funktion direkt aufzurufen. Damit lässt sich defer laut den Release Notes auch in Performance-kritischen Code einbetten.

Goroutines lassen sich nun zudem asynchron unterbrechen. Dadurch erzeugen Schleifen ohne Funktionsaufrufe keine Deadlocks mehr oder verzögern die Garbage Collection. Unter Linux führen die gewollten Unterbrechungen (Preemption) aber unter Umständen dazu, dass Programme, die mit Go 1.14 laufen, beim Ausführen mehr Signale erhalten.

Verwenden Entwickler Pakete wie syscall oder golang.org/x/sys/unix, könnte deshalb die Fehlermeldung EINTR bei langsamen Syscalls häufiger auftauchen. Die Go-Macher schlagen Schleifen vor, um die Systemaufrufe wiederholt aufzurufen. Über weitere Änderungen an Go 1.14 informiert die Ankündigung.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Anzeige
Mobile-Angebote
  1. (u. a. Apple iPhone 11 Pro Max 256GB 6,5 Zoll Super Retina XDR OLED für 929,98€)
  2. 159,99€ (mit Rabattcode "POWERFRIDAY20" - Bestpreis!)
  3. 699€ (mit Rabattcode "POWERFRIDAY20" - Bestpreis!)

sicn 27. Feb 2020

Ich arbeite bei einer Firma die auch "Managed Hosting" (vornehmlich auf Basis von...


Folgen Sie uns
       


    •  /