GCC 11.1 zaten yayınlandı, bunlar en önemli haberleri ve değişiklikleri

Bir yıllık geliştirmeden sonra, GCC 11.1 derleyici paketinin yeni sürümü yayınlandı, yeni GCC 11.x şubesindeki ilk önemli sürüm. Yeni sürüm numaralandırma şeması kapsamında, geliştirme sırasında sürüm 11.0 kullanıldı ve GCC 11.1'in yayınlanmasından kısa bir süre önce, GCC 12.0'ın bir kolu, GCC 12.1'in bir sonraki ana sürümünü oluşturmak üzere zaten çatallanmıştı.

GCC 11.1, varsayılan DWARF 5 hata ayıklama dosyası formatına geçiş açısından dikkat çekicidir, C++17 standardının ("-std=gnu++17") varsayılan olarak dahil edilmesi, C++20 standardını desteklemek için önemli iyileştirmeler, C++23 için deneysel destek, gelecekteki C++ ile ilgili iyileştirmeler 2 standart C dili (CXNUMXx), yeni performans optimizasyonları.

GCC 11.1 Ana Yeni Özellikler

C++ dilinin varsayılan modu, C++ 17 standardını kullanacak şekilde değiştirildi, daha önce önerilen C++14 yerine. Parametre olarak diğer şablonları kullanan şablonları işlerken yeni C++17 davranışını seçerek devre dışı bırakmak mümkündür (-fno-new-ttp-matching).

Donanım hızlandırma desteği eklendi Boş hafıza alanlarına erişim, tahsis edilen arabellek sınırlarının aşılması ve hafızayla çalışırken diğer bazı hata türlerinin gerçeklerini belirlemenize olanak tanıyan AdresSanitizer aracından. Donanım hızlandırma şu anda yalnızca AArch64 mimarisi için mevcuttur ve Linux çekirdeğini derlerken kullanımına odaklanmaktadır.

Sunulan diğer bir yenilik ise Yeni bir IPA-modref geçişi eklendiğinden prosedürler arasında optimizasyonlar ve iyileştirmeler yapıldı (-fipa-modref) işlev çağrılarındaki yan etkileri izlemek ve ayrıştırma doğruluğunu iyileştirmek için. Ayrıca bir IPA-ICF geçişinin geliştirilmiş uygulaması (-fipa-icf), derleme belleği tüketimini azaltır ve aynı kod bloklarının birleştirildiği birleşik işlevlerin sayısını artırır.

El profil kılavuzlu optimizasyon motoru (PGO), geliştirilmiş “-fprofile-values” modu dolaylı aramalar için daha fazla parametreyi takip ederek.

ayrıca OpenMP 5.0 standardının sürekli uygulanması öne çıkıyor (Açık Çoklu İşleme), burada atama politikası için başlangıç ​​desteği ve tekdüze olmayan döngüleri kullanma yeteneği eklendi OpenMP yapılarında. OMP_TARGET_OFFLOAD ortam değişkeni artık desteklenmektedir.

İşlemlerin GPU'lara ve NVIDIA PTX gibi özel işlemcilere aktarılmasına yönelik araçları tanımlayan, C, C++ ve Fortran dilleri için sağlanan OpenACC 2.6 paralel programlama spesifikasyonunun iyileştirilmiş uygulaması.

C ailesi dilleri için yeni bir "no_stack_protector" özelliği uygulandı, Yığın korumasının etkinleştirilmemesi gereken işlevleri işaretlemek için tasarlanmıştır ("-fstack-protector"). "Malloc" özelliği, belleği ayıracak ve boşaltacak çağrı çiftlerini tanımlama desteğiyle genişletildiStatik analizörde tipik bellek hatalarını (bellek sızıntıları, boştan sonra kullanım, ücretsiz işleve çift çağrı vb.) ve derleyici uyarılarını "-Wmismatched-dealloc", "-Wmismatched-new-delete" ve "-Wmismatched-new-delete" algılamak için kullanılır. "-Wfree-nonheap-object" tutarsız eşlemeyi kaldırma ve serbest bırakma işlemlerini bildiriyor.

Hata ayıklama bilgileri oluşturulurken varsayılan olarak DWARF 5 formatı kullanılır; bu, önceki sürümlerle karşılaştırıldığında %25 daha kompakt hata ayıklama verileri oluşturulmasına olanak tanır. Tam DWARF 5 desteği, binutils'in en az 2.35.2 sürümünü gerektirir.

Geliştirilmiş ThreadSanitizer modu yetenekleri (-fsanitize = iş parçacığı), o zaman evetve alternatif çalışma zamanları ve ortamları için destek ekler, Linux çekirdeğindeki yarış koşullarını dinamik olarak tespit etmek için Kernel Concurrency Sanitizer (KCSAN) hata ayıklama aracı desteğinin yanı sıra. Yeni seçenekler “–param tsan-distinguish-volatile” ve “–param tsan-instrument-func-entry-exit” eklendi.

Vektörleştirici, kontrol akış grafiğindeki (CFG) önceki bloklara yapılan referanslar ve kesişmelerle ilişkili tüm fonksiyon içeriğinin ve ek işleme yeteneklerinin muhasebeleştirilmesini sağlar.

Optimize edici, bir dizi koşullu işlemi, aynı değişkenin karşılaştırıldığı bir değişiklik ifadesine dönüştürme yeteneğine sahiptir. Gelecekte, anahtar ifadesi bit testi talimatları kullanılarak kodlanabilir (böyle bir dönüşümü kontrol etmek için "-fbit-tests" seçeneği eklenmiştir).

C++ için, C++ 20 standardında önerilen değişikliklerin ve yeniliklerin bir kısmı uygulanmıştır; bunlara "sanal yapılandırma" sanal işlevleri, nesnelerin yaşam döngüsünü sonlandırmak için sözde yıkıcılar, enum sınıfının kullanılması ve bir dizinin boyutunun hesaplanması dahildir. "yeni" ifadesi.

Onun hakkında daha fazla bilgi edinmek istiyorsanız, ayrıntıları kontrol edebilirsiniz aşağıdaki bağlantı.