Rust 1.90: rustc x86_64 Linux पर डिफ़ॉल्ट लिंकर्स के रूप में LLD पर स्विच करता है

RustBuild ToolsDevOps

प्रमुख अपडेट

Rust प्रोजेक्ट ने घोषणा की है कि Rust 1.90.0 स्थिर (जो 2025-09-18 के लिए निर्धारित है) से rustc डिफ़ॉल्ट रूप से x86_64-unknown-linux-gnu लक्ष्य के लिए LLVM LLD लिंकर्स का उपयोग करेगा। बेंचमार्क में, यह परिवर्तन इंक्रीमेंटल निर्माणों के लिए लिंकिंग समय को 7× तक कम करता है (ripgrep उदाहरण ने इंक्रीमेंटल डिबग रीबिल्ड के लिए ~40% अंत-से-अंत गति में सुधार और पूर्ण डिबग निर्माणों के लिए ~20% सुधार दिखाया)। नया डिफ़ॉल्ट पहले से ही 1.90 बीटा पर उपलब्ध है — परियोजनाओं को अब बीटा के खिलाफ परीक्षण करना चाहिए और यदि वे लिंकर्स में गिरावट का अवलोकन करते हैं तो मुद्दे दर्ज करें।

यह क्यों महत्वपूर्ण है

यह Linux Rust डेवलपर्स और CI सिस्टम के लिए एक व्यावहारिक, बहुत महसूस किया गया प्रदर्शन लाभ है: लिंकिंग अक्सर बड़े बाइनरी और डिबग निर्माणों के लिए निर्माण समय का एक प्रमुख हिस्सा होती है, इसलिए तेज लिंकिंग सीधे संपादन-संकलन चक्रों और CI रन समय को छोटा करती है। टीमों के लिए इसका मतलब हो सकता है कि छोटे CI कतारें, कम रनर समय और लागत, और बिना कोड बदले तेज डेवलपर पुनरावृत्ति। चूंकि rust-lld टूलचेन के साथ भेजा जाता है, इसलिए आपको लाभ उठाने के लिए सिस्टम लिंकर्स स्थापित करने की आवश्यकता नहीं है; हालाँकि, यह परिवर्तन लक्ष्य-विशिष्ट (x86_64 Linux) है और अन्य प्लेटफार्मों के लिए एक वैश्विक टूलचेन व्यवहार नहीं है।

एक छोटी संगतता सतह है: LLD कुछ दुर्लभ मामलों में GNU ld के साथ बाइट-फॉर-बाइट संगत नहीं है, इसलिए कुछ क्रेट्स जो विरासत लिंकर्स की सेमांटिक्स पर निर्भर करते थे, उन्हें लिंक फ्लैग (या ऑप्ट-आउट) की आवश्यकता हो सकती है। यदि आप समस्याओं का सामना करते हैं, तो आप RUSTFLAGS या .cargo/config.toml को -Clinker-features=-lld सेट करके प्रति-परियोजना पिछले व्यवहार पर लौट सकते हैं (या अपने CI निर्माण में समकक्ष फ्लैग जोड़ें)। व्यावहारिक रूप से, अनुशंसित तात्कालिक क्रियाएँ हैं: CI में 1.90 बीटा पर अपने रिपॉजिटरी का परीक्षण करें, CI में उपयोग किए जाने वाले किसी भी पिन किए गए Docker छवियों/रस्टअप टूलचेन कॉन्फ़िगरेशन को बीटा/स्थिर चैनल पर सत्यापन के लिए अपडेट करें, और केवल तभी CI टेम्पलेट्स में एक ऑप्ट-आउट फ्लैग जोड़ें जब कोई वास्तविक लिंकर्स असंगतता प्रकट हो। पहले से ही संसाधन-सीमित लंबे समय तक चलने वाले निर्माणों की निगरानी करें, क्योंकि LLD की समानांतरता लिंकिंग के दौरान CPU उपयोग को बढ़ा सकती है; यदि यह आपके रनर्स को प्रभावित करता है, तो समानांतरता को सीमित करें या अस्थायी रूप से ऑप्ट-आउट का उपयोग करें।

यह परिवर्तन Linux Rust विकास के लिए एक कम जोखिम, उच्च पुरस्कार उपकरण सुधार है जिसमें स्पष्ट संचालन और डेवलपर उत्पादकता लाभ हैं; CI में बीटा चलाकर तैयारी करें, लिंक-समय गिरावट के लिए नज़र रखें, और जब आवश्यक हो तो प्रलेखित ऑप्ट-आउट फ्लैग का उपयोग करें।

स्रोत

आगे पढ़ें