Nightly sürümünde paralel frontend ile Rust’ta daha hızlı derleme
(blog.rust-lang.org)Rust derleyicisinin paralel frontend’iyle daha hızlı derleme
- Rust derleyicisinin frontend’i, paralel yürütme kullanarak derleme sürelerini önemli ölçüde azaltabiliyor.
- Paralel frontend deneysel bir özellik ve nightly derleyicide
-Z threads=8seçeneğiyle denenebiliyor. - 2024 yılında kararlı derleyicide yayınlanması planlanıyor.
Derleme süresi ve paralellik
- Rust derleme süresi sürekli bir ilgi konusu ve derleyici performansı çalışma grubu derleyici performansını yıllardır istikrarlı biçimde iyileştiriyor.
- 2023’ün ilk 10 ayında derleme süresi ortalama %13, bellek kullanımı %15 ve ikili dosya boyutu %7 azaldı.
- Derleyici zaten büyük ölçüde optimize edildiği için yeni iyileştirmeler bulmak zorlaştı ve paralellik büyük ama zor bir geliştirme alanı olarak kaldı.
Mevcut süreçler arası paralellik
- Bir Rust programı derlenirken Cargo, birden çok crate’i derlemek için birden fazla rustc sürecini paralel olarak çalıştırır.
- Crate’ler arası bağımlılık az olduğunda paralel yürütme iyi çalışır, ancak bağımlılıklar arttıkça paralel yürütme azalır.
Mevcut süreç içi paralellik: backend
- Derleyici frontend ve backend olarak ayrılır; backend kod üretiminden sorumludur ve LLVM bunu paralel olarak işler.
- Frontend ise ayrıştırma, tür denetimi gibi işleri yapar, ancak bu haftaya kadar paralel yürütmeyi kullanamıyordu.
Yeni süreç içi paralellik: frontend
- Frontend artık Rayon kullanarak ince taneli paralellikle derleme işlerini yürütebiliyor.
- Paralel frontend etkinleştirilip 8 thread kullanacak şekilde ayarlandığında, frontend çalışma süresinin belirgin biçimde azaldığı görülebiliyor.
Her şeyin bir araya gelmesi
- Rust derleme süreci uzun zamandır Cargo üzerinden süreçler arası paralellikten ve backend’deki süreç içi paralellikten yararlanıyordu; artık frontend de süreç içi paralellikten faydalanabiliyor.
- Derleyici, oluşturulan thread sayısını çekirdek sayısını aşmayacak şekilde sınırlamak için jobserver protokolünü kullanır.
Nasıl kullanılır
- Nightly derleyici paralel frontend etkin olarak yayınlandı, ancak varsayılan olarak tek thread modunda çalışıyor.
- Kullanıcılar
-Z threadsseçeneğiyle çok thread’li moda geçebilir.
Performans etkisi
- Tek thread modunda paralel frontend çalıştırmak, önceye kıyasla derleme süresini %0 ila %2 yavaşlatabilir.
- Çok thread’li modda derleme süresi %50’ye kadar azalabilir, ancak etki kodun özelliklerine ve build yapılandırmasına göre değişir.
Doğruluk
- Tek thread modunda güvenilirliğin yüksek olması bekleniyor.
- Çok thread’li modda bilinen hatalar ve deadlock’lar olabilir; derleyicinin ürettiği ikili dosyalar hangi frontend kullanılırsa kullanılsın aynı olmalıdır.
Geri bildirim
- Paralel frontend ile ilgili sorunlar varsa, "WG-compiler-parallel" etiketli issue’lara bakılabilir ve yeni issue gönderilebilir.
Gelecek çalışmalar
- Paralel frontend’in performansını iyileştirme ve çok thread’li moddaki hataları çözme çalışmaları sürüyor.
-Z threadsseçeneğini kararlı hale getirip 2024’teki kararlı sürümde varsayılan olarak çok thread’li modda çalıştırma planı bulunuyor.
GN⁺ görüşü
Bu yazıdaki en önemli nokta, Rust derleyicisinin frontend’inin artık paralel yürütmeyi destekleyerek derleme süresini ciddi ölçüde kısaltabilmesi. Bu, Rust geliştiricilerine derleme hızında büyük bir avantaj sağlar ve daha verimli bir geliştirme ortamı oluşturmaya katkıda bulunur. Paralel frontend’in devreye alınması, Rust topluluğu için heyecan verici bir gelişme ve performans iyileştirmesine yönelik süregelen çabaların bir sonucu olarak görülebilir.
1 yorum
Hacker News yorumu
-Z threadsseçeneğini kullanırken temkinli olunması gerektiği belirtiliyor.