1 पॉइंट द्वारा GN⁺ 2025-01-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Wild linker

    • Wild एक ऐसा टूल है जिसका लक्ष्य iterative development के लिए बेहद तेज़ linking प्रदान करना है।
    • अभी incremental linking लागू नहीं हुई है, लेकिन फिलहाल भी इसका प्रदर्शन काफ़ी तेज़ है।
    • production builds में GNU ld या LLD जैसे mature linker इस्तेमाल करने की सिफारिश की जाती है।
    • अगर development के दौरान तेज़ build time चाहिए, तो Wild को आज़माया जा सकता है।
    • यदि आप x86-64 Linux पर development कर रहे हैं, तो इसका उपयोग कर सकते हैं, और समस्या आने पर bug report करने की सिफारिश की जाती है.
  • इंस्टॉलेशन

    • pre-built binary इंस्टॉल करने के लिए release page से command कॉपी करके इस्तेमाल की जा सकती है।
    • wild binary को manually path में कॉपी भी किया जा सकता है।
    • सीधे build और install करने के लिए cargo install --locked --bin wild --git https://github.com/davidlattimore/wild.git wild command का उपयोग करें।
  • डिफ़ॉल्ट linker के रूप में उपयोग

    • Rust code build करने के लिए Wild को default linker के रूप में इस्तेमाल करना हो, तो ~/.cargo/config.toml में setting जोड़ें।
  • Q&A

    • एक और linker क्यों?
      • Mold पहले से बहुत तेज़ है, लेकिन वह incremental linking को support नहीं करता। Wild का लक्ष्य incremental linking है।
      • यह Rust में लिखा गया है, इसलिए उम्मीद है कि यह incremental linking की जटिलता को बेहतर तरीके से संभाल सकेगा।
    • जो सुविधाएँ काम करती हैं
      • वर्तमान में समर्थित platform/architecture: Linux का x86-64
      • statically linked binary, dynamically linked binary, और shared object (.so file) output कर सकता है
      • Rust proc-macros के साथ compatibility की पुष्टि हो चुकी है
      • crates.io के लोकप्रिय crates के tests पास किए हैं
      • debug information support उपलब्ध है
    • जो सुविधाएँ अभी समर्थित नहीं हैं
      • incremental linking, x86-64 के अलावा अन्य architecture support, कई linking flags का support, Mac और Windows support आदि
  • बेंचमार्क

    • Wild का लक्ष्य incremental linking के ज़रिए बहुत तेज़ प्रदर्शन देना है।
    • non-incremental linking में भी यथासंभव तेज़ प्रदर्शन का लक्ष्य है।
    • benchmark नतीजों में, debug information के बिना Wild बहुत तेज़ प्रदर्शन दिखाता है।
    • debug information शामिल होने पर प्रदर्शन कुछ कम हो जाता है।
  • Rust code linking

    • cargo test command का उपयोग करके Wild से crates को build और test किया जा सकता है।
    • Clang compiler इंस्टॉल होना चाहिए, क्योंकि GCC arbitrary linker के उपयोग की अनुमति नहीं देता।
  • योगदान

    • Wild में योगदान करने के तरीक़े की जानकारी के लिए CONTRIBUTING.md देखें।
  • स्पॉन्सरशिप

    • इस project को sponsor करने पर इस पर लंबे समय तक full-time काम करना संभव होगा।
  • लाइसेंस

    • Apache License, Version 2.0 या MIT license में से कोई एक चुना जा सकता है।

1 टिप्पणियां

 
GN⁺ 2025-01-25
Hacker News राय
  • mold ने AGPL से MIT पर लाइसेंस बदलने के बाद नए fast linker की ज़रूरत कम हो गई थी, फिर भी इस प्रोजेक्ट का आना हैरान करने वाला है। कुछ मामलों में यह mold से 2 गुना तेज़ है, इसलिए ध्यान देने लायक है

  • मैंने पहले इस प्रोजेक्ट को देखा था, लेकिन यह अभी production के लिए तैयार नहीं लगता। इसलिए मैं अब भी mold का उपयोग कर रहा हूँ

  • macOS उपयोगकर्ताओं के लिए Apple ने 1–2 साल पहले एक नया linker जारी किया था, और Rust के साथ इसका उपयोग करने पर config.toml में एक खास setting जोड़नी पड़ती है

  • यह दिलचस्प होगा अगर C/C++ compiler link चरण के बिना पूरे प्रोग्राम को एक ही unit के रूप में build करे। ज़्यादातर external libraries dynamic link होती हैं, इसलिए link प्रक्रिया हटाने पर भी समस्या नहीं होनी चाहिए

  • 2008 का Gold, 2015 का Lld, और 2021 का mold जैसे fast linkers में रुचि लगातार बढ़ रही है

  • Rust की लोकप्रियता की वजह से fast linkers में रुचि बढ़ रही है, और Rust binaries में link चरण पर काफ़ी समय लगता है। यह सिर्फ Rust की समस्या नहीं है, बल्कि static linking और LLVM optimization की वजह से भी है

  • John Levine की "Linkers and Loaders" इस विषय पर एक अच्छी किताब है, और कुछ साल पहले जब मैंने इसे पढ़ा था तो यह काफ़ी दिलचस्प लगी थी

  • wild, mold, और ld की performance तुलना से पता चलता है कि अच्छी तरह structured project में link time कोई बहुत बड़ी समस्या नहीं होती

  • performance benchmark 2020 मॉडल के System76 Lemur pro laptop पर चलाए गए थे, जिसमें 4 cores (8 threads) और 42GB RAM है

  • कुछ लोग यह भी पूछ रहे हैं कि linker आखिर होता क्या है

  • एक सवाल यह भी था कि क्या यह Linux kernel को link कर सकता है, और यह LLD के लिए एक उपयोगी milestone था