Go 1.11 gestartet - WebAssembly und native Module

Diesen Freitag wurde Go 1.11 veröffentlicht . Die wichtigsten Aspekte der Version sind die experimentelle Unterstützung für WebAssembly sowie ein neues Konzept für Module, die zum Standard für die Codeverteilung werden sollen.

Bevor wir zu den wichtigsten Dingen der Veröffentlichung übergehen, sollten Sie einige Worte zu den Änderungen sagen, die für den Benutzer nicht so auffällig sind. Wie in früheren Versionen wurde in Go 1.11 daran gearbeitet, die Sprach-, Toolchain- und Laufzeitbibliotheken zu verbessern (zum Beispiel gibt es jetzt keine Einschränkungen für die maximale Hüftgröße). Natürlich wurde daran gearbeitet, die Produktivität der Sprache zu steigern (vor allem - in Mathematik / Big- Long-Arithmetik).

Nun zu WebAssembly. Tatsächlich gibt es auf Habré bereits mehrere Artikel darüber, wie man Code für Wasm on Go schreibt. Diese experimentelle Funktion in der Veröffentlichung ist also überhaupt nicht neu. Ich denke jedoch, dass jeder versteht, dass dies sehr wichtig ist. Wenn es dem Computer gelingt, die Toolchain sowie Wasm in einen produktionsbereiten Zustand zu versetzen, können wir Front-End-Code in einer schönen Sprache mit statisch starker Typisierung (Hallo, Javascript!) Schreiben. Hier ist ein kleines Beispiel für den Einsatz von Technologie -


Übrigens scheinen bereits verschiedene Lösungen das Leben von Programmierern für die Front-End-Entwicklung zu verbessern. Beispiel: https://github.com/dave/wasmgo - Kompilieren Wechseln Sie zu WASM und stellen Sie es mit einem Befehl auf CDN bereit.

Kommen wir nun zu dem meiner Meinung nach wichtigsten Punkt in dieser Version - dem Modulsystem. Die Diskussion über diese Module hat bereits vor langer Zeit begonnen. Sie waren der Welt als Vgo bekannt . Module wurden sogar in RuNet - https://habr.com/sandbox/115542/ sowie im Rahmen des Devzen-Podcasts des berühmten Gopher - Alexey - https://devzen.ru/episode-0180/ diskutiert. Eine gute Einführung in Module ist https://roberto.selbach.ca/intro-to-go-modules/ .

Das Wichtigste in diesen Modulen:

  • Arbeit an Semver . Darüber hinaus können Sie mit dem Befehl go mod nur die maximale Patch-Version (dritte Versionsnummer) und jede maximale Minor-Version (zweite oder dritte Versionsnummer) aktualisieren. Bei der Hauptversion, die die Kompatibilität beeinträchtigt, werden Sie in keiner Weise automatisch aktualisiert - und das ist sehr wunderbar.
  • Der Prozess der Aufgabe des GOPATH- Konzepts hat begonnen . Go-Entwickler möchten 2019 von dieser Abstraktion wegkommen, daher funktionieren neue Module bereits jetzt nur außerhalb von GOPATH. Sie können jedoch die Umgebungsvariable GO111MODULE = on setzen , um diese Einschränkung aufzuheben .
  • Der Prozess des Verlassens von Vendoring hat begonnen. Bisher besteht in den neuen Modulen die Möglichkeit, die Abhängigkeiten in einem separaten Ordner abzulegen und von dort aus zu verwenden. In Zukunft wollen Go-Entwickler jedoch davon wegkommen. Ihrer Meinung nach sollten Abhängigkeiten immer aus dem Repository (z. B. Github) abgerufen werden, oder das Unternehmen sollte das Repository durch Zwischenspeichern des Quellcodes auf seiner Seite (z. B. mithilfe von Artifactory) vertreten.

Es ist wichtig zu verstehen, dass New Modules auch noch ein Experiment ist. Moderne Entwicklungswerkzeuge sind dafür nicht ganz bereit. Daher müssen Sie möglicherweise weiterhin mit Dep leben. Es gibt jedoch bereits Versuche, Vgo auf öffentliches CI zu bringen - https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/ .

In GoLand existieren bereits neue Module als Abstraktion. Es funktioniert jedoch alles relativ grob (wenn Sie beispielsweise das Modul mit Vgo herunterladen, aber ohne go get ausführen, wird Ihr Code nicht analysiert):

Bild

Zusammenfassend. Go 1.11 ist eine großartige Veröffentlichung. Nichts ist kaputt gegangen (wie immer) - und das ist sehr cool. Interessante Features sind erschienen. Wir haben automatisch einen Leistungsschub bekommen. Im Allgemeinen ist alles so, wie es in der modernen Sprache für die industrielle Entwicklung sein sollte. Und die Änderungen werden im kommenden Go 2 sein, das jetzt aktiv diskutiert wird.

Source: https://habr.com/ru/post/de421355/


All Articles