19 puan yazan GN⁺ 2024-10-10 | 4 yorum | WhatsApp'ta paylaş
  • Volvo'nun Rust kullanım örneği: çok büyük bir şirkette Rust sessizce kullanılıyor
  • Julius Gustavsson, 2019'dan beri Volvo'nun düşük güçlü işlemci ECU'sunun (elektronik kontrol ünitesi) baş yazılım mimarı olarak görev yapıyor
  • Bu ECU, aracın (düşük seviyeli) güç yönetiminden sorumlu ve elektrikli araçlarda yüksek kapasiteli yüksek voltajlı bataryalar bulunsa da geleneksel 12V hattı hâlâ mevcut
  • ECU, gerektiğinde elektrik sistemini uyandırma görevini üstleniyor. Örneğin araca yaklaşıldığında sistemi açması gerekiyor
  • Julius, 2017'de Volvo'ya katıldığında zaten Rust'ı biliyordu ve bunun mevcut C ve C++ kodunun yerini alma potansiyelini görmüştü
  • Düşük güçlü işlemci, Rust kullanımı için mükemmel bir uyum gösterdi; çünkü güvenlik açısından kritik bir bileşen olarak sınıflandırılmıyordu ve ARM Cortex-M işlemcisi kullanıyordu, bu nedenle Rust kullanımının önünde ne teknik ne de bürokratik engel vardı
  • Şu anda EX90 ve Polestar 3, Rust olmadan çalışmayacak montaj hatlarında üretiliyor

Rust neden seçildi?

  • Julius'un ilk işi, yoğun biçimde Ada kullanılan hava trafik kontrol yazılımları geliştirmekti. O dönemde şirketteki genel kanı, Ada'nın fazla karmaşık ve tescilli olduğu yönündeydi
  • Sonraki yaklaşık 15 yıl boyunca C ve C++ karışımı kullandı ve bellekle ilgili hatalar her şirkette sürekli sorun oldu
  • Çoğu kod tabanında değişmezlikler ve varsayımlar resmen tanımlanmamıştı ama herkesin bunlara uyması bekleniyordu. Proje karmaşıklığı ve ekip büyüklüğü arttıkça bunun bir noktada başarısız olması kaçınılmazdı
  • Rust ile 1.0 çıkmadan önce, 2015'te tanıştı ve sürüm yayımlandıktan sonra daha da fazla ilgi duymaya başladı. Volvo'ya katıldığında hobi düzeyinde biraz deneyimi vardı
  • ECU projesinde Rust'ı seçmek ani bir karar değildi. Prototip oluştururken sistemi kontrol etmek için Android ile birlikte çalışabilen bir HAL'i Rust ile yazdı; derleme başarıyla tamamlanır tamamlanmaz fanın çalışmaya başlaması oldukça etkileyiciydi

İlerleme durumu

  • Güvenlik açısından kritik olmaması ve yaygın donanım üzerinde çalışması nedeniyle Rust için uygun olmasının yanı sıra, sınırlı özellik seti sayesinde proje de oldukça anlaşılırdı
  • 2020'de önce C ile ilk kavram kanıtını geliştirdikten sonra projeye Rust ile devam etti. CAN üzerinden aracın diğer sistemleriyle iletişim kurması, tüm teşhis sistemlerini uygulaması ve standart Volvo protokolünü port etmesi gerekiyordu
  • Pek çok şeyi yeniden uygulamak zorunda kaldı ancak C ve C++'a kıyasla çok daha az hata yazdığını fark etti
  • Diğer ekiplerle yapılan düzenli toplantılarda Julius neredeyse hiç sorun gündeme getirmedi ve sonuçları gösterdiğinde çalışma arkadaşları çoğu zaman etkileniyordu

Rust'ı başkalarına tavsiye eder misiniz?

  • Çok katı güvenilirlik ve erişilebilirlik gereksinimleri olan ve dağıtıma çıkardığınız şeyin gerçekten doğru olduğundan emin olmak istediğiniz her projede Rust mükemmel bir seçim
  • Cargo ve mevcut diğer araçlar sayesinde, yüksek kaliteli yazılım geliştirme döngüsünün tamamı gerçekten çok iyi bir deneyim sunuyor
  • Derlendiğinde neredeyse her zaman çalıştığı için, insanlar kodu devralıp güvenle değiştirebiliyor; bu yüzden personel devrinin yüksek olduğu ekiplerde de iyi işliyor
  • Prototipleme için ise derleyici sizi edge case'ler ve ayrıntılar üzerinde daha fazla çalışmaya zorladığından en iyi seçenek olmayabilir
  • Artık "Bunda Rust kullanabilir miyiz?" diye sormak yerine, "Neden bunda Rust kullanamayalım?" diye sorup tartışmamız gereken bir noktaya gelmiş bulunuyoruz

