LLVM 18.1.0 destek iyileştirmeleri, arka uçlar ve daha fazlasıyla geliyor

LLVM Logosu

LLVM, derleyiciler geliştirmenin yanı sıra yeni programlama dilleri oluşturmaya ve mevcut dilleri geliştirmeye yardımcı olan bir çerçevedir.

Projenin lansmanı LLVM 18.1.0, altı aylık geliştirme sürecinin ardından geliyor ve GCC q ile iyileştirmeler içeriyorDerleyicileri, optimize edicileri ve kod oluşturucuları kapsar. Dikkate değer bir değişiklik bu versiyonda öyle LLVM projesinde 18.x şubesinden başlayarak sürüm numaraları oluşturmaya yönelik yeni şema. GCC ve GDB gibi projelerin uygulamalarının ardından, geliştirme sırasında sıfır sürümünün ("N.0") kullanımı benimsenmiş olup, ilk kararlı sürüm "N.1" olarak numaralandırılmıştır. Bu değişiklik, ana dalı temel alan yapıları son sürüm dalındaki yapılardan ayırarak faydalar sağlar.

Örneğin, mevcut sürüme (18.1.0) hazırlanırken geliştirme, LLVM 18.0'ın kararsız dalı kullanılarak yapıldı. İlk kararlı sürüm daha sonra 18.1.0 numarasıyla piyasaya sürüldü ve bu, kapsamlı bir geliştirme ve test döngüsünün doruk noktasına işaret ediyordu. Ek olarak, bu yeni plan, gerekirse her iki haftada bir 18.1.1, 18.1.2 vb. numaralar altında düzeltici iletişimlerin oluşturulmasına olanak tanır.

Geçerli dalda ABI'yi (Uygulama İkili Arayüzü) etkileyen değişiklikler yapılırsa, güncellemenin sürümün ikinci basamağına (örneğin 18.2.0) bir değişiklikle yansıtılacağını unutmamak önemlidir. Bu, tutarlı ve şeffaf sürüm yönetimi sağlayarak kullanıcılara her sürümde yapılan kararlılık ve değişiklikler konusunda gerekli netliği sağlar.

LLVM 18.1.0'ın temel yeni özellikleri

LLVM 18.1.0'ın sunduğu bu yeni versiyonda, X86 mimarisi, ISA uzantılarına yönelik destek iyileştirmeleri uygulandı. Özellikle USER_MSR, AVX10.1-256 ve AVX10.1-512 uzantıları için destek eklenmiştir. Ayrıca, i128 türü, GCC ve clang'ın __int128 türüyle birleştirildi, bu da Rust gibi harici projelerle daha fazla ikili uyumluluğu kolaylaştırır.

LLVM 18.1.0'daki bir diğer öne çıkan özellik ise şuydu: RISC-V, çeşitli iyileştirmeler yapıldığı için ve stabilizasyon yoluyla önemli eklemeler vel Uzantılar için destek ve ayrıca uzantılar için yerleşik işlevler eklendi RV32E, RV64E, ilp32e ve lp64e mimarilerinde kod üretimi için deneysel destek uygulanmıştır.

Mimarinin arka ucunda LoongArch, LSX uzantıları için yerleşik işlevler eklendi (128 bit SIMD) ve LASX (256 bit SIMD), LoongArch Referans Kılavuzu spesifikasyonu 1.10'da sunulan yeni talimatlar için destek eklendi ve otomatik vektörleştirme için ilk destek uygulandı.

AArch64'te, Cortex-A520, Cortex-A720 ve Cortex-X4 gibi işlemciler için genişletilmiş destek, Yığın taşmalarını tespit eden ve yığın ile yığının kesişimine dayalı saldırı yöntemlerini engelleyen Yığın Çakışma Koruması mekanizması için destek uygulandı.

Çeşitli mimarilerin arka uçlarında yapılan bu spesifik iyileştirmelere ek olarak WebAssembly, MIPS, PowerPC ve AMDGPU gibi mimarilerin arka uçlarında da genel iyileştirmeler yapıldı. LLD bağlayıcının yetenekleri de genişletildi, RISC-V ve AArch64 mimarilerine yönelik destek iyileştirildi ve C++20, C++23 ve C'nin yeteneklerini takip etmek için Libc++ kitaplığına güncellemeler uygulandı. standartlar ++26.

Son olarak, LLDB hata ayıklayıcı, harici sunuculardan sembollerin ve ikili verilerin otomatik olarak çıkarılması için destek ekledi DEBUGINFOD protokolünü destekleyen, böylece farklı mimarilerde hata ayıklama yeteneğini genişleten ve SME ve SME2 (Ölçeklenebilir Matris Uzantısı) gibi uzantılar için destek ekleyen ve Python dili için bağlamaların bazı alanlarda kaldırıldığını not etmek önemlidir. bu bağlantılara bağlı olan geliştirme süreçlerinde ayarlamalar yapılmasını gerektirir.

Parçaları için C diliyle ilgili değişiklikler de dahil olmak üzere Clang 18'de uygulanan iyileştirmeler:

  • "Const" özelliğine sahip yapıların, birleşimlerin ve dizilerin, GCC'ye benzer şekilde artık sabit ifadeler olarak kullanılmasına izin verilmektedir.
  • Numaralandırmalar artık TBAA (Tür Tabanlı Takma Ad Analizi) meta verilerinde "karakter" türü olarak değerlendirilmek yerine orijinal tamsayı türleri olarak yansıtılmaktadır.
  • Esnek dizideki öğelerin sayısını belirlemek için esnek dizili bir yapıda bir alan belirtmenize olanak tanıyan "counted_by" özelliği için destek eklendi, böylece clang'da arabellek taşması kontrollerinin verimliliği artırıldı.
  • Modülleri bağlamak ve C23 standardını desteklemek için "c23 gerektirir" ifadesi için destek uygulandı.
  • Şablonlarda ek tipte yazılmamış argümanların kullanılması için deneysel bir özellik uygulandı ve kayan nokta değerlerinin, işaretçilerin ve alt nesne referanslarının belirtilmesine izin verildi.
  • Bir şablonda "this" özelliğine sahip parametreleri kullanmanıza ve bu işlevin çağrıldığı ifadenin kategorisini keşfetmenize olanak tanıyan "Bunu çıkarma" mekanizması için deneysel destek eklendi.

Son olarak, bu konuda daha fazla bilgi edinmek istiyorsanız, ayrıntılara başvurabilirsiniz. Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.