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

फ़ाइल सिस्टम में Rust का उपयोग

लक्ष्य

  • Rust के type system का उपयोग करके compile time पर अधिक त्रुटियाँ पकड़ना
  • resource cleanup जैसे कार्यों को automate करके C code की तुलना में उत्पादकता बढ़ाना
  • memory से जुड़ी vulnerabilities कम करना और debugging समय घटाना

Rust के फ़ायदे

  • Rust undefined behavior को हटाता है और code के अंदर क्या हो रहा है यह देखने की क्षमता देता है
  • Rust में लिखे code की correctness सिद्ध की जा सकती है, जिससे feature development में बाधा डालने वाले bugs कम होते हैं

Rust type system का उदाहरण

  • iget_locked() function की requirements जटिल हैं
  • Rust में इसे get_or_create_inode() function से बदला जा सकता है, और type system के माध्यम से इन requirements को enforce किया जा सकता है

API नाम बदलने पर चर्चा

  • C API और Rust API के नामों में असंगति की समस्या
  • यह मौजूदा developer community के लिए अपरिचित हो सकता है
  • नामों को एक जैसा रखना ज़रूरी हो सकता है

सामान्य समस्याएँ

  • यह तय करना ज़रूरी है कि Rust abstractions सभी kernel file systems में सामान्य रूप से उपयोग होंगी या केवल Rust में लिखे सरल file systems पर ध्यान दिया जाएगा
  • C code के evolve होने पर Rust code के साथ synchronization की समस्या हो सकती है

object lifecycle की समस्या

  • object lifecycle file system के अनुसार अलग हो सकती है
  • यदि Rust API में एक ही lifecycle encode की जाती है, तो वह कुछ file systems में काम नहीं कर सकती

Rust bindings की समस्याएँ

  • सभी file systems तुरंत Rust में migrate नहीं होंगे
  • C code के evolve होने पर Rust bindings टूट सकती हैं
  • Rust bindings टूटने पर यह समस्या Rust-for-Linux developers के हिस्से में आएगी

निष्कर्ष

  • Rust bindings का विकास जारी रखते हुए C code को evolve होने देना चाहिए
  • Rust type system में बहुत अधिक अर्थ encode करना अच्छा है या बुरा, यह समय के साथ स्पष्ट होगा

GN⁺ का सार

  • फ़ाइल सिस्टम में Rust को अपनाना memory safety और उत्पादकता बढ़ाने में बहुत मददगार हो सकता है
  • Rust type system के माध्यम से जटिल API requirements को enforce किया जा सकता है, जिससे code की correctness बढ़ती है
  • अगर मौजूदा C developers Rust नहीं सीखते, तो synchronization जैसी कठिनाइयाँ पैदा हो सकती हैं
  • Rust bindings टूटने पर उन्हें ठीक करना Rust-for-Linux developers की ज़िम्मेदारी होगी
  • समान कार्यक्षमता वाले प्रोजेक्ट्स में Google का Fuchsia OS शामिल है

1 टिप्पणियां

 
GN⁺ 2024-07-16
Hacker News टिप्पणियाँ
  • हर file system inode lifecycle को अलग तरह से मैनेज करता है, इसलिए उसे एक ही function से मैनेज करना abstraction layer के विपरीत है

    • inode lifecycle को file system के हिसाब से मैनेज किया जाना चाहिए
  • यह सवाल है कि क्या Rust को C calls को आसान बनाने के लिए बदलाव की ज़रूरत है

    • Rust और C की interoperability को लेकर स्पष्ट समझ की कमी है
    • C++ और Objective C में header files include करके function call कर सकते हैं
    • Swift, Objective C files include करके C को call कर सकता है
    • Rust को kernel developers के हिसाब से ढालने के बजाय, language को खुद थोड़ा और flexible होने की ज़रूरत है
  • यह स्पष्ट नहीं है कि Rust API, C API को wrap कर रही है या उसे reimplement कर रही है

    • अगर यह reimplement कर रही है, तो C API जैसे ही नाम इस्तेमाल करना समस्या पैदा कर सकता है
  • kernel में Rust जोड़ने से अतिरिक्त complexity आती है

    • अगर नया OS शुरू से लिखा जाए, तो language की सभी features का उपयोग किया जा सकता है
    • लेकिन मौजूदा विशाल codebase में जोड़ने पर अतिरिक्त समस्याएँ आती हैं
  • चर्चा बहुत सभ्य है

    • नकारात्मक tone से सहमति नहीं है
    • संबंधित लोगों ने समस्याओं को स्पष्ट रूप से रखा है, यह आशावादी बात है
  • Linux kernel में ज़्यादा options होना हमेशा फायदेमंद है

    • Rust हर समस्या का समाधान नहीं है
    • Rust एक सुरक्षित programming model देता है, लेकिन इसकी सीमाएँ हैं
    • memory problem? Rust इस्तेमाल करो!
    • concurrency problem? Rust पर switch करो!
    • लेकिन unsafe blocks के बिना C जो कुछ करता है वह सब नहीं किया जा सकता
    • Rust नया perspective दे सकता है, लेकिन यह पूर्ण समाधान नहीं है
  • lwn.net पेज के नीचे कुछ comments असभ्य हैं

    • सोचिए, open source project में योगदान देने वाले किसी व्यक्ति से कहा जाए: "विज्ञान एक-एक अंतिम संस्कार के साथ आगे बढ़ता है"
  • C API और Rust API के बीच नामों के mismatch पर चर्चा

    • legacy naming conventions की कठिनाइयाँ
    • वही नाम बनाए रखने या नए नामों से wrap करने, दोनों तरीके हैं
    • naming करना कठिन काम है