आर्किटेक्चर निर्णय रिकॉर्ड: Rust प्रोग्रामिंग भाषा
निर्णय संख्या: AR-001
निर्णय का शीर्षक: Rust प्रोग्रामिंग भाषा को अपनाना
तिथि: 1 दिसंबर, 2021
अवस्था: स्वीकृत
समस्या कथन
जैसे-जैसे हम सॉफ़्टवेयर एप्लिकेशन विकसित करते जा रहे हैं, हमने देखा है कि संभावित सुरक्षा कमज़ोरियों को कम करना और रनटाइम त्रुटियों को रोकना अधिकाधिक चुनौतीपूर्ण होता जा रहा है। C और C++ जैसी मौजूदा प्रोग्रामिंग भाषाओं के साथ हमें बफ़र ओवरफ़्लो, मेमोरी लीक और अपरिभाषित व्यवहार जैसी समस्याएँ झेलनी पड़ रही हैं, जिनसे एप्लिकेशन क्रैश होते हैं। हमें ऐसी प्रोग्रामिंग भाषा चाहिए जो मेमोरी सुरक्षा की गारंटी दे और प्रदर्शन-महत्वपूर्ण एप्लिकेशन को सहारा देने के लिए पर्याप्त कुशल हो।
विचारणीय बातें
कई प्रोग्रामिंग भाषाएँ मौजूदा समस्याओं को हल करने के लिए डिज़ाइन की गई हैं। इनमें से, Rust प्रोग्रामिंग भाषा ने अपनी अनूठी डिज़ाइन विशेषताओं के कारण डेवलपर समुदाय का काफ़ी ध्यान खींचा है। विचारणीय बातों में शामिल हैं:
मेमोरी सुरक्षा और संरक्षा
प्रदर्शन और दक्षता
समुदाय समर्थन और अपनाया जाना
सीखने की प्रक्रिया
उपकरण और पारिस्थितिकी तंत्र
मौजूदा सॉफ़्टवेयर प्रणालियों के साथ अनुकूलता।
बाधाएँ
नई प्रोग्रामिंग भाषा अपनाने के लिए डेवलपरों का पुनः प्रशिक्षण आवश्यक है, जिसमें समय और संसाधन लगते हैं। भाषा को मौजूदा विकास कार्य-प्रवाह में एकीकृत करना चुनौती हो सकती है। हमें मौजूदा प्रणालियों के साथ अनुकूलता सुनिश्चित करनी होगी और निरंतरता बनाए रखने के लिए ब्रेकिंग परिवर्तनों से बचना होगा।
क्रियान्वयन
हमारी विकास टीम Rust प्रोग्रामिंग भाषा सीखने और उससे परिचित होने के लिए प्रशिक्षण लेगी।
हम अपनी विकास आवश्यकताओं के लिए उसकी अनुकूलता और उपयुक्तता का मूल्यांकन करने के लिए परीक्षण के तौर पर Rust में एक नई परियोजना बनाएँगे।
हम धीरे-धीरे C और C++ में लिखी मौजूदा प्रणालियों को Rust में स्थानांतरित करेंगे।
हम उपलब्ध उपकरणों और लाइब्रेरी की खोज के लिए Rust समुदाय के साथ सहयोग करेंगे जो हमारे विकास कार्य-प्रवाह को बेहतर बना सकें।
हम Rust के प्रदर्शन की निगरानी करेंगे और नियमित रूप से उसकी तुलना मौजूदा प्रोग्रामिंग भाषाओं के प्रदर्शन से करेंगे।
हम दीर्घकालिक दृष्टिकोण अपनाएँगे जो प्रशिक्षण, एकीकरण की लागतों और Rust के उपयोग के संभावित लाभों के बीच संतुलन बनाए।
तर्क
हमने Rust इसलिए अपनाया क्योंकि इसकी अनूठी विशेषताएँ प्रदर्शन और दक्षता बनाए रखते हुए मेमोरी सुरक्षा और संरक्षा की गारंटी देने के लिए डिज़ाइन की गई हैं। Rust की मज़बूत टाइप प्रणाली, बॉरो चेकर (borrow checker) और मेमोरी सुरक्षा की अवधारणाएँ इसे प्रदर्शन-महत्वपूर्ण और सुरक्षा-महत्वपूर्ण एप्लिकेशन विकसित करने के लिए अत्यधिक उपयुक्त बनाती हैं। इसके अलावा, Rust का डेवलपरों का महत्वपूर्ण समुदाय है, जिससे हमें उपकरणों, लाइब्रेरी और पारिस्थितिकी तंत्र की विस्तृत श्रृंखला तक पहुँच मिलती है जो हमारे विकास कार्य-प्रवाह को सहारा देती है। हालाँकि Rust के साथ सीखने की प्रक्रिया है, हमारा मानना है कि Rust अपनाने के लाभ लागत से अधिक हैं और निरंतर वृद्धि और नवाचार के लिए उत्कृष्ट अवसर प्रदान करते हैं।
परिणाम
Rust अपनाने के लिए डेवलपरों को प्रशिक्षित करने और भाषा को मौजूदा विकास कार्य-प्रवाह में एकीकृत करने में समय और संसाधनों का महत्वपूर्ण निवेश करना होगा।
Rust अपनाने से मौजूदा प्रणालियों के साथ कुछ हद तक अनुकूलता की समस्याएँ हो सकती हैं, जिनके लिए रीफ़ैक्टरिंग और संशोधन की आवश्यकता होगी।
Rust अपनाने से रोमांचक परियोजनाओं पर काम करना चाहने वाले Rust डेवलपरों को आकर्षित करके हमारी परियोजना में योगदान दे सकने वाले डेवलपरों की संख्या बढ़ सकती है।
मौजूदा भाषाओं की तुलना में अपनाने से प्रदर्शन, दक्षता और सुरक्षा में सुधार हो सकता है।
अंत में, Rust अपनाने से हमारे एप्लिकेशन में सुरक्षा कमज़ोरियाँ घटने का संभावित लाभ मिलता है।