फ़ाइल सिस्टम में 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 टिप्पणियां
Hacker News टिप्पणियाँ
हर file system inode lifecycle को अलग तरह से मैनेज करता है, इसलिए उसे एक ही function से मैनेज करना abstraction layer के विपरीत है
यह सवाल है कि क्या Rust को C calls को आसान बनाने के लिए बदलाव की ज़रूरत है
यह स्पष्ट नहीं है कि Rust API, C API को wrap कर रही है या उसे reimplement कर रही है
kernel में Rust जोड़ने से अतिरिक्त complexity आती है
चर्चा बहुत सभ्य है
Linux kernel में ज़्यादा options होना हमेशा फायदेमंद है
unsafeblocks के बिना C जो कुछ करता है वह सब नहीं किया जा सकताlwn.net पेज के नीचे कुछ comments असभ्य हैं
C API और Rust API के बीच नामों के mismatch पर चर्चा