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

Building Extensible Program Logics through Effect Handlers

यह शोधपत्र एक आधारभूत तर्क (base logic) के भीतर इफेक्ट हैंडलर्स (effect handlers) को लागू करके विस्तार योग्य प्रोग्राम लॉजिक्स बनाने का एक दृष्टिकोण प्रस्तावित करता है ताकि कंकरेंसी (concurrency) और क्रैश रिकवरी (crash recovery) जैसे जटिल व्यवहारों को मॉडल किया जा सके, जिससे एक मॉड्यूलर और पुन: प्रयोज्य तरीके से अभिव्यंजक तर्क नियमों (reasoning rules) और रिलेशनल रिफाइनमेंट्स (relational refinements) का व्युत्पन्न सक्षम हो सके।

मूल लेखक: Zichen Zhang, Simon Oddershede Gregersen, Joseph Tassarotti

प्रकाशित 2026-07-15
📖 8 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Zichen Zhang, Simon Oddershede Gregersen, Joseph Tassarotti

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

कल्पना कीजिए कि आप एक डिजिटल किले की रक्षा के लिए एक अत्यंत सुरक्षित किला (super-secure fortress) बनाने की कोशिश कर रहे हैं। कंप्यूटर विज्ञान की दुनिया में, इन किलों को प्रोग्राम लॉजिक (program logics) कहा जाता है। ये नियमों के ऐसे समूह हैं जिनका उपयोग गणितज्ञ और प्रोग्रामर यह सिद्ध करने के लिए करते हैं कि कोई सॉफ्टवेयर कभी क्रैश नहीं होगा, गुप्त जानकारी लीक नहीं करेगा, या कुछ भी अजीब नहीं करेगा।

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

बड़ा विचार: "इफेक्ट हैंडलर" (Effect Handler) टूलकिट

यह शोध पत्र, जिसे ज़ीचेन झांग, साइमन ओडर्सहेडे ग्रेसेरेन और जोसेफ टसारोटी ने लिखा है, इन किलों को बनाने का एक नया तरीका प्रस्तावित करता है। इफेक्ट हैंडलर का उपयोग करके ईंटों को हाथ से तराशने के बजाय, वे एक जादुई उपकरण का उपयोग करते हैं जिसे इफेक्ट हैंडलर (effect handlers) कहा जाता है।

एक इफेक्ट हैंडलर को एक गेम के कस्टमाइज़ेबल नियम पुस्तिका (customizable rulebook) की तरह समझें। एक मानक वीडियो गेम में, कूदने या गोली चलाने के नियम गेम इंजन में पहले से ही कोड किए गए होते हैं। लेकिन इफेक्ट हैंडलर्स के साथ, गेम इंजन कहता है, "मुझे अभी नहीं पता कि 'कूदना' क्या है; मैं बस किसी के निर्देश देने का इंतज़ार करूँगा।" फिर, एक प्रोग्रामर एक छोटा सा स्क्रिप्ट (एक हैंडलर) लिख सकता है जो कहता है, "ठीक है, जब खिलाड़ी कूदने की कोशिश करे, तो मैं उसे एक सेकंड के लिए हवा में तैरा दूँगा।"

लेखकों ने FicusLang नामक एक छोटा, खाली भाषा बनाया जिसमें कोई नियम नहीं है, सिवाय इस "निर्देशों के लिए प्रतीक्षा करें" वाले फीचर के। फिर, उन्होंने चीज़ों के लिए नियम बनाने के लिए हैंडलर लिखे, जैसे कि:

  • मेमोरी (Memory): प्रोग्राम चीज़ों को कैसे याद रखता है (जैसे कि एक स्टिकी नोट)।
  • कन्करेंट थ्रेड्स (Concurrent Threads): प्रोग्राम एक साथ कई काम कैसे करता है (जैसे कि एक शेफ कई पैन के साथ काम कर रहा हो)।
  • क्रैश (Crashes): क्या होता है जब बिजली चली जाती है और वापस आती है।
  • डिस्ट्रीब्यूटेड सिस्टम्स (Distributed Systems): कंप्यूटर एक अस्थिर नेटवर्क पर एक-दूसरे से कैसे बात करते हैं।

जादुई ट्रिक: ऊपर की ओर निर्माण करना (Building Up)

