W pogoni za LLVM? Kompilator GCC 5.2 z lepszym wsparciem dla C++11 i większą modularyzacją

W pogoni za LLVM? Kompilator GCC 5.2 z lepszym wsparciem dla C++11 i większą modularyzacją

W pogoni za LLVM? Kompilator GCC 5.2 z lepszym wsparciem dla C++11 i większą modularyzacją
Piotr Maciejko
17.07.2015 20:43

Społeczność skupiona wokół GCC ogłosiła wczoraj wydanie kolejnej stabilnej wersji kompilatora z serii GCC 5. Mowa oczywiście o GCC 5.2, które wprowadza wiele nowości oraz poprawia sporą liczbę błędów względem poprzedniego wydania. Zespół odpowiedzialny za rozwój GCC zapowiedział również wydanie GCC 6, która odbędzie się prawdopodobnie w przyszłym roku. Podczas tworzenia następnej serii kompilatora, programiści postanowili skupić się jeszcze bardziej na modularyzacji jego struktury. Krok ten umożliwi w dłuższej perspektywie konkurowanie z rozwiązaniami oferowanymi przez LLVM, które są coraz częściej wybierane przez profesjonalistów.

GCC 5.2 to drugie stabilne wydanie kompilatora z serii GCC 5, które poprawia 81 błędów względem poprzedniej wersji. Na tym jednak nowości się nie kończą – bardzo istotne zmiany zaszły w obszarze ABI. Biblioteka uruchomieniowa C++ (libstdc++) będzie domyślnie wykorzystywać kompletnie przebudowany zestaw zasad dotyczących współpracy pomiędzy aplikacją w formie binarnej i systemem operacyjnym, który otrzymał nazwę Dual ABI i został dostarczony wraz z wydaniem GCC 5.1. Zmiana była konieczna z uwagi na rozszerzenie wsparcia dla standardu C11, który zakazuje stosowania mechanizmu zwanego copy-on-write w przypadku łańcuchów znaków i wymaga list do śledzenia ich długości. Twórcy GCC zdecydowali się również zmienić domyślny parametr z jakim kompilowany jest kod – zamiast -std=gnu89 używany jest -std=gnu11. Decyzja motywowana była bardzo dobrym wsparciem dla standardu C11 oferowanym przez kompilator.

Obraz

Zestaw narzędzi do optymalizacji pętli – Graphite – nie będzie już dłużej wymagał biblioteki ClooG, aczkolwiek na liście zależności wciąż pozostaje ISL, które musi być dostarczone co najmniej w wersji 0.12.2 (zalecana 0.14). Zespół rozwijający GCC postanowił również zrobić porządek w obszarze niestandardowych mechanizmów C0x – porzucone zostały trzy instrukcje has_trivial_default_constructor, has_trivial_copy_constructor i has_trivial_copy_assign. Zgodnie ze standardem C11 należy używać ich zamienników w postaci is_trivially_default_constructible, is_trivially_copy_constructible oraz is_trivially_copy_assignable.

GCC 5.2 oferuje także wsparcie dla nowych urządzeń w postaci ATtiny 4/5/9/10/20/40. Do ich obsługi wymagane są narzędzia zawarte w pakiecie binutils w wersji 2.25 lub wyższej. W przypadku portu AVR zmianom uległ system opisu wspieranych urządzeń. Od tej pory dla każdego z nich dostarczany będzie oddzielny plik SPEC. Do zapewnienia kompatybilności pomiędzy GCC i AVR-LibC niezbędnym jest wykorzystanie zarówno najnowszej wersji kompilatora, jak i biblioteki.

Zmiany poczynione w nowym wydaniu GCC wydają się być pogonią za rozwiązaniami oferowanymi przez LLVM, które są coraz chętniej wykorzystywane przez duże firmy. W ostatnim czasie LLVM stało się integralnym komponentem programistycznych narzędzi dostarczanych przez Apple dla systemów OS X i iOS. Na zmianę zdecydowało się również Sony, które w ramach swojego SDK dla konsoli Play Station 4 dostarcza kompilator Clang. Czyżby rozwiązania oferowane przez GCC przestawały być dla profesjonalistów atrakcyjne?

Programy

Zobacz więcej
Źródło artykułu:www.dobreprogramy.pl
Oceń jakość naszego artykułuTwoja opinia pozwala nam tworzyć lepsze treści.
Wybrane dla Ciebie
Komentarze (16)