1 पॉइंट द्वारा GN⁺ 2024-09-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Rust को फिर से लिखना

  • Rust programming language पहली पीढ़ी के प्रोडक्ट जैसी महसूस होती है
  • Rust की शुरुआती आकर्षण: algebraic types, memory safety, performance में कोई गिरावट नहीं, modern package manager
  • 4 साल इस्तेमाल करने के बाद, Rust हमेशा परफेक्ट नहीं है
  • भाषा का विकास बहुत धीमा हो गया है
  • कई unstable features stable Rust में शामिल नहीं हैं

एक शानदार भाषा

  • Rust compiler को fork करके नया "seph" edition बनाना चाहता हूँ
  • Rust की मौजूदा सुविधाओं को बनाए रखते हुए नई सुविधाएँ जोड़ी जा सकती हैं

function traits (effects)

  • Rust में struct पर trait define किए जाते हैं, लेकिन functions पर भी trait define करने की ज़रूरत है
  • इससे function की अलग-अलग विशेषताएँ बताई जा सकती हैं
    • function panic करता है या नहीं
    • क्या उसका stack size fixed है
    • function अंत तक चलता है या बीच में await करता है
    • function pure है या नहीं
    • function unsafe code चलाता है या नहीं
    • function termination की गारंटी देता है या नहीं

compile-time features

  • कई Rust projects बहुत सारे third-party crates का उपयोग करते हैं
  • ये crates supply chain risk बढ़ाते हैं
  • security-sensitive function calls को explicitly allow करने वाली सुविधा जोड़ने का प्रस्ताव
  • fs_write जैसी सुविधा को call करने के लिए explicit अनुमति देनी होगी

Pin, Move और struct borrowing

  • Pin, Rust के borrow checker की समस्याओं को हल करने के लिए एक जटिल hack है
  • Pin की जगह Move marker trait का उपयोग करना अधिक उचित होगा
  • struct fields को borrowed state में mark करने के लिए syntax जोड़ने का प्रस्ताव
  • Move marker trait और Mover trait लाने का प्रस्ताव

compile-time

  • Zig के comptime feature को लाकर Rust macro language को replace करना
  • compile-time पर code चलाने के लिए एक छोटा interpreter जोड़ना
  • Rust की macro language की जगह Rust खुद का उपयोग करना

छोटे बदलाव

  • impl<T: Copy> for Range<T> में सुधार
  • associated types वाले derive में सुधार
  • if-let expressions में logical AND support
  • raw pointers की usability बेहतर करना
  • सभी built-in collection types में Allocator argument जोड़ना

समापन विचार

  • asynchronous features में भी सुधार की ज़रूरत है, लेकिन उसके लिए अलग पोस्ट चाहिए
  • ज़्यादातर बदलाव मौजूदा Rust के साथ compatible नहीं हैं
  • Rust का नया edition ज़रूरी हो सकता है
  • GitHub RFC process से थकने के बजाय compiler को सीधे fork करने पर विचार कर रहा हूँ

GN⁺ का सार

  • शुरुआती आकर्षण के बावजूद Rust परफेक्ट नहीं है
  • भाषा का विकास धीमा हो गया है और कई unstable features stable Rust में शामिल नहीं हैं
  • function traits, compile-time features, Pin और Move में सुधार जैसी कई प्रस्तावनाएँ हैं
  • ये प्रस्ताव Rust की usability को काफ़ी बेहतर बना सकते हैं
  • समान सुविधाओं वाली दूसरी भाषा के रूप में Zig का उल्लेख किया गया है

1 टिप्पणियां

 
GN⁺ 2024-09-27
Hacker News राय
  • Rust RFC process पर राय

    • भाषा की consistency और predictability बनाए रखने के लिए Rust core team का नई features जोड़ना कठिन बनाना सही फैसला है
    • Swift के मामले में, बहुत सी नई features आने से वह जटिल हो गया, और अंत में उसे छोड़ना पड़ा
    • Rust को जितना संभव हो उतना संक्षिप्त बनाए रखना महत्वपूर्ण है
  • Rust की dependency समस्या

    • Cargo-watch crate का उदाहरण देते हुए, यह एक सरल file-watching app है, लेकिन dependencies की वजह से इसकी code lines 40 लाख तक पहुँच जाती हैं
  • Rust की मौजूदा स्थिति

    • Rust अब "विस्तृत adoption के लिए काम" वाले चरण में है
    • feature development का धीमा होना स्वाभाविक और स्वस्थ है, और गलत design choices इससे बड़ा नुकसान पहुँचा सकती हैं
    • Rust की आकर्षण नई features से ज़्यादा memory safety और GC के बिना production-ready language होने में है
  • Rust को फिर से लिखने पर राय

    • Rust को Rust में फिर से लिखना एक meta-satirical joke जैसा लगा
  • Rust की decision process पर असंतोष

    • धीमी decision process को लेकर असंतोष है, लेकिन यह technical problem से ज़्यादा लोगों और समय की समस्या है
    • कुछ पुरानी features ठहरी हुई हैं, लेकिन कई features को stable नहीं किया जाना है
  • Josh Triplett की टिप्पणी

    • उन्होंने इशारा किया कि एक खास उदाहरण गलत था, और संबंधित link साझा किया
  • Rust की complexity पर राय

    • Rust में पहले से ही बहुत सी features हैं, लेकिन फिर भी कुछ लोग और features चाहते हैं
    • Zig ज़्यादा सरल, तेज़ है, और उसकी community में drama कम है
  • Rust की गति पर राय

    • project mature होने के साथ मौजूदा features को polish करने में बहुत मेहनत लगती है
    • teams के बीच collaboration मुश्किल हो गया है, और इसे सुधारने के लिए project goals मौजूद हैं
  • Mutex सुधार पर राय

    • Rust के synchronization primitives को बेहतर बनाने के लिए काफी प्रयास हुए हैं
    • async functions जैसी features जोड़ी गई हैं, और ये अधिक जटिल features लागू करने की नींव बनती हैं
  • Rust की feature development speed पर राय

    • कुछ लोग शिकायत करते हैं कि भाषा बहुत तेज़ या बहुत धीमी गति से विकसित हो रही है
    • कुछ features धीमी चल रही हैं, लेकिन बहुत सी गतिविधियाँ जारी हैं
  • Rust की feature design पर राय

    • function traits जैसी features पर हाल ही में बड़ा design exploration हुआ है
    • compile-time features को language level पर हल नहीं किया जा सकता, और WebAssembly जैसे solutions अधिक संभावित हैं
  • Rust के borrow checker की समस्या

    • self-referential structures को समझना बहुत कठिन समस्या है
    • partial borrowing को support करने का तरीका पहले से पता है, लेकिन समस्या इसे type system में उजागर करने की है
  • Rust की compile-time features

    • macro rules को अधिक शक्तिशाली बनाने के लिए एक RFC लिखा गया है
    • programmatic parsing के लिए और अधिक काम की आवश्यकता है
  • Rust की unstable features

    • कई unstable features हैं, और उन्हें व्यवस्थित करना आवश्यक है
  • Rust की development speed पर राय

    • Mozilla के अलग होने से project धीमा हुआ, लेकिन गलत रास्ते पर जाने से यह बेहतर है