3 Mayıs'ta GCC'nin dokuzuncu versiyonunun ilk halka açık sürümü gerçekleşti: GCC 9.1.
Sekizinciye kıyasla birçok önemli iyileştirme ve ekleme içeriyor
sürüm.
Genel değişiklikler
Seçenekler
- Boyutu kabul eden komutlar artık 64 bit değerleri ve boyutu belirtmek için kullanılan son ekleri destekliyor;
- Seçenek eklendi -canlı yamaDinamik kod değiştirmeye potansiyel olarak zarar verebilecek optimizasyonları kontrol etmek;
- Komut kabuğunda otomatik tamamlamayı desteklemek için --completion seçeneği eklendi;
- Derleyici tanılamaları artık satır numaralarını da içeriyor (-fno-diagnostics-satır-numaralarını göster) Ve
bilgi yazın (fno-tanılama-etiketleri göster); - Seçenek eklendi -fdiagnostics-format=json teşhisin çıktısını JSON formatında almak için;
- Hizalamayı belirtme seçenekleri (-falign-fonksiyonlarıörneğin) artık birkaç hizalama seçeneğini kabul edebilir;
- Dosya listesini filtrelemek için seçenekler eklendi (-fprofile-filtre-dosyaları, -fprofil-hariç-dosyalar), profil oluşturucu tarafından ayarlananlar;
- AdresSanitizer artık yığındaki değişkenlere geçersiz erişimleri yakalamak için daha kompakt hizalama kullanıyor;
- Çok sayıda çıktı iyileştirmesi -fopt-bilgi;
- Seçenek eklendi -fsave-optimizasyon-kaydı optimizasyon raporunu bir dosyaya kaydetmek için;
- Seçenek eklendi -fipa-yığın-hizalaması и -fipa-referans-adreslenebilir.
Yeni yerleşik özellikler
Yeni özellik
Diğer
Aşağıdakilerle ilgili çok sayıda kod oluşturma iyileştirmesi:
- anahtar yapılarının oluşturulması;
- prosedürler arası optimizasyonlar;
- profil oluşturma bilgilerine dayalı optimizasyon;
- montaj aşamasında optimizasyon (LTO);
Ayrıca gcov'un dahili formatı artık JSON'dur ve yeni seçenek --sıcaklık-renklerini kullanın ne sıklıkla kullanıldıklarına bağlı olarak kod satırlarının renklendirilmesini içerir.
Diller
Uygulamanın kalitesi ve eksiksizliği ACC'yi aç C, C++ ve Fortran dilleri gelişmeye devam ediyor.
C benzeri diller
- OpenMP 5.0 için kısmi destek uygulandı;
- Eklenen işlev __builtin_convertvector;
- Uyarı eklendi -Paketlenmiş üyenin adresi;
- Bir dizi mevcut uyarıda iyileştirmeler yapıldı;
- Bir makroya yanlış sayıda bağımsız değişken aktarıldığında ortaya çıkan hata metni artık makronun kendisinin bildirimini de içeriyor;
- Yazım hatası düzeltme önerilerinde iyileştirmeler.
C
- -std=c2x (gelecekteki C standardı) için tek bağımsız değişkenle _Static_assert'i destekleyin;
- Yeni uyarı -Wmutlak değerabs() gibi işlevler için yanlış argüman türünü yakalayan.
C + +
- Yeni uyarılar: -Wkullanımdan kaldırılmış kopya,
-Winit-listesi-ömür boyu,
-Gereksiz hareket,
-Wpessimizing-hareket,
-Wclass dönüşümü; - Gelecekteki standarttan yeni özelliklerin uygulanması için çalışmalar devam ediyor C++2a;
- Ön uç artık bir dizi kaynak kodu öğesi hakkında daha doğru bilgileri saklıyor ve bu da tanılamada daha ayrıntılı bilgi görüntülemenize olanak tanıyor;
- Aşırı yüklenmiş işlevler, ikili operatörler, işlev çağrıları ve biçim dizeleri için geliştirilmiş tanılama;
- Bir dizi popüler hata (eksik parantez, ad alanları, yazım hataları vb.) için bazı geliştirme ortamları tarafından desteklenen otomatik düzeltmeler eklendi.
libstdc ++
- C++17 uygulaması artık deneysel değil;
- Paralel algoritmalar eklendi, , , A artık -lstdc++fs gerektirmiyor;
- C++2a için geliştirilmiş deneysel destek ( , , std::bind_front, vb.);
- Yolları karakter olmayan karakterler içeren Windows'ta dosya akışlarını açma desteği;
- İlk destek Windows'ta;
- Networking TS için ilk destek.
D
D dili sürümü 2.076 GCC'ye dahildir.
Fortran
- Eşzamansız G/Ç için tam destek;
- MINLOC ve MAXLOC için BACK argümanı uygulandı;
- FINDLOC ve IS_CONTIGOUS işlevleri uygulandı;
- Karmaşık sayıların bileşenlerine erişim için kullanılan sözdizimi uygulanmıştır: c%re ve c%im;
- str%len ve a%kind söz dizimi uygulandı;
- C tanımlayıcıları ve ISO_Fortran_binding.h başlığı uygulandı;
- Bağımsız değişkenlerden biri NaN olduğunda MAX ve MIN işlevlerinin sonucuna ilişkin gereksinimler gevşetildi;
- Seçenek eklendi -fdec-include;
- Yönerge eklendi İNŞAAT.
libgccjit
- Eklenen işlev gcc_jit_context_add_driver_option.
Diğer
Mimariye ve işletim sistemine özgü birçok değişiklik.
Kaynak: linux.org.ru