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.