
Kolekcja kompilatorów GNU to zestaw kompilatorów stworzonych przez projekt GNU. GCC jest wolnym oprogramowaniem i jest dystrybuowane przez Free Software Foundation na licencji GPL.
La ukazała się już nowa wersja GCC 14.1 a wśród ulepszeń i zmian, które najbardziej wyróżniają się, nowa wersja oferuje ulepszenia w analizie statycznejlub, oprócz ulepszeń bezpieczeństwa, ulepszenia optymalizacji wydajności, między innymi ulepszenia biblioteki wykonawczej libstdc++.
GCC 14.1 jest oznaczone jako pierwsze główne wydanie nowej gałęzi GCC 14.x i zgodnie ze schematem numeracji wersji, podczas programowania użyto wersji 14.0, a na krótko przed wydaniem GCC 14.1, gałąź GCC 15.0 została już podzielona, z której miała zostać utworzona kolejna główna wersja, GCC 15.1.
Co nowego w GCC 14.1?
W tej nowej wersji GCC 14.1 Poprawiono analizę statyczną dla języka C poprzez opcję „-fanalyzer”, polega na tym, że przy analizie operacji na łańcuchach została dodana wykrywanie nieskończonej pętli z "-Wanalyzer-nieskończona pętla» i dodano specjalne ostrzeżenia dotyczące problemów z walidacją danych wejściowych za pomocą «-Skażony Wanalyzerem-*«. Ostrzeżenie Poprawiono także opcję „-Wanalyzer-out-of-bounds” pozwalającą na wykrywanie przepełnień bufora, Dodatkowo poprzez opcję rozszerzono obsługę formatu SARIF -fdiagnostics-format=, co ułatwia generowanie szczegółowych raportów do bardziej zaawansowanych analiz statycznych.
Kolejną nową funkcją, którą wprowadza GCC 14.1 jest ulepszenia biblioteki wykonawczej libstdc++, ponieważ dodano obsługę takich funkcji jak std::stacktrace i std::format, a także dla zoptymalizowanych operacji wejścia/wyjścia poprzez std::print i std::println.
Ponadto zostały wprowadzone nowe możliwości obsługi inteligentnych wskaźników za pomocą std::out_ptr i std::inout_ptr, a także ulepszenia narzędzi konwersji, takich jak std::to_string i std::to_wstring, zapewniając programistom pełniejszy zestaw narzędzi do zarządzania danymi i operacji formatowania.
Dodano funkcje związane z C++23, w podobny sposób zaimplementowano także obsługę mechanizmu „Deducing this”, który pozwala na wykorzystanie w szablonach parametrów z atrybutem „this” oraz rozpoznaje kategorię wyrażenia, dla którego wywoływana jest funkcja klasy sposób, który konwertuje wszystkie funkcje wywołujące funkcje z atrybutem consteval na funkcje consteval
również Dodano funkcje związane z C++26, na przykład możliwe jest użycie literałów łańcuchowych w kontekście, w którym nie są one używane do inicjowania tablicy znaków i nie kończą się w wynikowym kodzie, dodano także możliwość używania wielu zmiennych zastępczych o nazwie „_” i niejawnych konwersji wyliczane wartości w obliczeniach arytmetycznych stały się przestarzałe.
z Inne zmiany i ulepszenia, które zostały wprowadzone w GCC 14.1:
- Nowe opcje, takie jak «–włącz ciasto hosta» skompilować pliki wykonywalne w trybie PIE i «–włącz-host-bind-teraz» aby uzyskać dodatkowe opcje linków.
- Dodano opcję «-finline-stringops» aby umożliwić rozbudowę online takich funkcji jak memcmp, memcpy, memmove i memset, nawet jeśli nie są one niezbędne do optymalizacji.
- Wprowadzono znaczące ulepszenia w obsłudze OpenMP, włączając takie opcje jak -fopenmp-alokatory i dyrektywy takie jak mapa domyślna i pośrednia.
- Dodano początkową obsługę podglądu specyfikacji OpenMP 6.0 i kontynuowano wdrażanie standardów OpenMP 5.0, 5.1 i 5.2.
- Ulepszona implementacja specyfikacji programowania równoległego OpenACC 2.7 i 3.2 w celu przeniesienia operacji na procesory graficzne i wyspecjalizowane procesory, takie jak NVIDIA PTX.
- Ulepszona obsługa libstdc++ dla standardów C++20, C++23 i C++26.
- Obsługa rozszerzeń GCC, która umożliwiała określenie elastycznego elementu tablicy nie na końcu struktury, jest przestarzała
- Rozszerzona obsługa backendu architektury AArch64 dla różnych procesorów i rozszerzeń, takich jak Arm SME i SME2.
- Dodano obsługę procesorów Cortex-M52 na zapleczu architektury ARM.
- Dodano obsługę procesorów AMD opartych na rdzeniu Zen 5 i innych architekturach Intel
- Ulepszenia obsługi LoongArch, AVR i RISC-V.
- Ulepszenia wyników diagnostycznych w formacie SARIF opartym na JSON dla wyników analizy statycznej i ostrzeżeń.
- W przypadku kodu C skompilowanego do standardów nowszych niż C89, niektóre konstrukcje wywodzące się z C99 generują teraz błędy zamiast ostrzeżeń, aby poprawić wykrywanie potencjalnych problemów.
Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w poniższy link.