Tags Posts tagged with "gnu compiler collection"

gnu compiler collection

przez -
5 2668
GNU - logo

Jakub Jelinek ogłosił dostępność GCC 5.1, zestawu kompilatorów do różnych języków programowania.

Zmiany, jakie zaszły:

  • Kompilator GCC C otrzymał domyślny standard GNU11 (C11), zamiast starego GNU89 (C89).
  • Pojawiło się sporo zmian międzyproceduralnych, jak: optymalizacja wirtualnych tabel, wykrywanie i optymalizacja zmiennych tylko do odczytu i wiele więcej
  • Zmniejszono zużycie pamięci i czas linkowania, podczas włączonej optymalizacji w czasie linkowania (LTO)
  • Dodano pełne wsparcie dla OpenMP 4.0, w językach C, C++ i Fortran. Zaimplementowano wstępną obsługę układów Intel Xeon Phi
  • GCC C i C++ otrzymały wsparcie dla współbieżnego interfejsu programowania Intel Cilk Plus
  • Dodano dwie procedury preprocesora: _has_include i _has_include_next, które to dodają pliki nagłówkowe plików, w momencie jeżeli są one dostępne w systemie
  • Pojawiło się sporo nowości z C++14
  • Biblioteka libstdc++ posiada pełne wsparcie dla C++11 i eksperymentalną obsługę C++14
  • Dodano pełne wsparcie dla języka Go 1.4.2
  • Dodano wstępne wsparcie dla kompilacji Just-In-Time (JIT), poprzez nową bibliotekę libgccjit
  • Udoskonalono generowanie kodu architektury AArch64 dla procesorów Cortex-A57 i A53. Dodano także wsparcie dla procesorów: ARM Cortex-A72, Cavium ThunderX i Applied Micro X-Gene 1
  • Dodano wsparcie dla instrukcji AVX-512, które będą dostępne w procesorach serwerowych Intel Skylake
  • Dodano wsparcie dla architektur MIPS Release 3, Release 5 i Release 6. Prócz tego pojawiła się obsługa procesorów Cavium Octeon 3 i Imagination P5600
  • System DragonFlyBSD wspiera w pełni GCC

przez -
4 810
GNU - logo

Jakub Jelinek ogłosił wydanie zestawu kompilatorów GCC 4.9.0. GCC początkowo rozwijany był jako kompilator języka C, obecnie jest zbiorem kompilatorów wielu języków, m.in. C, C++, Fortran, Ada, Objective-C pod różne procesory: x86, AVR, ARM, MIPS, PPC, SPARC. Z wersji na wersji dodawane jest wsparcie dla nowszych standardów języków, wsparcie dla nowszych technologii procesorów oraz ulepszane są algorytmy optymalizacji kodu.

Najważniejsze zmiany, jakie zaszły:

  • Local Register Allocator, wprowadzony w GCC 4.8.0, dla architektur x86 i amd64, jest od teraz używany także w AArch64, ARM, S/290 i ARC, oraz opcjonalnie na PowerPC i RX.
  • Udoskonalono dewirtualizację C++ i usunięto ograniczenia skalowalności w wewnętrznych procedurach optymalizacyjnych. Naprawiono błędy w LTO.
  • Dodano obsługę języka Google Go 1.2.1
  • Pojawiła się wstępna obsługę specyfikacji C++14
  • Dodano obsługę standardu OpenMP 4.0 dla C i C++, a także częściową implementację rozszerzenia Cilk Plus dla współbieżnych danych i zadań
  • Dodano obsługę instrukcji AVX-512. Ulepszono wsparcie dla procesorów Silvermont, a także dodano optymalizacje dla nadchodzących procesorów Broadwell
  • Udoskonalono optymalizację i wydajność dla procesorów Excavator (AMD Bulldozer 4 generacji)
  • Dodano wsparcie dla platformy little-endian powerpc64le-linux
  • Dodano kolorowanie składnia podczas debuggowania. Pojawiła się opcja -fdiagnostics-color=auto, której włączenie pozwoli na kolorowanie pojawiających się kodów w terminalu

