HeadlinesBriefing HeadlinesBriefing.com

GitHub headstart Rust बिल्ड 54% तेज़

Hacker News •
×

अपनी निर्भरताओं के टाइप-चेकिंग पूरा करने से पहले आश्रित crates शुरू करें। प्रत्येक crate उन crates के पूरी तरह जाँचे जाने (फ़ंक्शन बॉडी सहित) की प्रतीक्षा करता है, इससे पहले कि वह शुरू हो। उसे स्वयं टाइप-चेक करने के लिए उन बॉडी की आवश्यकता नहीं है। यह निर्भरता के इंटरफ़ेस, उसकी .rmeta फ़ाइल में मेटाडेटा के विरुद्ध संकलन करता है। Headstart rustc को इंटरफ़ेस जाँचे जाने के तुरंत बाद एक प्रारंभिक मेटाडेटा फ़ाइल लिखने देता है, और cargo को उस पर आश्रितों को शुरू करने देता है। फिर प्रत्येक crate के बॉडी की जाँच की जाती है जबकि डाउनस्ट्रीम crates पहले से संकलन कर रहे होते हैं।

cargo check: आश्रित प्रारंभिक मेटाडेटा पर पूर्णता तक चलते हैं। cargo build: आश्रित प्रारंभिक मेटाडेटा पर अपना सारा विश्लेषण करते हैं, फिर कोड उत्पन्न करने से पहले निर्भरता के पूर्ण मेटाडेटा की प्रतीक्षा करते हैं। प्रतीक्षा करते समय, वे अपना कार्य स्लॉट वापस दे देते हैं। यदि किसी बॉडी में त्रुटि है, तो बिल्ड अभी भी उस त्रुटि के साथ विफल होता है, आज के समान निदान और निकास स्थिति के साथ; केवल प्रगति पंक्तियाँ और JSON संदेशों का क्रॉस-crate क्रम भिन्न हो सकता है।

लागत डाउनस्ट्रीम काम है जो फेंक दिया जाता है, त्रुटियाँ थोड़ी देर से रिपोर्ट की जाती हैं, और एक बार में अधिक मेमोरी उपयोग में होती है (docs/design.md देखें)। rustc के डिफ़ॉल्ट फ्रंट एंड पर, headstart 13 वास्तविक परियोजनाओं (rust-analyzer, zed, bevy, lemmy, polars और अन्य) की स्वच्छ बिल्ड को cargo check के लिए 54% तक तेज़, और cargo build के लिए 42% तक तेज़ बनाता है। कोई धीमा नहीं है। समानांतर फ्रंट एंड (-Zthreads=8) के साथ, जो कुछ समान भूमि को कवर करता है, यह 25% तक जोड़ता है। वे 16-कोर संख्याएँ हैं।

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित