Przejdź do wersji 1.13 języka programowania

Przesłane przez wydanie języka programowania Idź 1.13, który jest rozwijany przez Google przy udziale społeczności jako rozwiązanie hybrydowe, które łączy w sobie wysoką wydajność języków kompilowanych z zaletami języków skryptowych, takimi jak łatwość pisania kodu, szybkość programowania, i ochrona przed błędami. Kod projektu dystrybuowane przez na licencji BSD.

Składnia Go jest oparta na znanych elementach języka C z pewnymi zapożyczeniami z języka Python. Język jest dość zwięzły, ale kod jest łatwy do odczytania i zrozumienia. Kod Go jest kompilowany do samodzielnych binarnych plików wykonywalnych, które działają natywnie bez użycia maszyny wirtualnej (profilowanie, debugowanie i inne podsystemy wykrywania problemów w czasie wykonywania są zintegrowane jako komponenty wykonawcze), co pozwala osiągnąć wydajność porównywalną z programami w języku C.

Projekt jest początkowo rozwijany z myślą o programowaniu wielowątkowym i wydajnej pracy w systemach wielordzeniowych, w tym o zapewnieniu środków zaimplementowanych na poziomie operatora do organizowania obliczeń równoległych i interakcji między równolegle wykonywanymi metodami. Język zapewnia również wbudowaną ochronę przed przekroczeniem przydzielonych bloków pamięci oraz zapewnia możliwość korzystania z Garbage Collectora.

Głównym innowacje, wprowadzony w wersji Go 1.13:

  • Pakiet crypto/tls ma domyślnie włączoną obsługę protokołów TLS 1.3. Dodano nowy pakiet „crypto/ed25519” z obsługą podpisów cyfrowych Ed25519;
  • Dodano obsługę nowych przedrostków literału numerycznego do definiowania liczb binarnych (np. 0b101), ósemkowych (0o377), urojonych (2.71828i) i szesnastkowych zmiennoprzecinkowych (0x1p-1021) oraz możliwość użycia znaku „_” do wizualnego oddzielania cyfr w dużych liczbach (1_000_000);
  • Usunięto ograniczenie stosowania w operacjach shift wyłącznie liczników bez znaku, co pozwala uniknąć niepotrzebnej konwersji na typ uint przed użyciem operatorów „‹‹” i „››”;
  • Dodano obsługę platformy Illumos (GOOS=illumos). Zapewniono kompatybilność z platformą Android 10. Zwiększono wymagania dla minimalnych wersji FreeBSD (11.2) i macOS (10.11 „El Capitan”).
  • Kontynuacja rozwoju nowego systemu modułowego, który może stanowić alternatywę dla GOPATH. W przeciwieństwie do wcześniej zapowiadanych planów w Go 1.13, system ten nie jest domyślnie włączony i wymaga aktywacji poprzez zmienną GO111MODULE=on lub wykorzystania kontekstu, w którym moduły są aplikowane automatycznie. Nowy system modułowy oferuje zintegrowaną obsługę wersjonowania, możliwości dostarczania pakietów i ulepszone zarządzanie zależnościami. Dzięki modułom programiści nie są już przywiązani do pracy w drzewie GOPATH, mogą jawnie definiować zależności wersjonowane i tworzyć powtarzalne kompilacje.

    W przeciwieństwie do poprzednich wydań, automatyczne zastosowanie nowego systemu działa teraz, gdy plik go.mod znajduje się w bieżącym katalogu roboczym lub katalogu nadrzędnym podczas uruchamiania komendy go, także wtedy, gdy znajduje się on w katalogu GOPATH/src. Dodano nowe zmienne środowiskowe: GOPRIVATE, które definiuje ścieżki modułów publicznie dostępnych oraz GOSUMDB, które określa parametry dostępu do bazy sum kontrolnych dla modułów niewymienionych w pliku go.sum;

  • Polecenie „go” domyślnie ładuje moduły i sprawdza ich integralność przy użyciu lustrzanej bazy modułów i bazy danych sum kontrolnych prowadzonej przez Google (proxy.golang.org, sum.golang.org i indeks.golang.org);
  • Zaprzestano obsługi wyłącznie pakietów binarnych, budowanie pakietu w trybie „//go:binary-only-package” powoduje teraz błąd;
  • Dodano obsługę przyrostka „@patch” do polecenia „go get”, wskazującego, że moduł powinien zostać zaktualizowany do najnowszej wersji konserwacyjnej, ale bez zmiany bieżącej wersji głównej lub pomocniczej;
  • Podczas pobierania modułów z systemów kontroli źródła polecenie „go” wykonuje teraz dodatkową kontrolę ciągu wersji, próbując dopasować numery pseudowersji do metadanych z repozytorium;
  • Dodano wsparcie kontrola błędów (opakowanie błędów) poprzez tworzenie opakowań, które umożliwiają użycie standardowych procedur obsługi błędów. Na przykład, błąd „e” można owinąć wokół błędu „w”, dostarczając metodę Odwijać się, zwracając „w”. W programie dostępne są zarówno błędy „e”, jak i „w”, a decyzje podejmowane są w oparciu o błąd „w”, przy czym „e” nadaje „w” dodatkowy kontekst lub inaczej go interpretuje;
  • Zoptymalizowano wydajność komponentów runtime (odnotowano wzrost prędkości nawet o 30%) i wprowadzono bardziej agresywny zwrot pamięci do systemu operacyjnego (wcześniej pamięć była zwracana po pięciu i więcej minutach, ale teraz natychmiast po zmniejszeniu rozmiaru sterty).

Źródło: opennet.ru

Dodaj komentarz