19 पॉइंट द्वारा GN⁺ 2024-10-10 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • Volvo में Rust अपनाने का मामला: एक बहुत बड़ी कंपनी चुपचाप Rust का उपयोग कर रही है
  • Julius Gustavsson 2019 से Volvo के low-power processor ECU (electronic control unit) के मुख्य software architect की भूमिका निभा रहे हैं
  • यह ECU वाहन के (कम) power management को संभालता है, और electric vehicles में बड़ी high-voltage battery होने के बावजूद पारंपरिक 12V line अब भी मौजूद रहती है
  • ECU ज़रूरत पड़ने पर electrical systems को जगाने का काम करता है। उदाहरण के लिए, जब आप वाहन के पास आते हैं तो system को चालू होना चाहिए
  • Julius को 2017 में Volvo में शामिल होने के समय से ही Rust की जानकारी थी, और उन्होंने पुराने C और C++ code को बदलने की इसकी क्षमता देखी थी
  • low-power processor Rust के लिए एकदम उपयुक्त साबित हुआ, क्योंकि इसे safety-critical component के रूप में वर्गीकृत नहीं किया गया था, और यह ARM Cortex-M processor था, इसलिए Rust के उपयोग में न तकनीकी और न ही प्रशासनिक बाधाएँ थीं
  • फिलहाल EX90 और Polestar 3 ऐसी assembly line पर बन रहे हैं जहाँ Rust के बिना काम नहीं चलता

Rust चुनने की वजह

  • Julius की पहली नौकरी में ऐसा air traffic control software बनता था जिसमें Ada का बहुत उपयोग होता था। उस समय कंपनी की आम राय थी कि Ada बहुत कठिन और proprietary है
  • उसके बाद लगभग 15 साल तक उन्होंने C और C++ के मिश्रण के साथ काम किया, और हर कंपनी में memory-related bugs हमेशा समस्या बने रहे
  • ज़्यादातर codebase ऐसे थे जहाँ invariants और assumptions औपचारिक रूप से लिखे नहीं गए थे, लेकिन सभी से उनका पालन करने की अपेक्षा थी। जैसे-जैसे project की जटिलता और team का आकार बढ़ता है, किसी बिंदु पर यह मॉडल टूटना ही था
  • उन्हें 2015 में, Rust 1.0 रिलीज़ से पहले, Rust के बारे में पता चला और रिलीज़ के बाद उनकी रुचि और बढ़ी। Volvo में शामिल होने तक उनके पास hobby के रूप में थोड़ा अनुभव था
  • ECU project में Rust चुनना कोई अचानक लिया गया फैसला नहीं था। prototype बनाते समय उन्होंने Rust में Android के साथ interoperable HAL बनाकर system को नियंत्रित किया, और compile सफल होते ही fan चलने लगा—यह बहुत प्रभावशाली था

प्रगति

  • यह सिर्फ इसलिए Rust के लिए उपयुक्त नहीं था कि यह safety-critical नहीं था और सामान्य hardware पर चलता था, बल्कि इसकी सीमित feature set की वजह से project भी बहुत सीधा-सादा था
  • 2020 में उन्होंने C में पहला proof of concept बनाया, फिर project को Rust में आगे बढ़ाया। इसे CAN के जरिए वाहन के दूसरे systems से communicate करना था, सभी diagnostic systems लागू करने थे, और standard Volvo protocols को port करना था
  • बहुत कुछ दोबारा implement करना पड़ा, लेकिन उन्होंने पाया कि C और C++ की तुलना में वे कहीं कम bugs लिख रहे थे
  • दूसरी teams के साथ नियमित meetings में Julius बहुत कम समस्याएँ उठाते थे, और जब वे परिणाम दिखाते थे तो सहकर्मी अक्सर प्रभावित होते थे

क्या आप दूसरों को Rust की सिफारिश करेंगे?

  • जिन projects में reliability और availability की बहुत कड़ी आवश्यकताएँ हों, और जहाँ आप deployment के सही होने को लेकर वास्तव में आश्वस्त होना चाहते हों, वहाँ Rust एक उत्कृष्ट विकल्प है
  • Cargo और उपलब्ध अन्य tools की वजह से high-quality software development cycle का पूरा अनुभव वास्तव में बहुत अच्छा हो जाता है
  • जब code compile हो जाता है, तो वह लगभग हमेशा काम करता है, इसलिए दूसरे लोग codebase संभालकर उसमें सुरक्षित रूप से बदलाव कर सकते हैं; इस वजह से यह high-turnover teams में भी अच्छा काम करता है
  • prototyping के लिए यह हमेशा सबसे अच्छा विकल्प नहीं हो सकता, क्योंकि compiler आपको edge cases और details पर अधिक काम करने के लिए मजबूर करता है
  • अब समय आ गया है कि "क्या हम इसमें Rust इस्तेमाल कर सकते हैं?" पूछने के बजाय "हम इसमें Rust क्यों नहीं इस्तेमाल कर सकते?" पूछा जाए और उसी पर चर्चा हो

