Marcin Biegała

Marcin Biegała

Dev, motocyklista, marzyciel i miłośnik kawy.

Marcin Biegała

Kilka Minut Czytania

Parę dni temu otrzymaliśmy kolejną wersję golang. Tym razem 1.13.
Jak zwykle, dostaliśmy szereg raczej mniejszych poprawek, wszystko wg. ideologii małych kroków.
Ta wersja ma jednak długo oczekiwaną przeze mnie zmianę.
GOMODULES staje się domyślnym podejściem!

Golang logo

Wracając do początku. Oryginalnie golang opierał swoje działanie i narzędzia na strukturze katalogów i ich położeniu względem GOPATH, specjalnie określonej ścieżki na dysku.
Jest to kwestia subiektywna, ale strasznie mnie to irytowało, bo zawsze dzieliłem projekty raczej ze względu na klientów itp. raczej niż na technologię. Tu musiałem wszyskie projekty trzymać w jednym katalogu.
Ten wymóg był podyktowany nie tylko narzędziami do budowania, ale także organizacją zależności i bibliotek, która od samego początku w Go odstawałą od ‘dzisiejszych standardów’. Twórcy Go obserwowali narzędzia, które tworzyła społeczność i zbierając doświadczenia i opinie stworzyli coś własnego - go modules.
Nie tylko Go doczekało się wreszcie porządnego systemu do zarządzania zależnościami, ale też uwolniło się od GOPATH. Go modules radzie sobie z każdym miejscem na dysku, projekty mogą leżeć tam gdzie NAM się podoba.

Co to ma konkretnie wspólnego z wersją 1.13?
Otóż go modules działało już od jakiegoś czasu, ale w opcji ‘opt in’. Musieliśmy wyraźnie powiedzieć, że chcemy tego używać. Od wersji 1.13 Go domyślnie będzie używać go modules, nawet jeśli projekt jest wewnątrz gopath. Dla mnie to drobna, ale wyczekiwana zmiana!

Inne ciekawe punkty tej wersji to moim zdaniem:

  • możliwość ‘owijania’ (wrap) błędów, co pozwoli nam tworzyć bogatszy kontekst dla sytuacji wyjątkowych (mamy też nowe funkcje errors.Unwrap, errors.Is i errors.As)
  • paczka database/sql dostała dwa nowe typy: NullTime i NullInt32
  • wsparcie dla TLS 1.3

Więcej szczegółów możecie przeczytać oficjalnej dokumentacji

comments powered by Disqus

Ostatnie Posty

Kategorie

O Mnie

W życiu staram się rozwiązywać problemy ludzi z wykorzystaniem kodu, bądź też przez jego usuwanie ;)
Miałem przyjemność pracować w całym przekroju firm, od mikroskopijnych, przez startup’y, po wielkie banki inwestycyjne i współprowadzenie software house.