GCC 9.1


GCC 9.1

3 maja odbyła się pierwsza publiczna wersja dziewiątej wersji GCC: GCC 9.1.
Zawiera wiele istotnych ulepszeń i dodatków w porównaniu do ósmej
wersji.

Ogólne zmiany

Opcje
Nowe wbudowane funkcje
Nowy atrybut
Inne

Liczne ulepszenia generacji kodu związane z:

  • generowaniem konstrukcji switch;
  • optymalizacjami międzyproceduralnymi;
  • optymalizacją opartą na informacjach z profilowania;
  • optymalizacją na etapie budowy (LTO);

Również wewnętrzny format gcov teraz to JSON, a nowa opcja —use-hotness-colors włącza kolorowanie wierszy kodu w zależności od częstotliwości ich użycia.

Języki

Jakość i pełność implementacji OpenACC w językach C, C++ i Fortran są dalej ulepszane.

Języki podobne do C
  • Częściowe wsparcie dla OpenMP 5.0 zostało zaimplementowane;
  • Dodano funkcję __builtin_convertvector;
  • Dodano ostrzeżenie -Waddress-of-packed-member;
  • Ulepszenia w szeregu istniejących ostrzeżeń;
  • Tekst błędu przy przekazywaniu do makra niepoprawnej liczby argumentów teraz zawiera deklarację samego makra;
  • Ulepszenia w propozycjach dotyczących poprawy błędów ortograficznych.
C
  • Wsparcie dla _Static_assert z jednym argumentem dla -std=c2x (przyszły standard C);
  • Nowe ostrzeżenie -Wabsolute-value, które przechwytuje niepoprawny typ argumentu dla takich funkcji jak abs().
C++
  • Nowe ostrzeżenia: -Wdeprecated-copy,
    -Winit-list-lifetime,
    -Wredundant-move,
    -Wpessimizing-move,
    -Wclass-conversion;
  • Trwają prace nad wdrożeniem nowych możliwości z przyszłego standardu C++ 2a;
  • Frontend teraz zachowuje dokładniejsze informacje o szeregu elementów kodu źródłowego, co pozwala na wyświetlanie bardziej szczegółowych informacji w diagnostyce;
  • Udoskonalone diagnostyki dla przeciążonych funkcji, operatorów binarnych, wywołań funkcji i ciągów formatujących;
  • Dodane automatyczne poprawki wspierane przez niektóre środowiska programistyczne dla popularnych błędów (brakujące nawiasy, przestrzenie nazw, literówki itd.).
libstdc++
  • Implementacja C++17 nie jest już eksperymentalna;
  • Dodane równoległe algorytmy, , , a nie wymaga już -lstdc++fs;
  • Ulepszona eksperymentalna obsługa C++ 2a (, , std::bind_front itd.);
  • Wsparcie dla otwierania strumieni plików w Windows, których ścieżki zawierają znaki wychodzące poza zakres char;
  • Wstępne wsparcie w Windows;
  • Wstępne wsparcie Networking TS.
D

Język D w wersji 2.076 został włączony do GCC.

Fortran
  • Pełne wsparcie dla asynchronicznego wejścia/wyjścia;
  • Zrealizowano argument BACK dla MINLOC i MAXLOC;
  • Zrealizowano funkcje FINDLOC i IS_CONTIGUOUS;
  • Zrealizowano składnię dostępu do składników liczb zespolonych: c%re i c%im;
  • Zrealizowano składnię str%len i a%kind;
  • Zrealizowano deskryptory C i nagłówek ISO_Fortran_binding.h;
  • Złagodzone wymagania dotyczące wyników funkcji MAX i MIN, gdy jeden z argumentów jest NaN;
  • Dodano opcję -fdec-include;
  • Dodano dyrektywę BUILTIN.
libgccjit

Inne

Wiele zmian specyficznych dla architektury i systemu operacyjnego.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster