← नवीनतम पेपर
💻 computer science

RustyDL: A Program Logic for Rust

यह शोध पत्र RustyDL को प्रस्तुत करता है, जो एक नवीन स्रोत-स्तरीय प्रोग्राम लॉजिक (source-level program logic) है जिसे रस्ट (Rust) प्रोग्राम्स के मानव-इन-द-लूप (human-in-the-loop) निगमनात्मक सत्यापन (deductive verification) को सक्षम करने के लिए डिज़ाइन किया गया है, जो विशिष्ट भाषा संबंधी चुनौतियों का समाधान करता है और KeY सत्यापन टूल के भीतर एक प्रोटोटाइप कार्यान्वयन के माध्यम से इसकी व्यवहार्यता को प्रदर्शित करता है।

मूल लेखक: Daniel Drodt, Reiner Hähnle

प्रकाशित 2026-02-26
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Daniel Drodt, Reiner Hähnle

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक घर बना रहे हैं। अधिकांश प्रोग्रामिंग भाषाओं में, आप एक जनरल कॉन्ट्रैक्टर (ठेकेदार) को काम पर रखते हैं जो वादा करता है कि घर सुरक्षित है, लेकिन आपको उन पर आँख मूँदकर भरोसा करना पड़ता है। यदि वे कोई गलती करते हैं, तो बाद में आपका घर ढह सकता है, और आपको तब तक पता नहीं चलेगा कि क्यों हुआ जब तक कि बहुत देर न हो जाए।

Rust एक अलग तरह का ठेकेदार है। इसके पास एक बहुत ही सख्त, जादुई नियम पुस्तिका (जिसे "Borrow Checker" कहा जाता है) है जो यह सुनिश्चित करती है कि दो लोग एक ही समय में एक ही कील पर हथौड़ा न मारें, और कोई भी ऐसी नींव पर दीवार बनाने की कोशिश न करे जो मौजूद ही नहीं है। यह गारंटी देता है कि पहली ईंट रखने से पहले ही आपका घर सुरक्षित है।

हालाँकि, क्योंकि Rust की नियम पुस्तिका बहुत जटिल है, यह जाँच करना कि आपका विशिष्ट घर का डिज़ाइन नियमों का पालन करता है या नहीं, अत्यंत कठिन है। मौजूदा उपकरण इसे हल करने के लिए आपके Rust ब्लूप्रिंट (नक्शे) को एक अलग भाषा (जैसे "Viper" या "Why3") में अनुवादित करने की कोशिश करते हैं जिसे एक रोबोट समझ सके। समस्या यह है कि यदि रोबोट "Error" कहता है, तो आप अपने मूल Rust ब्लूप्रिंट को ठीक करने के लिए उसे आसानी से देख नहीं सकते। आप एक ऐसे अनुवाद को देखने के लिए मजबूर हो जाते हैं जिसमें शायद कुछ बारीकियां खो गई हों।

मुख्य विचार: RustyDL

यह पेपर RustyDL को पेश करता है, जो Rust कोड को सत्यापित करने का एक नया तरीका है। ब्लूप्रिंट को किसी विदेशी भाषा में अनुवाद करने के बजाय, RustyDL सीधे Rust में बात करता है।

इसे इस तरह समझें:

  • पुराने उपकरण: आप अपना Rust ब्लूप्रिंट एक अनुवादक को सौंपते हैं। अनुवादक उसे एक रोबोट को देता है। रोबोट कहता है, "किचन गलत है।" आप रोबोट की रिपोर्ट देखते हैं, लेकिन आप रोबोट की भाषा अच्छी तरह से नहीं जानते, इसलिए आप अपने मूल ब्लूप्रिंट में किचन को आसानी से ठीक नहीं कर पाते।
  • RustyDL (नया तरीका): आप ब्लूप्रिंट को Rust में ही रखते हैं। आपके पास एक मानव विशेषज्ञ ("Human-in-the-Loop") होता है जो Rust और लॉजिक (तर्क) दोनों बोल सकता है। वे आपके ब्लूप्रिंट को देख सकते हैं, रसोई की दीवार की ओर इशारा कर सकते हैं, और कह सकते हैं, "यदि आप इस बीम को यहाँ स्थानांतरित करते हैं, तो घर सुरक्षित रहेगा।" वे चरण-दर-चरण प्रमाण (proof) के साथ इंटरैक्ट कर सकते हैं।

यह कैसे काम करता है (जादुई करतब)

लेखकों को इसे सफल बनाने के लिए बहुत ही पेचीदा Rust समस्याओं को हल करना पड़ा। यहाँ उन्होंने इसे सरल उपमाओं का उपयोग करके समझाया है:

1. "स्वामित्व" (Ownership) की समस्या (गर्म आलू - Hot Potato)

Rust में, प्रत्येक डेटा का ठीक एक मालिक होता है। यदि आप एक वेरिएबल को फंक्शन को सौंपते हैं, तो मूल मालिक उसे खो देता है (इसे "move" किया जाता है)।

  • चुनौती: आप यह कैसे सिद्ध कर सकते हैं कि घर सुरक्षित है यदि प्रमाण के बीच में कमरे का मालिक बदल जाता है?
  • RustyDL का समाधान: वे "Anonymizing" (अनाम करने) की अवधारणा का उपयोग करते हैं। कल्पना कीजिए कि आपके पास एक गर्म आलू है। एक बार जब आप इसे किसी और को सौंप देते हैं, तो आपको नहीं पता होता कि आलू के अंदर क्या है। RustyDL पुराने वेरिएबल को तुरंत "अज्ञात" (unknown) मान लेता है। यह आपको गलती से उस वेरिएबल का उपयोग करने से रोकता है जो अब आपका नहीं है।

2. "Mutable Reference" की समस्या (रिमोट कंट्रोल)

Rust आपको एक टीवी (डेटा) के लिए एक "रिमोट कंट्रोल" (रेफरेंस) रखने की अनुमति देता है। आप टीवी को पकड़े बिना रिमोट का उपयोग करके चैनल बदल सकते है (डेटा बदल सकते हैं)।

  • चुनौती: यदि आपके पास एक रिमोट है, तो आप यह कैसे सिद्ध कर सकते हैं कि रिमोट पर चैनल बदलने से वास्तव में टीवी बदलता है, न कि केवल रिमोट का प्लास्टिक केस?
  • RustyDL का समाधान: उन्होंने "Mutating Updates" का आविष्कार किया। केवल "टीवी बदलें" कहने के बजाय, लॉजिक कहता है "उस विशिष्ट स्थान पर जाएँ जहाँ टीवी संग्रहीत है और उसे बदलें।" यह डेटा के लिए GPS निर्देशांक (coordinate) रखने जैसा है। जब आप रिमोट को अपडेट करते हैं, तो लॉजिक जानता है कि किस GPS निर्देशांक को अपडेट करना है।

3. "लूप" (Loop) की समस्या (अनंत गलियारा)

कोड में लूप अनंत काल तक चल सकते हैं। आप कैसे सिद्ध करेंगे कि एक लूप अंततः रुक जाएगा और सही उत्तर देगा?

  • चुनौती: Rust लूप पेचीदा होते हैं क्योंकि आप उनसे जल्दी बाहर निकल सकते हैं ( break का उपयोग करके) या यदि कुछ गलत हो जाता है तो पैनिक (क्रैश) कर सकते हैं।
  • RustyDL का समाधान: वे "Loop Scopes" का उपयोग करते हैं। कल्पना कीजिए कि एक लूप एक गलियारा है। पूरे गलियारे में चलने के बजाय, आप एक कदम का "स्नैपशॉट" लेते हैं। आप पूछते हैं: "यदि मैं एक कदम लेता हूँ, तो क्या घर अभी भी खड़ा रहेगा?" और "क्या मैंने चलना बंद करने का निर्णय लिया?" वे यह ट्रैक करने के लिए एक विशेष वेरिएबल का उपयोग करते हैं कि लूप क्यों रुका (क्या हमने काम पूरा किया, या हम बाहर निकल गए?)। यह उन्हें लाखों बार लूप चलाने के बिना यह सिद्ध करने में सक्षम बनाता है कि लूप काम करता है।

यह क्यों महत्वपूर्ण है

लेखकों ने इसे टेस्ट करने के लिए Rusty KeY (एक प्रसिद्ध टूल जिसे KeY कहा जाता है पर आधारित) नामक एक प्रोटोटाइप टूल बनाया। उन्होंने सफलतापूर्वक एक जटिल Rust कोड, जिसमें बाइनरी सर्च (Binary Search) एल्गोरिदम (कंप्यूटर विज्ञान की एक क्लासिक समस्या) शामिल है, को मात्र 2 सेकंड में सत्यापित किया।

निष्कर्ष:
RustyDL डेवलपर्स को एक सुपर-स्मार्ट, इंटरैक्टिव असिस्टेंट देने जैसा है। केवल "आपका कोड गलत है" कहकर भ्रमित करने वाला एरर मैसेज देने के बजाय, यह आपको कोड के साथ चरण-दर-चरण तर्क (logic) को समझने और यह सिद्ध करने की अनुमति देता है कि आपका जटिल, सुरक्षा-महत्वपूर्ण सॉफ्टवेयर अभेद्य है। यह "पूरी तरह से स्वचालित" (जो एक ब्लैक बॉक्स हो सकता है) और "पूरी तरह से मैनुअल" (जो बहुत धीमा है) के बीच के अंतर को पाटता है, जिससे मनुष्य और मशीनें मिलकर सुरक्षित सॉफ्टवेयर बनाने के लिए एक साथ काम कर सकते हैं।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →