LLVM 11.0, Python 3 güncellemesi, RISC-V için iyileştirmeler ve daha fazlasıyla birlikte geliyor

LLVM

Altı aylık geliştirmeden sonra LLVM 11.0 projesinin yeni baskısının lansmanı sunuldu Python 3'e güncelleme, RISC-V'deki deneysel talimatları destekleyen yamalar ve diğer birçok değişiklik gibi çeşitli iyileştirmelerin sunulduğu.

LLVM'ye aşina olmayanlar için bunun ne olduğunu bilmeleri gerekir. GCC uyumlu bir araç seti (derleyiciler, optimize ediciler ve kod oluşturucular) programları RISC benzeri bit kodu ara sanal talimatlarında (çok seviyeli optimizasyon sistemine sahip düşük seviyeli sanal makine) derler.

Derleme süresini optimize etmek için tasarlanmıştır, bağlama süresi, kullanıcının tanımlamak istediği herhangi bir programlama dilinde yürütme süresi. Başlangıçta C ve C ++ 'yı derlemek için uygulanmıştır, LLVM'nin dilden bağımsız tasarımı ve proje başarısı çok çeşitli diller ortaya çıkardılar.

Oluşturulan sözde kod, JIT derleyicisi kullanılarak, programın yürütülmesi sırasında doğrudan makine talimatlarına dönüştürülebilir.

LLVM 11.0'ın temel yeni özellikleri

LLVM 11.0'ın bu yeni sürümünde derleme sistemi Python 3'ü kullanacak şekilde taşındıBu nedenle, Python 3'ün kullanılması zorunlu değildir, çünkü mevcut olmaması durumunda, geri alma seçeneği Python 2'yi kullanmak için uygulanır.

Öznitelik vektör fonksiyonlu abi varyantı eklendi ara gösterime (IR) skaler ve vektör fonksiyonları arasındaki eşlemeyi tanımlamak için vektörleştirme çağrıları için. Llvm :: FixedVectorType ve llvm :: ScalableVectorType adlı iki ayrı vektör türü, llvm :: VectorType'tan çıkarılır.

Tanımlanmamış davranış, tanımsız temelli dallanma ve tanımsız değerlerden standart kütüphane işlevlerine geçiştir.

Memset / memcpy / memmove'da tanımsız işaretçilerin geçmesine izin verilir, ancak boyuttaki parametre sıfıra eşitse.

LLJIT, LLJIT :: initialize ve LLJIT :: deinitialize yöntemleri aracılığıyla statik başlatmalar için destek ekler.

Eklendi JITDylib'e statik kitaplıklar ekleme yeteneği StaticLibraryDefinitionGenerator sınıfını kullanarak. ORCv2 için C API eklendi (JIT derleyicileri oluşturmak için API).

Farklı işlemci mimarileri için desteği geliştirme bölümünde:

  • Katma Cortex-A34, Cortex-A77, Cortex-A78 ve Cortex-X1 işlemciler için destek AArch64 mimarisinin arka ucunda. ARMv8.2-BF16 (BFloat16) ve ARMv8.6-A uzantıları, RMv8.6-ECV (Gelişmiş Sayaç Sanallaştırma), ARMv8.6-FGT (İnce Taneli Tuzaklar), ARMv8.6-AMU (Etkinlik Sanallaştırmayı izler) ve ARMv8.0-DGH (veri toplama ipucu).
  • ARM arka ucunda Cortex-M55, Cortex-A77, Cortex-A78 ve Cortex-X1 işlemciler için destek eklendi. Armv8.6-A Matrix Multiply ve RMv8.2-AA32BF16 BFloat16 uzantılarını uyguladı.
  • PowerPC arka ucunda POWER10 işlemciler için kod oluşturma desteği eklendi. Kayan nokta işlemleri için iyileştirilmiş döngü optimizasyonları ve geliştirilmiş destek.
  • Mimari arka uç RISC-V, destek içeren yamaları alabilir henüz resmi olarak onaylanmamış deneysel genişletilmiş talimat setleri için.

Buna ek olarak, bağlama fonksiyonları için kod üretme yeteneği sağlanmıştır vektör SVE talimatlarına entegre edilmiştir.

AVR mimarisi için arka uç, deneysel kategoriden temel dağıtıma dahil olan kararlı olanlara taşındı.

X86 arka ucu Intel AMX ve TSXLDTRK talimatlarını destekler. LVI saldırılarına karşı ek koruma (Yük Değeri Enjeksiyonu) ve genel Spekülatif Yürütme Yan Etkileri Bastırma mekanizması, CPU'daki işlemlerin spekülatif yürütülmesinden kaynaklanan saldırıları engellemek için de uygulandı.

Öne çıkan diğer değişikliklerden:

  • SystemZ mimarisi için arka uç, MemorySanitizer ve LeakSanitizer için destek ekler.
  • Libc ++ matematik sabit başlık dosyası için destek ekler .
  • Genişletilmiş LLD bağlayıcı yetenekleri.
  • "–Lto-emit-asm", "–lto-all-program-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -modle dahil olmak üzere geliştirilmiş ELF desteği "," –Bireysel "," –gülbölge "," –ilişler = N ".
  • İzi dosyaya kaydetmek için "–time-trace" seçeneği eklendi, bu daha sonra Chrome'daki chrome: // trace arayüzüyle ayrıştırılabilir.
  • Go (llgo) derleyicili bir arabirim sürümden kaldırılmıştır ve gelecekte yeniden yapılandırılabilir.

Nihayet onun hakkında daha fazlasını bilmek istiyorsan bu yeni sürüm hakkında kontrol edebilirsiniz aşağıdaki bağlantıdaki ayrıntılar.


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.