Mold Linker Version 3.0.0 रिलीज़ – Rust में पुनर्लिखित

उच्च-प्रदर्शन ELF linker mold ने अपना codebase C/C++ से Rust में स्थानांतरित करते हुए version 3.0 जारी किया है, और इसमें बड़े language models की पर्याप्त मदद बताई गई है। टिप्पणीकार Rust के लाभ—मेमोरी सुरक्षा, अधिक सुरक्षित concurrency, और बढ़ता ecosystem support—की तुलना कमजोरियों जैसे अस्पष्ट architectures के लिए सीमित समर्थन और कहीं अधिक जटिल bootstrapping से करते हैं, जो minimal trusted code से सब कुछ पुनर्निर्माण करने वाले security-focused Linux distributions के लिए एक बड़ा मुद्दा है। यह बदलाव अन्य तेज़ linkers और Zig जैसे systems languages से तुलना भी उत्पन्न करता है, साथ ही Rust के dependency footprint और reproducible, supply-chain-secure builds पर उसके प्रभाव को लेकर व्यापक चिंताएँ भी उठाता है।

Rust पुनर्लेखन के लिए प्रेरणा

  • कुछ लोगों का अनुमान है कि मुख्य कारण मेमोरी सुरक्षा, दूषित इनपुट को मज़बूती से संभालना, और खासकर अधिक सुरक्षित/सूक्ष्म concurrency हैं।
  • अन्य लोग तर्क देते हैं कि खराब इनपुट के विरुद्ध C/C++ को मज़बूत बनाना संभव है, लेकिन कई पोस्ट करने वाले जवाब देते हैं कि बड़े C/C++ codebases को समय के साथ सुरक्षित सिद्ध करना बहुत महंगा और त्रुटिपूर्ण है।

पुनर्लेखन में AI/LLM का उपयोग

  • कई टिप्पणीकार commits में LLM को श्रेय देने की बात और उन टिप्पणियों के लिंक नोट करते हैं जहाँ लेखक ने कथित तौर पर LLM सहायता के उपयोग की पुष्टि की है।
  • इस पर बहस है कि यह वास्तव में “rewrite” है या “transpile”; आम सहमति इस ओर झुकती है कि अब Rust प्राथमिक, मानव-संपादित स्रोत है।

Rust बनाम C/C++/Zig और सुरक्षा/प्रदर्शन

  • कई लोग Rust को “fearless concurrency” सक्षम करने और बग्स की पूरी श्रेणियों को हटाने वाला मानते हैं (use-after-free, data races, double free)।
  • कुछ लोग ज़ोर देते हैं कि bounds checks Rust की सुरक्षा गारंटियों का केवल छोटा हिस्सा हैं।
  • Zig को “better C” के रूप में चर्चा किया जाता है, लेकिन उसमें Rust की compile-time memory guarantees नहीं हैं; safe बनाम fast build modes और checks बंद करने से उत्पन्न UB चिंता के विषय हैं।
  • अन्य लोग गैर-तकनीकी कारकों पर ध्यान देते हैं: Rust का ecosystem maturation, उद्योग का समर्थन, और adoption बनाम Zig की अपेक्षिक युवा अवस्था।

प्लैटफ़ॉर्म और Backend समर्थन

  • Rust के platform coverage पर चर्चा: LLVM बनाम GCC backends।
  • LLVM में कई legacy/obscure architectures नहीं हैं जिन्हें GCC समर्थन देता है (जैसे Alpha, Itanium, PA‑RISC, SuperH); Rust का GCC backend इस अंतर को आंशिक रूप से संबोधित करता बताया गया है।

Wild Linker से तुलना

  • Wild को एक और बहुत तेज़ ELF linker के रूप में वर्णित किया गया है, जो मुख्यतः incremental linking पर केंद्रित है (हालाँकि कथित तौर पर यह अभी true incremental linking का समर्थन नहीं करता)।
  • Benchmarks को काफ़ी करीब बताया गया है; Wild अक्सर तेज़ है, लेकिन वे “trade blows” करते हैं, और दोनों पारंपरिक linkers से बहुत आगे हैं।

Linux Distro Bootstrapping और Supply-Chain Security

  • एक अत्यधिक reproducible, from-scratch-bootstrapped distro के co-maintainer ने mold2 (C/C++) को शुरुआती bootstrap linker के रूप में उपयोग किया और Rust rewrite से असंतुष्ट है।
  • उनका मॉडल: न्यूनतम machine code से लेकर tiny C compilers → GCC/LLVM → Rust तक सब कुछ bootstrap करना, सख़्त no-binary, deterministic, hermetic builds के साथ।
  • Rust को bootstrap करना अत्यंत महंगा बताया गया है (बड़ा dependency graph: Python, Perl, OpenSSL, LLVM, आदि), इसलिए Rust में mold होने से यह Rust को स्वयं तेज़ करने के लिए chain में बहुत देर से आता है।
  • अन्य लोग समाधान सुझाते हैं: prebuilt binaries का उपयोग, caching, stage0/stage2 Rust compilers, या mold2 का उपयोग जारी रखना; distro maintainer इन्हें अपनी threat model (किसी भी prior binaries पर भरोसा न करना) को कमज़ोर करने वाला मानकर अस्वीकार करता है।

Open-Source रखरखाव और Backward Compatibility

  • downstream expectations और upstream freedom के बीच तनाव:
    • कुछ लोग तर्क देते हैं कि mold ने एक वास्तविक user need को “unsolved” छोड़ दिया; वे अधिक consultation और धीमे बदलाव चाहते थे।
    • अन्य लोग ज़ोर देते हैं कि maintainers पर license से परे कोई गारंटी नहीं होती, और यदि उपयोगकर्ता niche behaviors पर निर्भर हैं तो वे fork कर सकते हैं।
    • बड़ी rewrites को नए projects बनाम major-version bumps के रूप में करने पर बहस।

Rust Bootstrapping Tools

  • mrustc (Rust-to-C bootstrap compiler) को पर्याप्त आधुनिक Rust तक पहुँचने का एक तरीका बताया गया है ताकि फिर self-host किया जा सके।
  • कुछ लोग full bootstrap के “obsession” से हैरान हैं; अन्य लोग तेज़ी से बढ़ते supply-chain attacks को इसका औचित्य मानते हैं।

अन्य अवलोकन

  • rewrite की गति और Rust की systems language के रूप में स्थापित स्थिति पर सकारात्मक प्रतिक्रियाएँ।
  • ध्यान दिया गया कि mold3 का Cargo.lock कुछ Rust projects की तुलना में अपेक्षाकृत छोटा है, लेकिन भारी crate उपयोग security claims को कमज़ोर कर सकता है।