01 wrz 2022·1 min czytania

Opublikowano Go 1.19: Ulepszona generyczność, refinicje i nowy model pamięci

Go 1.19, najnowsza wersja języka programowania Go firmy Google, jest już w produkcji. Ta aktualizacja prezentuje udoskonalone generyczne, nowy model pamięci i poprawę wydajności kodu generycznego, który jest nawet o 20% szybszy. Dodatkowo, aktualizacja zawiera ulepszenia w garbage collectorze, stosach coroutine i nie tylko.

Opublikowano Go 1.19: Ulepszona generyczność, refinicje i nowy model pamięci

Język programowania Go (Golang) firmy Google wydał swoją najnowszą wersję, Go 1.19, poprawiając obsługę generycznych, wprowadzając ulepszony model pamięci i oferując wiele innych funkcji. Aktualizacja skupia się na dopracowaniu ostatnio dodanych generycznych, które po raz pierwszy zostały wprowadzone w Go 1.18, i optymalizacji wydajności kodu generycznego nawet o 20 procent.

Ulepszenia w Go 1.19

Wraz z wydaniem Go 1.19 2 sierpnia, rozwój wsparcia dla generycznych koncentruje się na rozwiązywaniu subtelnych problemów i narożnych przypadków zgłoszonych przez społeczność, wraz z poprawą wydajności. Wprowadzenie generycznych do języka było długo oczekiwaną funkcją dodaną do Go 1.18, który został wydany w marcu.

Model pamięci Go został zaktualizowany, aby wyraźnie zdefiniować zachowanie pakietu sync/atomic, dostarczającego niskopoziomowe prymitywy pamięci atomowej do implementacji algorytmów synchronizacji. Formalna definicja relacji happens-before została zmieniona, aby dostosować ją do modeli pamięci używanych przez C, C++, Java, JavaScript, Rust i Swift. Ta aktualizacja nie ma wpływu na istniejące programy.

Jako część aktualizacji modelu pamięci, w pakiecie sync/atomic wprowadzono nowe typy, w tym atomic.int64 i atomic.Pointer(T), dzięki czemu wygodniej jest używać wartości atomowych. Go 1.19 jest już dostępne do pobrania z go.dev dla systemów Windows, macOS i Linux.

Dodatkowe funkcje w Go 1.19

Oprócz ulepszeń generycznych i nowego modelu pamięci, Go 1.19 wprowadziło inne funkcje:

  • Miękki limit pamięci dodany do garbage collectora, który pomaga optymalizować programy Go działające w kontenerach z dedykowanymi alokacjami pamięci.
  • Poprawki wydajności i implementacji, takie jak dynamiczny rozmiar stosów korutyn, aby zredukować kopiowanie stosu, automatyczne użycie dodatkowych deskryptorów plików w większości systemów uniksowych, tablice skoków dla dużych instrukcji switch na x86-64 i ARM64 oraz wsparcie dla wywołań funkcji wstrzykiwanych przez debugger na ARM64.
  • Wprowadzono drobną poprawkę dotyczącą parametrów typu w deklaracjach metod bez wpływu na istniejące programy.
  • Komentarze do dokumentów obsługują teraz odnośniki, listy i składnię nagłówków, dzięki czemu kompozycja komentarzy do dokumentów jest bardziej przejrzysta, szczególnie w przypadku pakietów z rozbudowanymi API.
  • Dla celów bezpieczeństwa, pakiet os/exec nie pozwala już na względne ścieżki w wyszukiwaniu PATH.
  • Wprowadzono nowe ograniczenie budowy, unix, które jest spełnione, gdy docelowy system operacyjny działa na dowolnym systemie uniksopodobnym.

Wraz ze wzrostem popularności platform no-code i low-code, takich jak AppMaster, programiści muszą być na bieżąco z najnowszymi osiągnięciami w popularnych językach programowania, takich jak Go. Integracja Go z AppMaster może przyspieszyć rozwój aplikacji backendowych, oferując większą skalowalność i opłacalność. Go 1.19 wprowadza istotne ulepszenia zwiększające wydajność, bezpieczeństwo i doświadczenie programistów, umacniając jego pozycję jako istotnego narzędzia do tworzenia nowoczesnego oprogramowania.

Easy to start
Create something amazing

Experiment with AppMaster with free plan.
When you will be ready you can choose the proper subscription.

Get Started