कौन-सी कमियाँ रास्ते में बाधा बनीं?

  • आवश्यकताओं के अनुरूप software बनाना आसान नहीं था, और इसकी मुख्य वजह tools से जुड़ी समस्याएँ थीं
  • उदाहरण के लिए, embedded target पर unit tests चलाना कठिन था। code coverage, runtime profiling, software BOM, और license tracking भी मुश्किल थे
  • Knurling project जैसे tools से काफी मदद मिली, लेकिन फिर भी बहुत कुछ खुद करना पड़ता है

क्या आप आगे भी Rust का उपयोग करेंगे?

  • हाँ। Julius सक्रिय रूप से इस बात का समर्थन कर रहे हैं कि दूसरे projects में भी Rust चुना जाए
  • ऐसा लगता है कि कंपनी के कई स्तरों पर Rust के लिए व्यापक उत्साह मौजूद है
  • अंतिम project presentation में management के बीच इस बात पर साझा सहमति थी कि और अधिक जगहों पर Rust के उपयोग की संभावनाएँ तलाशनी चाहिए

निष्कर्ष

  • अब तक Volvo में Rust का उपयोग बड़ी सफलता जैसा दिखता है। लोग खुश हैं, product quality ऊँची है, और कंपनी आगे और अधिक Rust उपयोग करने के लिए तैयार लगती है
  • अभी बहुत काम बाकी है, लेकिन Ferrocene जैसे safety-focused tools उपलब्ध होने के साथ Rust पहले से कहीं अधिक automotive industry के उपयोग के लिए तैयार दिखता है

GN⁺ की राय

  • Rust का उपयोग करके embedded software development करना memory safety और reliability के लिहाज़ से बड़ा लाभ देता है। खासकर safety-critical automotive industry में Rust अपनाने की रफ्तार बढ़ती दिख रही है
  • लेकिन मौजूदा C/C++ ecosystem की विशाल legacy और developer pool को देखते हुए, पूरी तरह बदलाव के बजाय चरणबद्ध अपनाना अधिक व्यावहारिक होगा। Rust और C/C++ के बीच interoperability में सुधार एक महत्वपूर्ण चुनौती रहेगा
  • embedded development के लिए Rust toolchain अभी पूरी तरह परिपूर्ण नहीं है। community के नेतृत्व में यह तेज़ी से विकसित हो रहा है, लेकिन commercial-grade stability और support के लिए कंपनियों के निवेश और भागीदारी की ज़रूरत दिखती है
  • C++ की तुलना में learning curve अभी भी मौजूद है, लेकिन Rust का मजबूत type system और ownership का concept लंबे समय में development productivity और code quality सुधारने में योगदान देगा। इसके साथ training और onboarding में निवेश भी होना चाहिए
  • Volvo के उदाहरण की तरह, नए projects से धीरे-धीरे Rust लागू करना एक अच्छी रणनीति है। मौजूदा codebase के आंशिक rewrite और Rust components का integration एक व्यावहारिक approach होगा

4 टिप्पणियां

 
regentag 2024-10-10

"Ada बहुत जटिल और proprietary है" जैसी राय थोड़ी अप्रत्याशित लगती है। दोनों को काम में इस्तेमाल कर चुका हूँ, उस नज़रिए से देखें तो मुझे Ada की तुलना में C++ कहीं ज़्यादा जटिल लगता है...

खैर, उम्मीद है कि Safety-Critical उपयोग के लिए भी इस्तेमाल किया जा सकने वाला "certified" Rust development environment जल्द आएगा। AdaCore इस पर काम कर रहा है, तो शायद किसी दिन इसे इस्तेमाल कर पाएँगे? GNAT Pro for Rust: एम्बेडेड के लिए Rust development environment

 
botplaysdice 2024-10-10

सर्टिफिकेशन ही समस्या है... अगर यह हल हो जाए, तो लगता है कि लोग इसे धीरे-धीरे और ज़्यादा जगहों पर इस्तेमाल करना चाहेंगे।

 
secret3056 2024-10-10

दूसरी ओर, Uber, Zig का काफ़ी व्यापक रूप से उपयोग करता है। Zig Foundation की आय का लगभग आधे से थोड़ा कम हिस्सा Uber पर निर्भर है.
2024 Financial Report and Fundraiser

 
bus710 2024-10-10

यह embedded क्षेत्र की बात नहीं है, लेकिन हमारी कंपनी के अंदर भी इसे आंतरिक रूप से परखने वाली टीमों की संख्या बढ़ती दिख रही है.
खासकर Airflow के Python code के लिए एक interop library को Rust में विकसित करके काफ़ी अच्छा फायदा मिला है, ऐसी बातें फैल रही हैं, इसलिए बहुत लोग इसमें दिलचस्पी ले रहे हैं.