przez -
8 667

Udostępnione zostały źródła finalnej wersji zestawu kompilatorów GCC 4.8. Poza lepszym wsparciem nowszych standardów języków i nowymi i ulepszonymi algorytmami GCC przeszło poważną zmianę natury technicznej – wymaga kompilatora C++. GCC początkowo rozwijany był jako kompilator języka C, obecnie jest zbiorem kompilatorów wielu języków, m.in. C, C++, Fortran, Ada, Objective-C pod różne procesory: x86, AVR, ARM, MIPS, PPC, SPARC. Z wersji na wersji dodawane jest wsparcie dla nowszych standardów języków, wsparcie dla nowszych technologii procesorów oraz ulepszane są algorytmy optymalizacji kodu.

GCC 4.8 używa teraz agresywniejszych metod optymalizacji kodu, co może spowodować niekompatybilność kodu pisanego pod stare metody optymalizacji, używające “niezdefiniowanych zachowań” (których C++ ma sporo, optymalizacje te można wyłączyć poprzez flagę -fno-aggressive-loop-optimizations), kompilator ostrzega w przypadku wystąpienia takiego konfliktu. Dla przyspieszenia kompilacji kodu w trybie debugowania dodano flagę -Og, która zapewnia wystarczające optymalizacje niespowalniające zbytnio czasu kompilacji.

Rodzina C otrzymała Clang-owy styl pokazywania błędów, zamiast standardowego numerku linii i kolumny, może tak jak Clang wyświetlić linię i podkreślić znakiem ^ miejsce, w którym zaczyna się błąd (-fno-diagnostics-show-caret wyłącza te komunikaty).

Kompilator C++ otrzymał kolejne wsparcia standardu C++11 oraz dostał wstępną nazwę roboczą dla kolejnego standardu języka: C++0y (-std=c++0y). Dodano słowo kluczowe thread_local, obsługę atrybutowania funkcji (np. [[noreturn]] void foo()) oraz dziedziczenie konstruktorów.

Poprawek i ulepszeń doczekała się również między innymi obsługa dynamicznie rozwijającej się architektury ARM. Poprawiono generowanie kodu dla operacji wektorowych. Ulepszono kompilator kodu dla popularnych platform Cortex-A7 i Cortex-A15, który lepiej używa instrukcji działań wektorowych i specyficznych dla danych modeli, co pozwoli lepiej wykorzystać potencjał tych procesorów.

Zmiany nie ominęły także rodziny IA-32 (x86-32)  i x86-64. Dodano nowe technologie Intela do zarządzania pamięcią (Intel RTM i HLE, zapewniające transakcyjną obsługę pamięci), dodano obsługę zestawów instrukcji FXSR, XSAVE, XSAVEOPT oraz wsparcie (profile kodu) dla procesorów AMD Steamroller i Jaguar.

Pojawiło się wykrywanie architektury i typu procesora w czasie uruchomienia, programista może teraz pisać kod pod różne procesory jednocześnie, przykładowo może napisać wiele implementacji jednej funkcji dla różnych procesorów, odpowiednia funkcja zostanie wybrana w czasie uruchomienia, co pozwoli wykorzystać w pełni możliwości konkretnych architektur bez utraty przenośności kodu i skompilowanej aplikacji.

przez -
4 456
GNU - logo

Richard Guenther ogłosił wydanie GCC 4.7.1 zestawu kompilatorów dla różnych języków programowania. Całość jest rozwijana w ramach projektu GNU i udostępniana na licencji GPL oraz LGPL. Najnowsza wersja zawiera ponad 100 naprawionych błędów i regresji. Zaktualizowano również dokumentację.

Polecane

Jesień Linuksowa

1 1150
Polska Grupa Użytkowników Linuksa ma zaszczyt zaprosić na konferencję Jesień Linuksowa 2017, która odbędzie się w dniach 22 – 24 września 2017 roku. Jako...