कोरुटिल्स के रस्ट कार्यान्वयन का उपयोग करने के लिए डेबियन को अपनाना

सिल्वेस्ट्रे लेड्रू, जो क्लैंग कंपाइलर का उपयोग करके डेबियन जीएनयू/लिनक्स के निर्माण के लिए जाने जाते हैं, ने रस्ट भाषा में फिर से लिखे गए उपयोगिताओं, कोरुटिल्स के वैकल्पिक सेट का उपयोग करके एक सफल प्रयोग की सूचना दी। कोरुटिल्स में सॉर्ट, कैट, चामोद, चाउन, क्रोट, सीपी, डेट, डीडी, इको, होस्टनाम, आईडी, एलएन और एलएस जैसी उपयोगिताएं शामिल हैं। कोरुटिल्स के रस्ट संस्करण के डेबियन में एकीकरण के पहले चरण के लिए, निम्नलिखित लक्ष्य निर्धारित किए गए थे:

  • डेबियन और उबंटू के लिए कोरुटिल्स के लिए एक रस्ट विकल्प पैकेज करें।
  • रस्ट-कोरुटिल्स का उपयोग करके गनोम डेस्कटॉप के साथ डेबियन को बूट करना।
  • रिपॉजिटरी से 1000 सबसे लोकप्रिय पैकेज स्थापित करना।
  • रस्ट-कोरुटिल्स वाले वातावरण में फ़ायरफ़ॉक्स, एलएलवीएम/क्लैंग और लिनक्स कर्नेल स्रोतों से निर्माण करें।

रस्ट/कोरुटिल्स के लिए 100 से अधिक पैच बनाने के बाद, हम सभी इच्छित लक्ष्यों को सफलतापूर्वक प्राप्त करने में सक्षम थे। चल रहे कार्यों में लापता उपयोगिताओं और विकल्पों का कार्यान्वयन, कोड की गुणवत्ता और एकरूपता में सुधार, परीक्षण सूट विकसित करना और जीएनयू कोरुटिल्स से परीक्षण सूट चलाने के दौरान होने वाली दुर्घटनाओं को खत्म करना शामिल है (141 में से 613 परीक्षण अब तक सफलतापूर्वक चल रहे हैं) ).

रस्ट-कोरुटिल्स पैकेज बनाते समय, कोरुटिल्स पैकेज को प्रतिस्थापित नहीं करने, बल्कि उन्हें समानांतर में काम करने की क्षमता प्रदान करने का निर्णय लिया गया था। रस्ट भाषा में उपयोगिता विकल्प /usr/lib/cargo/bin/ में स्थापित किए गए हैं और इस निर्देशिका को PATH पर्यावरण चर में जोड़कर सक्रिय किए गए हैं। रस्ट-कोरुटिल्स पैकेज बनाना रस्ट और विभिन्न छोटे क्रेट पैकेजों सहित सभी बिल्ड निर्भरताओं को रिपॉजिटरी में डाउनलोड करने की आवश्यकता से जटिल था।

बूट छवि बनाना कोई समस्या नहीं थी, लेकिन जंग-कोरुटिल्स वाले वातावरण के लिए पैकेजों को अनुकूलित करने के लिए बहुत काम की आवश्यकता होती थी, क्योंकि कई पोस्ट-इंस्टॉल स्क्रिप्ट कोरुटिल्स सेट से उपयोगिताओं को कॉल करती थीं। समस्याओं की सबसे बड़ी संख्या आवश्यक विकल्पों की कमी के कारण हुई, उदाहरण के लिए, "सीपी" उपयोगिता में "--आर्काइव" और "--नो-डेरेफेरेंस" विकल्प नहीं थे, "एलएन" "-" का समर्थन नहीं करता था। सापेक्ष" विकल्प, mktemp ने "-t" का समर्थन नहीं किया, सिंक में "-fs", इंस्टॉल में - "--मालिक" और "-समूह"। व्यवहार में अंतर के कारण अन्य समस्याएं उत्पन्न हुईं, उदाहरण के लिए, इंस्टॉल उपयोगिता इनपुट फ़ाइल के रूप में /dev/null को निर्दिष्ट करने का समर्थन नहीं करती थी, mkdir में "-parent" के बजाय "--parents" विकल्प था, आदि।

बड़े कोड आधारों की असेंबली का परीक्षण करते समय, कोई बड़ी समस्या उत्पन्न नहीं हुई। फ़ायरफ़ॉक्स और एलएलवीएम/क्लैंग का निर्माण करते समय, पायथन स्क्रिप्ट और सेमेक का उपयोग किया जाता है, इसलिए कोरुटिल्स को बदलने से उन पर कोई प्रभाव नहीं पड़ता है। लिनक्स कर्नेल का निर्माण अपेक्षाकृत सुचारू रूप से हुआ, केवल दो समस्याएं सामने आईं: प्रतीकात्मक लिंक के साथ चाउन का उपयोग करते समय त्रुटि आउटपुट और एलएन उपयोगिता में "-एन" विकल्प की कमी।

स्रोत: opennet.ru

एक टिप्पणी जोड़ें