Przejdź do wersji 1.15 języka programowania

Przesłane przez wydanie języka programowania Idź 1.15, 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.15:

  • Znacząco usprawniono pracę linkera, zarówno w zwiększaniu szybkości działania i zmniejszaniu zużycia pamięci, jak i w kierunku uproszczenia obsługi kodu. Testy na systemach operacyjnych korzystających z formatu pliku wykonywalnego ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris) wykazały, że typowy zestaw dużych aplikacji Go budowano o 20% szybciej, a zużycie pamięci zmniejszono średnio o 30%. Zwiększenie produktywności było możliwe dzięki przejściu na nowy format pliku obiektowego i przerobieniu wewnętrznych etapów w celu zwiększenia poziomu zrównoleglenia pracy. Natywny linker jest teraz domyślnie używany w systemach linux/amd64 i linux/arm64 w opcji „-buildmode=pie”, co nie wymaga już użycia linkera C.
  • W czasie wykonywania znacznie poprawiono dystrybucję małych obiektów w systemach z dużą liczbą rdzeni procesora i zmniejszono opóźnienia. W przypadku awarii zamiast adresu wyświetlane są wartości o typie numerycznym i string. Podczas wysyłania sygnałów SIGSEGV, SIGBUS i SIGFPE do aplikacji Go, w przypadku braku procedury obsługi os/signal.Notify, aplikacja zakończy działanie z wyjściem śledzenia stosu (poprzednio zachowanie było nieprzewidywalne).
  • Kompilator został zoptymalizowany pod kątem zmniejszenia rozmiaru generowanych plików wykonywalnych średnio o 5% poprzez zatrzymanie włączania niektórych metadanych do modułu zbierającego elementy bezużyteczne i bardziej agresywne czyszczenie nieużywanych metadanych.
  • Do kompilatora i asemblera dodano flagę „-spectre”, aby umożliwić ochronę przed atakami klasy Spectre (w przypadku większości programów nie jest to wymagane; włączenie opcji może być uzasadnione jedynie kilka bardzo konkretnych przypadków).
  • W certyfikatach X.509 pole CommonName zostało uznane za przestarzałe i nie jest już traktowane jako nazwa hosta, jeśli brakuje pola Alternatywne nazwy podmiotu.
  • Polecenie „go” w zmiennej środowiskowej GOPROXY może teraz wyświetlić listę wielu serwerów proxy, oddzielonych przecinkiem lub „|”. Jeśli pierwszy serwer proxy na liście zwróci błąd (404 lub 410), wówczas zostanie podjęta próba kontaktu przez drugi serwer proxy itp.
  • Narzędzie weterynarza dodało ostrzeżenie o próbie konwersji z ciągu znaków (x), jeśli „x” jest liczbą całkowitą inną niż runa lub bajt.
  • Do narzędzia objdump dodano flagę „-gnu”, aby wspierać dezasemblację składni asemblera GNU.
  • Dodano nowy pakiet czas/tzdata, co umożliwia zintegrowanie z programem bazy danych zawierających dane dotyczące stref czasowych.
  • Z tekstów źródłowych i dokumentacji REMOVED wyrażenia biała lista/czarna lista i master/slave, które są teraz zastąpione przez „lista dozwolonych”, „lista bloków”, „proces”, „pty”, „proc” i „kontrola”.
  • W bibliotece standardowej wprowadzono dużą część drobnych ulepszeń.
  • Dodano obsługę OpenBSD 6.7 w trybach GOARCH=arm i GOARCH=arm64 (poprzednio obsługiwane były tylko GOARCH=386 i GOARCH=amd64).
  • Kontynuowano rozwój 64-bitowej platformy RISC-V (GOOS=linux, GOARCH=riscv64).
  • W przypadku 32-bitowych systemów x86 następna wersja podniesie minimalne wymagania systemowe - nadal będą obsługiwane wyłącznie procesory z SSE2. Aby zbudować komputer w trybie GOARCH=386, będziesz potrzebować co najmniej Intel Pentium 4 (wydany w 2000 r.) lub AMD Opteron/Athlon 64 (wydany w 2003 r.).

Źródło: opennet.ru

Dodaj komentarz