3-may kuni GCCning to'qqizinchi versiyasining birinchi ommaviy nashri bo'lib o'tdi: GCC 9.1.
Sakkizinchi bilan solishtirganda juda ko'p muhim yaxshilanishlar va qo'shimchalarni o'z ichiga oladi
versiya.
Umumiy o'zgarishlar
Tanlovlar
- Hajmni qabul qiladigan buyruqlar endi 64 bitli qiymatlarni va o'lchamni belgilash uchun qo'shimchalarni qo'llab-quvvatlaydi;
- Qo'shilgan variant - chivinli yamoq,dinamik, kodni almashtirish uchun potentsial halokatli optimallashtirishlarni nazorat qilish;
- Buyruqlar qobig'ida avtomatik to'ldirishni qo'llab-quvvatlash uchun --to'ldirish opsiyasi qo'shildi;
- Endi kompilyator diagnostikasi qator raqamlarini o'z ichiga oladi (-fno-diagnostika-ko'rsatish-liniya raqamlari) va
ma'lumot turi (fno-diagnostika-yorliqlarni ko'rsatish); - Qo'shilgan variant -fdiagnostics-format=json diagnostikani JSON formatida chiqarish;
- Hizalashni belgilash variantlari (-falign-funktsiyalari, masalan) endi bir nechta tekislash variantlarini qabul qilishi mumkin;
- Fayllar ro'yxatini filtrlash uchun qo'shilgan variantlar (-fprofile-filtr-fayllar, -fprofile-exclude-fayllar), ular profil yaratuvchi tomonidan amalga oshiriladi;
- AddressSanitizer endi stekdagi o'zgaruvchilarga noto'g'ri kirishlarni qo'lga olish uchun yanada ixcham tekislashdan foydalanadi;
- Ko'p sonli chiqish yaxshilanishi -fopt-info;
- Qo'shilgan variant -fsave-optimalizatsiya-rekord optimallashtirish hisobotini faylga saqlash uchun;
- Qo'shilgan variant -fipa-stekni tekislash ΠΈ -fipa-reference-manzilli.
Yangi o'rnatilgan xususiyatlar
- __ehtimollik bilan_qurilgan_kutish;
- __builtin_has_atributi;
- __qurilgan_spekulyatsiya_xavfsiz_qiymati.
Yangi atribut
boshqa
Quyidagilar bilan bog'liq ko'plab kod ishlab chiqarish yaxshilanishlari:
- kommutator konstruksiyalarini yaratish;
- protseduralararo optimallashtirish;
- profil ma'lumotlariga asoslangan optimallashtirish;
- yig'ish bosqichida optimallashtirish (LTO);
Shuningdek, gcovning ichki formati endi JSON va yangi variant --issiqlik-ranglardan foydalanish kod satrlarini qanchalik tez-tez ishlatilishiga qarab rang berishni o'z ichiga oladi.
Tillar
Amalga oshirishning sifati va to'liqligi OpenACC C, C++ va Fortran tillari takomillashishda davom etmoqda.
C-ga o'xshash tillar
- OpenMP 5.0 uchun qisman qo'llab-quvvatlash amalga oshirildi;
- Qo'shilgan funksiya __o'rnatilgan_konvertor;
- Qo'shilgan ogohlantirish -To'plangan a'zoning manzili;
- Bir qator mavjud ogohlantirishlarni yaxshilash;
- Makrosga noto'g'ri argumentlar sonini o'tkazishda xato matni endi makroning o'zi deklaratsiyasini o'z ichiga oladi;
- Xatolarni tuzatish boΚ»yicha takliflar yaxshilandi.
C
- -std=c2x (kelajakdagi C standarti) uchun bitta argument bilan _Static_assertni qo'llab-quvvatlang;
- Yangi ogohlantirish - Mutlaq qiymat, bu abs() kabi funktsiyalar uchun noto'g'ri argument turini ushlaydi.
C ++
- Yangi ogohlantirishlar: -W eskirgan-nusxasi,
-Winit-list-hayoti,
- Keraksiz harakat,
-Wpessimizing-harakat,
-Wclass-konvertatsiya; - Kelajakdagi standartdan yangi xususiyatlarni joriy etish bo'yicha ishlar olib borilmoqda C++ 2a;
- Frontend endi bir qator manba kodlari elementlari haqida aniqroq ma'lumotlarni saqlaydi, bu esa diagnostikada batafsilroq ma'lumotni ko'rsatish imkonini beradi;
- Haddan tashqari yuklangan funksiyalar, ikkilik operatorlar, funksiya chaqiruvlari va format satrlari uchun yaxshilangan diagnostika;
- Bir qator mashhur xatolar (qavslar, nomlar bo'shliqlari, matn terish xatolari va boshqalar) uchun ba'zi ishlab chiqish muhitlari tomonidan qo'llab-quvvatlanadigan avtomatik tuzatishlar qo'shildi.
libstdc++
- C++ 17 ilovasi endi eksperimental emas;
- Qo'shilgan parallel algoritmlar, , , A endi -lstdc++fs talab qilmaydi;
- C++ 2a uchun yaxshilangan eksperimental yordam ( , , std::bind_front va boshqalar);
- Yo'llari belgi bo'lmagan belgilarni o'z ichiga olgan Windows-da fayl oqimlarini ochishni qo'llab-quvvatlash;
- Dastlabki qo'llab-quvvatlash Windows-da;
- Networking TS uchun dastlabki yordam.
D
D tilining 2.076 versiyasi GCCga kiritilgan.
Fortran
- Asinxron kiritish-chiqarish uchun to'liq qo'llab-quvvatlash;
- MINLOC va MAXLOC uchun BACK argumenti amalga oshirildi;
- FINDLOC va IS_CONTIGOUS funktsiyalari amalga oshirildi;
- Kompleks sonlar komponentlariga kirish sintaksisi amalga oshirildi: c%re va c%im;
- Amalga oshirilgan sintaksis str%len va a%tur;
- Amalga oshirilgan C deskriptorlari va ISO_Fortran_binding.h sarlavhasi;
- Argumentlardan biri NaN bo'lsa, MAX va MIN funksiyalarining natijasi uchun yumshatilgan talablar;
- Qo'shilgan variant -fdec-o'z ichiga oladi;
- Direktiv qo'shildi QURILGAN.
libgccjit
- Qo'shilgan funksiya gcc_jit_context_add_driver_option.
boshqa
Arxitektura va operatsion tizimga xos bo'lgan ko'plab o'zgarishlar.
Manba: linux.org.ru