सबसे शानदार बात यह है कि उन्होंने केवल इन नियमों को बनाया ही नहीं; उन्होंने उन्हें सिद्ध भी किया। उन्होंने खाली भाषा से शुरुआत की, "मेमोरी" के लिए एक हैंडलर लिखा, और फिर उनके मेमोरी हैंडलर के सही ढंग से काम करने को सिद्ध करने के लिए Ficus नामक एक लॉजिक सिस्टम का उपयोग किया। एक बार जब यह सिद्ध हो गया, तो वे उस "मेमोरी" हैंडलर का उपयोग एक "कन्करेंसी" (concurrency) हैंडलर बनाने के लिए कर सकते थे।

यह एक घर बनाने जैसा है। पहले, आप सिद्ध करते हैं कि आपकी नींव ठोस है। फिर, आप उस ठोस नींव का उपयोग करके पहली मंजिल बनाते हैं। एक बार जब पहली मंजिल सुरक्षित सिद्ध हो जाती है, तो आप उसका उपयोग दूसरी मंजिल बनाने के लिए करते हैं। क्योंकि उन्होंने इसे इस तरह से बनाया, वे फीचर्स को आसानी से मिला और मिला सकते थे। यदि आप पूल और गैरेज दोनों वाला घर चाहते हैं, तो आप पूरे आधार को फिर से बनाए बिना बस "पूल हैंडलर" और "गैरेज हैंडलर" को जोड़ सकते हैं।

मजबूत नियम और नई तरकीबें

चूंकि उन्होंने इन नियमों को ज़मीन से (ground up) हैंडलर्स का उपयोग करके बनाया, इसलिए वे पिछले तरीकों की तुलना में अधिक मजबूत नियम बना सके।

  • "पॉज़" (Pause) की ट्रिक: मानक कन्करेंट प्रोग्रामिंग में, कंप्यूटर किसी भी सूक्ष्म क्षण पर दूसरे कार्य पर स्विच करने के लिए किसी कार्य को रोक सकता है। यह संभावनाओं का एक बड़ा ढेर पैदा करता है जिसे ट्रैक करना कठिन होता है। लेखकों का हैंडलर केवल तभी कार्य बदलता है जब कोई विशिष्ट "इफेक्ट" (जैसे फ़ाइल पढ़ने का अनुरोध) होता है। यह अराजकता को कम करता है। उन्होंने सिद्ध किया कि यह "केवल पूछे जाने पर रुकने" वाला तरीका "कभी भी रुकने" वाले तरीके जितना ही सुरक्षित है, लेकिन इसे समझना बहुत आसान है।
  • "क्रिस्टल बॉल" (Prophecy Variables): कभी-कभी, किसी प्रोग्राम को सुरक्षित सिद्ध करने के लिए, आपको यह जानने की आवश्यकता होती है कि एक रैंडम घटना क्या करेगी, इससे पहले कि वह घटित हो। लेखकों ने एक "क्रिस्टल बॉल" इफेक्ट हैंडलर बनाया। यह तर्क (proof) को अनुमति देता है कि, "मैं भविष्यवाणी करता हूँ कि यह रैंडम नंबर 5 होगा," और फिर बाद में जाँच करता है कि क्या वह सही था। उन्होंने दिखाया कि आप एक विशाल ग्लोबल क्रिस्टल बॉल से स्थानीय (local) क्रिस्टल बॉल्स बना सकते हैं, और यहाँ तक कि उन्हें मेमोरी ऑपरेशन्स के लिए स्वचालित रूप से भी प्रकट कर सकते हैं बिना प्रोग्रामर को अतिरिक्त कोड लिखे।

"रिलेशनल" लॉजिक: जुड़वाँ परीक्षण (The Twin Test)

यह शोध पत्र एक नया टूल भी पेश करता है जिसे RelFicus कहा जाता है। कल्पना कीजिए कि आपके पास दो समान जुड़वाँ हैं, प्रोग्राम A और प्रोग्राम B। आप यह सिद्ध करना चाहते हैं कि यदि आप उन्हें समान इनपुट देते हैं, तो वे हमेशा एक जैसा व्यवहार करेंगे, भले ही उनमें से एक दूसरे का थोड़ा अलग संस्करण हो।

