19 poin oleh GN⁺ 2024-10-10 | 4 komentar | Bagikan ke WhatsApp
  • Kisah adopsi Rust di Volvo: Rust diam-diam sudah digunakan di perusahaan yang sangat besar
  • Julius Gustavsson telah berperan sebagai arsitek perangkat lunak utama untuk ECU (electronic control unit) prosesor berdaya rendah Volvo sejak 2019
  • ECU ini bertanggung jawab atas manajemen daya kendaraan pada level (rendah), dan meskipun kendaraan listrik memiliki baterai tegangan tinggi berkapasitas besar, jalur 12V konvensional tetap ada
  • ECU berperan membangunkan sistem kelistrikan saat diperlukan. Misalnya, sistem harus menyala ketika mendekati kendaraan
  • Julius sudah mengenal Rust sejak bergabung dengan Volvo pada 2017 dan melihat potensinya untuk menggantikan kode C dan C++ yang ada
  • Prosesor berdaya rendah ini sangat cocok untuk menggunakan Rust, karena tidak diklasifikasikan sebagai komponen yang kritikal terhadap keselamatan dan menggunakan prosesor ARM Cortex-M, sehingga tidak ada hambatan teknis maupun birokratis untuk memakai Rust
  • Saat ini EX90 dan Polestar 3 diproduksi di lini perakitan yang tidak akan berjalan tanpa Rust

Mengapa memilih Rust

  • Pekerjaan pertama Julius adalah membangun perangkat lunak kontrol lalu lintas udara yang banyak menggunakan Ada. Saat itu, konsensus di perusahaannya adalah bahwa Ada terlalu sulit dipahami dan terlalu proprietari
  • Setelah itu, selama sekitar 15 tahun ia menggunakan campuran C dan C++, dan di setiap perusahaan bug terkait memori selalu menjadi masalah
  • Sebagian besar codebase terdiri dari invariants dan asumsi yang tidak pernah diformalkan, tetapi tetap harus dipatuhi semua orang. Semakin kompleks proyek dan semakin besar timnya, pada titik tertentu hal itu pasti gagal
  • Ia mengenal Rust pada 2015, sebelum rilis 1.0, dan menjadi semakin tertarik setelah perilisannya. Saat bergabung dengan Volvo, ia sudah punya sedikit pengalaman sebagai hobi
  • Pemilihan Rust untuk proyek ECU tidak terjadi secara tiba-tiba. Saat membuat prototipe, ia mencoba membangun HAL yang dapat beroperasi bersama Android dengan Rust untuk mengendalikan sistem, dan begitu kompilasi berhasil, kipas langsung mulai berputar—sangat mengesankan

Perkembangan

  • Bukan hanya karena tidak kritikal terhadap keselamatan dan berjalan di hardware umum sehingga cocok untuk Rust, tetapi juga karena proyek ini sangat lugas berkat set fitur yang terbatas
  • Pada 2020, setelah membuat proof of concept pertama dalam C, proyek dilanjutkan dengan Rust. Sistem harus berkomunikasi dengan sistem kendaraan lain melalui CAN, serta mengimplementasikan semua sistem diagnostik dan mem-porting protokol standar Volvo
  • Banyak hal memang harus diimplementasikan ulang, tetapi mereka mendapati bahwa jumlah bug yang ditulis jauh lebih sedikit dibandingkan C dan C++
  • Dalam rapat rutin dengan tim lain, Julius hampir tidak pernah mengangkat masalah, dan saat menunjukkan hasil, rekan-rekannya sering terkesan

Apakah Anda akan merekomendasikan Rust kepada orang lain?

  • Untuk proyek apa pun yang memiliki persyaratan keandalan dan ketersediaan yang sangat ketat, dan yang ingin benar-benar yakin bahwa apa yang didistribusikan memang benar, Rust adalah pilihan yang sangat baik
  • Berkat Cargo dan berbagai alat lain yang tersedia, seluruh siklus pengembangan perangkat lunak berkualitas tinggi menjadi pengalaman yang sangat baik
  • Karena ketika berhasil dikompilasi hampir selalu langsung bekerja, orang lain bisa mengambil alih kode dan memodifikasinya dengan aman, sehingga sangat cocok juga untuk tim dengan tingkat turnover tinggi
  • Untuk prototyping, ini mungkin bukan pilihan terbaik karena compiler memaksa pengembang bekerja lebih banyak pada edge case dan detail
  • Kita sudah sampai pada titik di mana alih-alih bertanya, "Bisakah kita memakai Rust untuk ini?", kita seharusnya bertanya, "Mengapa kita tidak bisa memakai Rust untuk ini?" lalu mendiskusikannya

