- Cranelift, Apache-2.0 lisanslı bir kod üretim backend'idir ve WebAssembly için Wasmtime çalışma zamanının bir parçası olarak geliştirildi
- Ekim 2023'te Rust projesi, Cranelift'i nightly araç zincirinin isteğe bağlı bir bileşeni olarak sunmaya başladı
- Kullanıcılar artık Cranelift'i, Rust ile yazılmış projelerin debug derlemeleri için kod üretim backend'i olarak kullanabiliyor
- Cranelift, mevcut derleyicilerle rekabet ederken, yalnızca önemli optimizasyonlara öncelik veren sadeleştirilmiş tasarımı sayesinde kodu daha hızlı üretiyor
Derleme süresinin önemi
- Programlama dili kullanıcıları hızlı derleme süreleri ister
- Rust da LLVM kullanan diğer diller gibi derleme süreleri konusunda şikayetler aldı
- Yeterince hızlı kod üreten bir derleyici, yorumlayıcı kullanmaya kıyasla avantajlı olabilir
- Derleme hızına odaklanan bir derleyici değerli olabilir
Cranelift'in optimizasyonları
- Cranelift, kod üretimi sırasında çeşitli şekillerde optimizasyon yapar
- Optimizasyon hattı, ara temsillerin kümelerini verimli biçimde gösteren bir veri yapısı olan E-graphs'a dayanır
- Geleneksel derleyicilerde optimizasyon sırası, üretilen kodun kalitesi üzerinde büyük etkiye sahiptir
- Cranelift, E-graph kullanarak optimizasyon sırasının sonuca etki etmemesini sağlar
- E-graph'tan nihai temsili çıkarmak NP-complete bir problemdir, ancak Cranelift yeterince iyi bir temsili hızlıca çıkarmak için sezgisel yöntemler kullanır
Rust için Cranelift
- Cranelift'i Rust backend'i olarak kullanma yönündeki çaba kayda değerdi
- Rust derleyicisi, tür denetiminden geçmiş programları ifade etmek için mid-level IR kullanır
- Cranelift'i kullanabilmek için mid-level IR'yi CLIF'e dönüştüren bir kütüphane gerekliydi
- Bu kütüphane büyük ölçüde Rust derleyici ekibi üyesi "bjorn3" tarafından yazıldı
- Kullanıcılar rustup ve cargo ile Cranelift backend'ini deneyebilir
GN⁺ görüşü
- Cranelift'in eklenmesi, Rust topluluğunda derleme sürelerini kısaltmaya yönelik süregelen talebe verilmiş bir yanıt olarak görülebilir. Bu, geliştiricilerin üretkenliğini artırmaya katkı sağlayabilir.
- Cranelift'in E-graphs kullanarak optimizasyon sırası sorununu çözme yaklaşımı, derleyici tasarımında yeni bir paradigma sunuyor. Bu, derleyici araştırma ve geliştirmesi için yeni bir yön gösterebilir.
- Eleştirel açıdan bakıldığında, Cranelift'in LLVM'e kıyasla ne kadar kararlı ve verimli olduğu hâlâ daha fazla gerçek kullanım örneğiyle doğrulanmayı bekliyor.
- Cranelift'e benzer işlevler sunan diğer derleyici backend'leri arasında GCC'nin libgccjit'i de bulunuyor; bu tür alternatiflerle yapılacak karşılaştırmalar, Cranelift'in artılarını ve eksilerini daha net ortaya koyabilir.
- Cranelift'i benimseyecek geliştiriciler, mevcut LLVM tabanlı altyapıyla uyumluluğu ve geçiş maliyetini göz önünde bulundurmalı; ayrıca Cranelift'in performansını ve kararlılığını dikkatle değerlendirmelidir.
1 yorum
Hacker News görüşleri