- PVSM.RU - https://www.pvsm.ru -
В эту пятницу состоялся релиз [1] Go 1.11. Ключевые вещи релиза — экспериментальная поддержка WebAssembly, а также новая концепция Модулей, которые призваны стать стандартом распространения кода.
Перед тем, как перейти к главным вещам релиза, стоит сказать несколько слов о не столь заметных пользователю изменениях. Как и в предыдущих релизах, в Go 1.11 была проведена работа по улучшению библиотек языка, тулчейна и рантайма (например, теперь нет ограчений на максимальный размер Хипа). Конечно же, выполнялись работы и по повышению производительности языка (больше всего — в math/big — длинной арифметике).
Теперь о WebAssembly. На самом деле, на Хабре уже есть несколько статей о том, как писать код для Wasm на Go. Так что, эта экспериментальная фича в релизе — вовсе не новость. Однако, думаю, всем понятно, что это очень важно. Ведь, если у компьюнити получится доработать тулчейн, а также Wasm до production-ready состояния, то мы сможем писать фронтовый код на приятном языке со статической строгой типизацией (привет, javascript!). Вот небольшой пример использования технологии —
К слову, уже начали появляться разные решения для улучшения жизни программистов для разработки под фронтенд. Например, https://github.com/dave/wasmgo [2] — компиляция Go в WASM, и deploy в CDN в одну команду.
Теперь перейдём к самому главному, на мой взгляд, в этом релизе — системе Модулей. Про эти модули разговоры уже начались довольно давно. Они были известны миру, как Vgo [3]. Модули даже уже обсуждались в рунете — https://habr.com/sandbox/115542/ [4], а также в рамках подкаста Devzen известным Гофером — Алексеем [5] — https://devzen.ru/episode-0180/ [6]. Хорошее введение в модули — https://roberto.selbach.ca/intro-to-go-modules/ [7].
Самое главное в этих модулях:
Важно понимать, что Новые модули — это тоже всё ещё эксперимент. Современные средства разработки ещё не совсем готовы к этому. Поэтому, возможно вам придётся и дальше жить с Dep [9]. Однако уже есть попытки завести Vgo на публичных CI — https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/ [10].
В GoLand новые модули уже существуют, как абстракция. Однако работает всё относительно сыро (например, если вы скачаете модуль, используя Vgo, но не делая go get, то код у вас не начнёт анализироваться):

Подведём итоги. Go 1.11 — отличный релиз. Тут ничего не сломалось (как и обычно) — и это очень здорово. Появились интересные фичи. Мы получили автоматически некоторый прирост производительности. В общем, всё так, как и должно быть в современном языке для индустриальной разработки. А изменения будут в грядущем Go 2, который сейчас активно обсуждается.
Автор: Денис
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/290480
Ссылки в тексте:
[1] состоялся релиз: https://blog.golang.org/go1.11
[2] https://github.com/dave/wasmgo: https://github.com/dave/wasmgo
[3] Vgo: https://github.com/golang/vgo
[4] https://habr.com/sandbox/115542/: https://habr.com/sandbox/115542/
[5] Алексеем: https://twitter.com/paaleksey
[6] https://devzen.ru/episode-0180/: https://devzen.ru/episode-0180/
[7] https://roberto.selbach.ca/intro-to-go-modules/: https://roberto.selbach.ca/intro-to-go-modules/
[8] Semver: https://semver.org/
[9] Dep: https://github.com/golang/dep
[10] https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/: https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/
[11] Источник: https://habr.com/post/421355/?utm_source=habrahabr&utm_medium=rss&utm_campaign=421355
Нажмите здесь для печати.