Derleyici Duo: Clang 17 ve LLVM 17 için birçok iyileştirme

Saberie

Active member
LLVM ve Clang derleyici altyapı geliştirme ekibi, her ikisi için de altı ayda bir 17.0.1 sürümünü yayınladı. 17.0.0, 17.0.0-rc’ye kıyasla küçük bir hata düzeltmesi gerektiğinden çıkarılmıştır. Sürüm 17’deki yenilikler ve düzeltmeler esas olarak ayrıntılarla ilgilidir, ancak bunlar her iki sistemin ve hemen hemen tüm ilgili platform ve dillerin merkezinde yer almaktadır.

Duyuru



İlkbaharda C++17’ye geçtikten sonra Clang, ardılları olan C++20, C++23 ve C++2c’yi (C++26) daha da genişletti. C++20 ile ön uç, kararlılık ve ABI (Uygulama İkili Arayüzü) sorunlarının ortaya çıktığı Windows dışındaki tüm platformlarda duyurulan ortak rutinleri tam olarak destekler. C++23 ile Clang artık seçeneği biliyor -std=c++23 ve C++26’da -std=c++2c birlikte -std=gnu++2c. Tüm C++ çeşitleri için ön uçta kod oluşturma özelliği bulunur. -O0-Ara std::forward_like geliştirilmiş, benzer std::move,std::forward ve benzeri. Clang, tanımı standart kitaplıktan başlatmak yerine bunları derleyicinin dahili öğeleri olarak ele alır.

Derleyici sürecini kontrol etmek için programcıların kullandığı çok sayıda anahtar eklendi veya kaldırıldı. Değiştirilmesine ek olarak -std=c++2b Örneğin -fdouble-square-bracket-attributes modası geçmiş. Yeni anahtarla -fcaret-diagnostics-max-lines= Geliştiriciler, imleçle teşhis için maksimum kod çıkışı satırı sayısını kontrol eder. Tanılamayla ilgili haberler de var: örneğin, Clang ekibi C++20’de yakalama kullanımına karşı uyarıyor this Başından sonuna kadar =çünkü resmi olarak geçerliliğini yitirmiştir.

Programcıların ve geliştiricilerin gerekirse aşina olması gereken aşağıdaki platformlar için değişiklikler vardır: Aarch64, Aix, Amdgpu, ARM, AVR, Cuda/Hip, Loongarch, Risc-V, Webassembly, PowerPC ve x86. Ayrıca tüm bölgelerde bol miktarda Buxfix bulunmaktadır.

LLVM ekibi, önceki sürümlerle karşılaştırıldığında sorun yaratabilecek ve geliştiricilerin ve programcıların dikkat etmesi gereken değişiklikleri özellikle rapor ediyor. Örneğin C++’da Clang artık ortak rutinleri aramıyor coroutine_traits ad alanında std::experimentalama ancak daha sonra std::coroutine_traits. Ekip, C ve ABI için ek açık uyarılar yapıyor.

LLVM arka ucu


Arka uçta da pek çok şey yaşandı: LLVM 17 ile bakımcılar, arka ucun kendisini en azından CMake 3.20.0’a kadar oluşturma gereksinimlerini artırıyor. IR katmanında, LLVM 17 artık yazılan ve opak işaretçileri yok sayıyor. Bellekte adreslenen türü bilmesi gereken talimatlar, tür bağımsız değişkeninin kendisini içermelidir. Ayrıca LLVMContextSetOpaquePointers C API’sinde belirtilmemiştir.

Ancak derleyici ekibi bunu ekledi nofpclassözel kayan nokta karşılaştırmalarında daha fazla optimizasyona izin veren özellik. Derleyici arka uç altyapısında, geliştirme ekibinin güncel olmayan bir optimizasyon hattı vardır (PassManagerBuilder.h) yeni Passmanager API’si ile değiştirildi. Ayrıca geliştiricilerin makine kodu ve LTO bit kodundan oluşan nesne dosyaları oluşturmak için kullanabileceği FatLTO ardışık düzeni de yenidir. Ayrıntıları FatLTO belgelerinde bulabilirsiniz.

Bakımcılar ayrıca LLVM araçlarında da önemli değişiklikler yaptılar; örneğin llvm-readobj ve llvm-readelf’in Json çıktısı artık daha doğru ve net. Arka uçtaki platform haberleri Aarch64, Amdgpu, ARM, Loongarch, PowerPC, Risc-V, Webassembly, x86 için mevcuttur. Python bağlamaları artık tüm platformlar için gerekli değildir.

İlgilenenler LLVM ve Clang değişiklik günlüklerindeki tüm ayrıntılar ve hata düzeltmeleri hakkında daha fazla bilgi edinebilir.


(DSÖ)



Haberin Sonu
 
Üst