Mayın 3-də GCC-nin doqquzuncu versiyasının ilk ictimai buraxılışı baş tutdu: GCC 9.1.
Səkkizinci ilə müqayisədə çoxlu əhəmiyyətli təkmilləşdirmələr və əlavələr ehtiva edir
versiya.
Ümumi dəyişikliklər
Seçimlər
- Ölçü qəbul edən əmrlər indi ölçüsü təyin etmək üçün 64-bit dəyərləri və şəkilçiləri dəstəkləyir;
- Əlavə edilmiş seçim -five-patching,dinamik, kodun dəyişdirilməsi üçün potensial dağıdıcı olan optimallaşdırmalara nəzarət etmək;
- Komanda qabığında avtomatik tamamlamağı dəstəkləmək üçün --tamamlama seçimi əlavə edildi;
- Kompilyator diaqnostikasına indi sətir nömrələri daxildir (-fno-diaqnostika-sətir nömrələrini göstərin) Və
məlumat növü (fno-diaqnostika-etiketləri göstər); - Əlavə edilmiş seçim -fdiagnostics-format=json diaqnostikanı JSON formatında çıxarmaq;
- Düzəltməni təyin etmək üçün seçimlər (-falign-funksiyalarıməsələn) indi bir neçə uyğunlaşdırma variantını qəbul edə bilər;
- Faylların siyahısını filtrləmək üçün əlavə seçimlər (-fprofile-filter-faylları, -fprofile-xasla-fayllar), profil tərtibatçı tərəfindən hazırlanmışdır;
- AddressSanitizer indi yığındakı dəyişənlərə etibarsız girişləri tutmaq üçün daha yığcam uyğunlaşdırmadan istifadə edir;
- Çoxsaylı çıxış təkmilləşdirmələri -fopt-info;
- Əlavə edilmiş seçim -fsave-optimallaşdırma-rekord optimallaşdırma hesabatını faylda saxlamaq;
- Əlavə edilmiş seçim -fipa-stack-alignment и -fipa-reference-ünvanlı.
Yeni daxili xüsusiyyətlər
Yeni atribut
Digər
Aşağıdakılarla əlaqəli çoxsaylı kod yaratmaq təkmilləşdirmələri:
- keçid konstruksiyalarının yaradılması;
- prosedurlararası optimallaşdırmalar;
- profilləşdirmə məlumatı əsasında optimallaşdırma;
- montaj mərhələsində optimallaşdırma (LTO);
Həmçinin gcov-un daxili formatı indi JSON və yeni seçimdir --istilik-rənglərdən istifadə edin kod xətlərinin nə qədər tez-tez istifadə edildiyinə görə rənglənməsini nəzərdə tutur.
Dillər
Keyfiyyət və icranın tamlığı OpenACC C, C++ və Fortran dilləri təkmilləşməyə davam edir.
C kimi dillər
- OpenMP 5.0 üçün qismən dəstək həyata keçirilib;
- Əlavə edilmiş xüsusiyyət __quraşdırılmış_konvertor;
- Əlavə xəbərdarlıq -Address-of-dolu-üzv;
- Bir sıra mövcud xəbərdarlıqların təkmilləşdirilməsi;
- Arqumentlərin yanlış sayını makroya ötürərkən xəta mətni indi makronun özünün elanını ehtiva edir;
- Yazı xətasına düzəliş təklifləri üçün təkmilləşdirmələr.
C
- -std=c2x (gələcək C standartı) üçün bir arqumentlə _Static_assert-i dəstəkləyin;
- Yeni xəbərdarlıq -Mütləq dəyər, abs() kimi funksiyalar üçün səhv arqument tipini tutur.
C + +
- Yeni xəbərdarlıqlar: -W köhnəlmiş-nüsxə,
-Winit-list-ömür boyu,
- Gərəksiz hərəkət,
-Wpessizing-hərəkət,
-Wclass-çevirmə; - Gələcək standartdan yeni funksiyaların tətbiqi istiqamətində işlər aparılır C++ 2a;
- Frontend indi bir sıra mənbə kodu elementləri haqqında daha dəqiq məlumatları saxlayır ki, bu da diaqnostikada daha ətraflı məlumatı göstərməyə imkan verir;
- Həddindən artıq yüklənmiş funksiyalar, ikili operatorlar, funksiya çağırışları və format sətirləri üçün təkmilləşdirilmiş diaqnostika;
- Bir sıra məşhur səhvlər üçün bəzi inkişaf mühitləri tərəfindən dəstəklənən avtomatik düzəlişlər əlavə edildi (çatışmayan mötərizələr, ad boşluqları, yazı xətləri və s.).
libstdc++
- C++ 17 tətbiqi artıq eksperimental deyil;
- Əlavə edilmiş paralel alqoritmlər, , , A artıq -lstdc++fs tələb etmir;
- C++2a üçün təkmilləşdirilmiş eksperimental dəstək ( , , std::bind_front və s.);
- Yollarında simvol olmayan simvollar olan Windows-da fayl axınlarının açılması üçün dəstək;
- İlkin dəstək Windows-da;
- Networking TS üçün ilkin dəstək.
D
D dili versiyası 2.076 GCC-ə daxil edilmişdir.
Fortran
- Asinxron I/O üçün tam dəstək;
- MINLOC və MAXLOC üçün BACK arqumenti tətbiq edildi;
- FINDLOC və IS_CONTIGOUS funksiyalarını həyata keçirdi;
- Kompleks ədədlərin komponentlərinə daxil olmaq üçün sintaksis həyata keçirilib: c%re və c%im;
- Həyata keçirilmiş sintaksis str%len və a%növ;
- Tətbiq edilmiş C deskriptorları və ISO_Fortran_binding.h başlığı;
- Arqumentlərdən biri NaN olduqda MAX və MIN funksiyalarının nəticəsi üçün yüngülləşdirilmiş tələblər;
- Əlavə edilmiş seçim -fdec-daxildir;
- Direktiv əlavə edildi QURULMUŞ.
libgccjit
- Əlavə edilmiş xüsusiyyət gcc_jit_context_add_driver_semption.
Digər
Bir çox arxitektura və ƏS-ə xas dəyişikliklər.
Mənbə: linux.org.ru