RelFicus एक ऐसा लॉजिक है जो आपको इन दोनों प्रोग्रामों को अपने दिमाग में (घोस्ट स्टेट या काल्पनिक संसाधनों का उपयोग करके) अगल-बगल चलाने की अनुमति देता है ताकि वे जुड़वाँ हैं, यह सिद्ध किया जा सके। यह सिद्ध करने के लिए यह अत्यंत महत्वपूर्ण है कि उनका नया "पॉज़-ओनली-वेन-आस्क्ड" कन्करेंसी हैंडलर वास्तव में सुरक्षित है। उन्होंने इस "जुड़वाँ परीक्षण" का उपयोग यह सिद्ध करने के लिए किया कि अतिरिक्त "पॉज़ पॉइंट्स" (preemption) जोड़ने से प्रोग्राम के परिणाम में कोई बदलाव नहीं आएगा, जो उनके सरल, अधिक उपयोग में आसान मॉडल को सही ठहराता है।

उन्होंने क्या नहीं किया (और जिसे उन्होंने खारिज कर दिया)

यह जानना महत्वपूर्ण है कि यह पेपर क्या नहीं है।

  • वे यह नहीं कह रहे हैं कि पुराने तरीके से लॉजिक बनाने ( "हाथ से तराशी गई ईंट" विधि) का उपयोग करना बेकार है। वे केवल यह कह रहे हैं कि इसे दोबारा उपयोग करना और इस पर निर्माण करना कठिन है।
  • वे इस विचार को खारिज करते हैं कि इन लॉजिक्स को बनाने के लिए आपको जटिल, अमूर्त गणितीय संरचनाओं (जैसे कि पिछले काम में उल्लेखित "ITrees") को समझने की आवश्यकता है। वे तर्क देते हैं कि उनका दृष्टिकोण अधिक सुलभ है क्योंकि यह उन मानक प्रोग्रामिंग अवधारणाओं (हैंडलर्स) का उपयोग करता है जो डेवलपर्स के लिए पहले से ही परिचित हैं।
  • वे यह दावा नहीं करते कि उन्होंने कंप्यूटर सुरक्षा की हर समस्या को हल कर दिया है। उन्होंने विशेष रूप से मेमोरी, कन्करेंसी, क्रैश और डिस्ट्रीब्यूटेड सिस्टम्स के लिए हैंडलर्स बनाए हैं, लेकिन वे स्वीकार करते हैं कि अन्य फीचर्स के लिए नए हैंडलर्स की आवश्यकता हो सकती है।

वे कितने आश्वस्त हैं?

लेखक बहुत आश्वस्त हैं, लेकिन वे सटीक भी हैं। उन्होंने केवल यह "सुझाव" नहीं दिया कि यह काम कर सकता है; उन्होंने इसे सिद्ध किया।

  • उन्होंने पूरे लॉजिक सिस्टम को Rocq Prover नामक एक टूल (एक कंप्यूटर प्रोग्राम जो गणितीय प्रमाणों की जाँच करता है) में लिखा।
  • उन्होंने Adequacy नामक एक प्रमेय (theorem) को सिद्ध किया, जो गारंटी देता है कि यदि उनका लॉजिक कहता है कि एक प्रोग्राम सुरक्षित है, तो वह प्रोग्राम वास्तव में बिना अटके चलेगा।
  • उन्होंने सिद्ध किया कि उनका नया कन्करेंसी मॉडल मानक, अधिक जटिल मॉडलों के समकक्ष है।
  • उन्होंने दिखाया कि उनके "क्रिस्टल बॉल" (prophecy) फीचर्स एक ग्लोबल वर्जन से प्राप्त करके कैसे काम करते हैं, जिससे यह सिद्ध होता है कि गणित सही है।

निष्कर्ष (The Takeaway)

यह शोध पत्र कंप्यूटर वैज्ञानिकों को गीली मिट्टी के ढेर के बजाय लेगो ब्रिक्स (Lego bricks) का एक सेट देने जैसा है। पहले, यदि आप एक नए प्रकार का किला बनाना चाहते थे, तो आपको मिट्टी खुद मिलानी पड़ती थी। अब, आपके पास "मेमोरी," "क्रैश," और "नेटवर्क्स" के लिए पहले से बने, पूर्व-परीक्षित ईंटें हैं। आप उन्हें एक साथ जोड़ सकते हैं, और गणित गारंटी देता है कि किला गिरेगा नहीं। यह जटिल, सुरक्षित सॉफ्टवेयर बनाना एक व्यक्तिगत कला परियोजना के बजाय एक सहयोगात्मक निर्माण स्थल जैसा बनाता है जहाँ हर कोई सर्वोत्तम हिस्सों को पुन: उपयोग कर सकता है।

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

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

Digest आज़माएँ →