Kekurangan apa yang menjadi hambatan?

  • Tidak mudah membuat perangkat lunak yang benar-benar sesuai dengan kebutuhan, dan ini terutama masalah tooling
  • Misalnya, sulit menjalankan unit test pada target embedded. Code coverage, runtime profiling, software BOM, pelacakan lisensi, dan lain-lain juga menghadirkan kesulitan
  • Alat seperti proyek Knurling sangat membantu, tetapi masih banyak hal yang harus dikerjakan sendiri

Apakah Anda akan menggunakan Rust ke depannya?

  • Ya. Julius secara aktif mendukung pemilihan Rust untuk proyek-proyek lain juga
  • Tampaknya ada antusiasme yang luas terhadap Rust di berbagai lapisan dalam perusahaan
  • Dalam presentasi proyek final, ada kesepakatan umum di kalangan manajemen untuk mengeksplorasi penggunaan Rust di lebih banyak tempat

Kesimpulan

  • Sejauh ini, penggunaan Rust di Volvo tampaknya merupakan keberhasilan besar. Orang-orang puas, kualitas produk tinggi, dan perusahaan tampak siap menggunakan Rust lebih banyak lagi ke depan
  • Masih ada lebih banyak pekerjaan yang harus dilakukan, tetapi dengan tersedianya alat yang berfokus pada keselamatan seperti Ferrocene, Rust lebih siap daripada sebelumnya untuk digunakan di industri otomotif

Pendapat GN⁺

  • Mengembangkan perangkat lunak embedded dengan Rust memiliki keuntungan besar dari sisi keamanan memori dan keandalan. Terutama di industri otomotif yang sangat memperhatikan keselamatan, adopsi Rust tampaknya akan semakin cepat
  • Namun, mengingat besarnya legacy yang ada di ekosistem C/C++ serta jumlah pengembangnya, pendekatan bertahap kemungkinan lebih realistis daripada migrasi penuh. Peningkatan interoperabilitas antara Rust dan C/C++ tampaknya akan menjadi tugas penting
  • Toolchain Rust untuk pengembangan embedded masih belum sempurna. Meskipun berkembang cepat berkat dorongan komunitas, investasi dan partisipasi perusahaan tampaknya tetap dibutuhkan untuk mencapai stabilitas dan dukungan tingkat komersial
  • Dibandingkan C++, memang masih ada learning curve, tetapi sistem tipe Rust yang kuat dan konsep ownership berpotensi meningkatkan produktivitas pengembangan dan kualitas kode dalam jangka panjang. Investasi pada edukasi dan onboarding juga perlu menyertainya
  • Seperti pada kasus Volvo, menerapkan Rust secara bertahap mulai dari proyek baru adalah strategi yang baik. Penulisan ulang sebagian codebase lama dan integrasi komponen Rust akan menjadi pendekatan yang realistis

4 komentar

 
regentag 2024-10-10

Pendapat bahwa "Ada terlalu sulit dipahami dan terlalu proprietari" agak mengejutkan bagi saya. Dari sudut pandang seseorang yang pernah menggunakan keduanya untuk pekerjaan, menurut saya C++ jauh lebih sulit dipahami daripada Ada...

Bagaimanapun, saya berharap lingkungan pengembangan Rust yang "tersertifikasi" dan bisa dipakai bahkan untuk sistem safety-critical segera hadir. Karena AdaCore sedang berupaya, mungkin suatu saat nanti kita bisa memakainya, bukan? GNAT Pro for Rust: lingkungan pengembangan Rust untuk embedded

 
botplaysdice 2024-10-10

Masalahnya ada pada sertifikasi... kalau itu teratasi, sepertinya akan makin banyak yang ingin menggunakannya di berbagai tempat.

 
secret3056 2024-10-10

Di sisi lain, Uber menggunakan Zig dengan cukup luas. Hampir setengah dari pendapatan Zig Foundation bergantung pada Uber.
2024 Financial Report and Fundraiser

 
bus710 2024-10-10

Ini memang bukan ranah embedded, tetapi bahkan di perusahaan kami sendiri pun tampaknya makin banyak tim yang meninjaunya secara internal.
Khususnya, karena beredar cerita bahwa mereka mendapatkan hasil yang cukup menguntungkan dengan mengembangkan library interop untuk kode Python di Airflow menggunakan Rust, banyak yang jadi tertarik.