Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go modules: overview

Go modules: overview

Iskander (Alex) Sharipov

April 28, 2019
Tweet

More Decks by Iskander (Alex) Sharipov

Other Decks in Programming

Transcript

  1. Немного истории 6 2009 public announce 2012 release Go 1.0

    2015 vendor dep “official experiment” 2017
  2. Немного истории 7 2009 public announce 2012 release Go 1.0

    2015 vendor dep “official experiment” 2017 2018 vgo
  3. Немного истории 8 2009 public announce 2012 release Go 1.0

    2015 vendor dep “official experiment” 2017 2018 vgo NOW modules
  4. $ go get 14 P D 1.0 D 1.4 C

    1.8 go get C broken!
  5. $ go get 15 P D 1.0 D 1.4 D

    1.6 C 1.8 go get -u C
  6. $ go get 16 P D 1.0 D 1.4 D

    1.6 C 1.8 go get -u C broken!
  7. Модуль 19 l Модуль - это набор пакетов, которые версионируются

    вместе, как единое целое. Отношения между репозиториями, модулями и пакетами: › Репозиторий содержит один или несколько Go модулей. › Каждый модуль содержит один или несколько Go пакетов. › Каждый пакет содержит один или несколько Go файлов в одной директории.
  8. Russ Cox ▎Если старый и новый пакеты имеют одинаковый путь,

    новый пакет должен быть обратно совместим со старым
  9. Принципы 24 l Воспроизводимость сборки При повторении сборка должна давать

    одинаковый результат. l Проверяемость сборки Для повторения сборки должно быть достаточно информации.
  10. Принципы 25 l Воспроизводимость сборки При повторении сборка должна давать

    одинаковый результат. l Проверяемость сборки Для повторения сборки должно быть достаточно информации. l Проверенная сборка Использование ожидаемого исходного кода во время сборки.
  11. 27 go.mod module example.com/foo/bar go 1.12 require rsc.io/quote v1.5.2 replace

    rsc.io/quote => github.com/brr/mod v1.0.1 replace rsc.io/quote => ../path exclude "old/thing" v1.2.3
  12. Выводы 29 › Модули – часть языка Go (с версии

    1.12) › Простая миграция (dep, glide, govendor, godep) › Отказ от vendor в пользу GOPROXY › Нет привязки к $GOPATH
  13. Полезные ссылки 30 › Дизайн: https://research.swtch.com/vgo › Тур по версионированию:

    https://research.swtch.com/vgo-tour › Материалы: https://golang.org/wiki/vgo