Önlerine çıkan eksikler nelerdi?

  • Gereksinimlere gerçekten uygun yazılım üretmek kolay olmadı; bunun başlıca nedeni araçlarla ilgili sorunlardı
  • Örneğin gömülü hedeflerde birim test çalıştırmak zordu. Kod kapsamı, çalışma zamanı profilleme, yazılım BOM'u ve lisans takibi gibi alanlarda da zorluklar yaşandı
  • Knurling projesi gibi araçlar çok yardımcı oldu ancak hâlâ kendi başınıza yapmanız gereken çok şey var

Gelecekte de Rust kullanacak mısınız?

  • Evet. Julius, diğer projelerde de Rust'ın seçilmesini aktif biçimde destekliyor
  • Şirket içinde çeşitli katmanlarda genel olarak Rust'a karşı bir heyecan olduğu görülüyor
  • Nihai proje sunumunda, yönetim tarafında Rust kullanımını daha fazla alana yayma yönünde ortak bir mutabakat oluştu

Sonuç

  • Şimdiye kadar Volvo'da Rust kullanımı büyük bir başarı gibi görünüyor. İnsanlar memnun, ürün kalitesi yüksek ve şirket gelecekte daha fazla Rust kullanmaya hazır görünüyor
  • Hâlâ yapılacak işler olsa da, Ferrocene gibi güvenlik odaklı araçların kullanılabilir hâle gelmesiyle Rust, otomotiv sektöründe kullanıma her zamankinden daha hazır durumda

GN⁺ görüşü

  • Rust ile gömülü yazılım geliştirmek, bellek güvenliği ve güvenilirlik açısından büyük avantajlar sunuyor. Özellikle güvenliğin kritik olduğu otomotiv sektöründe Rust benimsenmesinin hızlanacağı görülüyor
  • Ancak mevcut C/C++ ekosisteminin büyük mirası ve geliştirici havuzu dikkate alındığında, tam geçişten çok kademeli benimseme daha gerçekçi olacaktır. Rust ile C/C++ arasındaki birlikte çalışabilirliğin iyileştirilmesi önemli bir konu olmaya devam edecek gibi görünüyor
  • Gömülü geliştirme için Rust araç zinciri henüz kusursuz değil. Topluluk öncülüğünde hızla gelişiyor olsa da, ticari düzeyde istikrar ve destek için şirketlerin yatırım ve katılımı gerekli görünüyor
  • C++'a kıyasla hâlâ bir öğrenme eğrisi var, ancak Rust'ın güçlü tip sistemi ve sahiplik kavramı uzun vadede geliştirme verimliliğine ve kod kalitesinin artmasına katkı sağlayacaktır. Buna eğitim ve onboarding yatırımı da eşlik etmeli
  • Volvo örneğinde olduğu gibi, Rust'ı yeni projelerden başlayarak kademeli biçimde uygulamak iyi bir strateji. Mevcut kod tabanının kısmen yeniden yazılması ve Rust bileşenlerinin entegre edilmesi gerçekçi bir yaklaşım olacaktır

4 yorum

 
regentag 2024-10-10

"Ada çok fazla anlaşılmaz ve tescilli" görüşü biraz şaşırtıcı geliyor. İkisini de iş amaçlı kullanmış biri olarak, bana göre C++, Ada'dan çok daha anlaşılmaz...

Her neyse, safety-critical alanlarda da kullanılabilecek "sertifikalı" bir Rust geliştirme ortamı bir an önce çıksa harika olurdu. AdaCore bunun için uğraştığına göre, bir gün kullanabiliriz herhalde? GNAT Pro for Rust: gömülü sistemler için Rust geliştirme ortamı

 
botplaysdice 2024-10-10

Sorun sertifikasyon gibi görünüyor... çözülürse giderek daha fazla yerde kullanılmak isteneceğini düşünüyorum.

 
secret3056 2024-10-10

Bu arada Uber, Zig'i oldukça yaygın biçimde kullanıyor. Zig Foundation'ın gelirinin yarıya yakını Uber'e dayanıyor.
2024 Financial Report and Fundraiser

 
bus710 2024-10-10

Gömülü taraf değil ama, bizim şirkette de bunu kurum içinde değerlendiren ekiplerin sayısının arttığını görüyorum.
Özellikle Airflow’un Python kodu için bir interop kütüphanesini Rust ile geliştirip epey iyi sonuç aldıkları yönünde bir hikâye dolaştığı için birçok kişinin ilgisini çekiyor.