वेबअसेंबली WASI प्रीव्यू 2 की प्रगति और निहितार्थों का अन्वेषण करें। जानें कि यह उन्नत सिस्टम इंटरफ़ेस क्रॉस-प्लेटफ़ॉर्म विकास और एप्लिकेशन पोर्टेबिलिटी में कैसे क्रांति ला रहा है।
वेबअसेंबली WASI प्रीव्यू 2: उन्नत सिस्टम इंटरफ़ेस का गहन विश्लेषण
वेबअसेंबली (Wasm) आधुनिक सॉफ्टवेयर विकास के लिए एक महत्वपूर्ण तकनीक के रूप में उभरा है, जो एक सैंडबॉक्स्ड वातावरण में लगभग-नेटिव प्रदर्शन का वादा करता है। इसका प्रारंभिक ध्यान मुख्य रूप से वेब ब्राउज़रों पर था, लेकिन ब्राउज़र के बाहर एक पोर्टेबल और सुरक्षित रनटाइम की आवश्यकता ने वेबअसेंबली सिस्टम इंटरफ़ेस (WASI) के निर्माण को जन्म दिया। WASI का उद्देश्य Wasm मॉड्यूल के लिए अंतर्निहित ऑपरेटिंग सिस्टम के साथ बातचीत करने के लिए एक मानकीकृत इंटरफ़ेस प्रदान करना है, जिससे उन्हें विभिन्न प्लेटफार्मों पर चलने में सक्षम बनाया जा सके। WASI प्रीव्यू 2 इस लक्ष्य को प्राप्त करने की दिशा में एक महत्वपूर्ण कदम का प्रतिनिधित्व करता है। यह व्यापक गाइड डेवलपर्स और व्यापक प्रौद्योगिकी परिदृश्य के लिए WASI प्रीव्यू 2 के संवर्द्धन और निहितार्थों की पड़ताल करता है।
WASI क्या है?
वेबअसेंबली सिस्टम इंटरफ़ेस (WASI) वेबअसेंबली के लिए एक मॉड्यूलर सिस्टम इंटरफ़ेस है। इसे वेबअसेंबली मॉड्यूल को ऑपरेटिंग सिस्टम संसाधनों, जैसे कि फ़ाइलें, नेटवर्क सॉकेट और घड़ियों तक पहुँचने के लिए एक सुरक्षित और पोर्टेबल तरीका प्रदान करने के लिए डिज़ाइन किया गया है। पारंपरिक सिस्टम कॉल के विपरीत, WASI क्षमता-आधारित सुरक्षा पर ध्यान केंद्रित करता है, जिसका अर्थ है कि एक Wasm मॉड्यूल केवल उन संसाधनों तक पहुँच सकता है जिनका उपयोग करने की उसे स्पष्ट रूप से अनुमति दी गई है।
यह दृष्टिकोण पारंपरिक नेटिव अनुप्रयोगों की तुलना में सुरक्षा में नाटकीय रूप से सुधार करता है। एक WASI एप्लिकेशन सिस्टम पर किसी भी संसाधन तक आसानी से नहीं पहुँच सकता है; उसे ऐसा करने की क्षमता स्पष्ट रूप से प्रदान की जानी चाहिए। यह हमले की सतह को कम करता है और Wasm कोड चलाने के सुरक्षा निहितार्थों के बारे में तर्क करना आसान बनाता है।
WASI क्यों महत्वपूर्ण है
WASI आधुनिक सॉफ्टवेयर विकास में पोर्टेबिलिटी की एक महत्वपूर्ण आवश्यकता को संबोधित करता है। परंपरागत रूप से, अनुप्रयोगों को विशिष्ट ऑपरेटिंग सिस्टम और आर्किटेक्चर के लिए संकलित किया जाता है। यह विखंडन पैदा करता है और विभिन्न वातावरणों के बीच अनुप्रयोगों को आसानी से स्थानांतरित करने की क्षमता को सीमित करता है। WASI एक मानकीकृत इंटरफ़ेस प्रदान करके एक समाधान प्रदान करता है जो अंतर्निहित ऑपरेटिंग सिस्टम को सारगर्भित करता है। प्रमुख लाभों में शामिल हैं:
- पोर्टेबिलिटी: WASI Wasm मॉड्यूल को किसी भी प्लेटफ़ॉर्म पर चलने की अनुमति देता है जो WASI का समर्थन करता है, भले ही अंतर्निहित ऑपरेटिंग सिस्टम या आर्किटेक्चर कुछ भी हो।
- सुरक्षा: WASI का क्षमता-आधारित सुरक्षा मॉडल Wasm मॉड्यूल की सिस्टम संसाधनों तक पहुँच को सीमित करता है, जिससे सुरक्षा कमजोरियों का खतरा कम हो जाता है।
- प्रदर्शन: Wasm लगभग-नेटिव प्रदर्शन प्रदान करता है, जो इसे प्रदर्शन-महत्वपूर्ण अनुप्रयोगों के लिए उपयुक्त बनाता है।
- मॉड्यूलरिटी: WASI को मॉड्यूलर होने के लिए डिज़ाइन किया गया है, जिससे डेवलपर्स को उन सिस्टम इंटरफ़ेस के विशिष्ट सेट को चुनने की अनुमति मिलती है जिनकी उनके एप्लिकेशन को आवश्यकता होती है।
ये लाभ WASI को सर्वरलेस कंप्यूटिंग, एज कंप्यूटिंग, एम्बेडेड सिस्टम और डेस्कटॉप अनुप्रयोगों सहित अनुप्रयोगों की एक विस्तृत श्रृंखला के लिए एक आकर्षक तकनीक बनाते हैं।
पेश है WASI प्रीव्यू 2
WASI प्रीव्यू 2 प्रारंभिक WASI विनिर्देश (प्रीव्यू 1) का एक महत्वपूर्ण अपग्रेड है। यह कई प्रमुख सुधारों का परिचय देता है, जिसमें एसिंक्रोनस ऑपरेशंस पर आधारित एक नया I/O मॉडल, नेटवर्किंग के लिए बेहतर समर्थन और बेहतर सुरक्षा सुविधाएँ शामिल हैं। ये संवर्द्धन प्रीव्यू 1 में सीमाओं को संबोधित करते हैं और अधिक जटिल और मजबूत WASI अनुप्रयोगों का मार्ग प्रशस्त करते हैं।
प्रीव्यू 2 में सबसे उल्लेखनीय परिवर्तनों में से एक एसिंक्रोनस I/O मॉडल में बदलाव है। प्रीव्यू 1 में, I/O ऑपरेशन सिंक्रोनस थे, जो ब्लॉकिंग और प्रदर्शन समस्याओं का कारण बन सकते थे। प्रीव्यू 2 एसिंक्रोनस I/O ऑपरेशंस का परिचय देता है, जिससे Wasm मॉड्यूल मुख्य थ्रेड को ब्लॉक किए बिना I/O ऑपरेशन कर सकते हैं। यह WASI अनुप्रयोगों की प्रतिक्रिया और मापनीयता में काफी सुधार करता है।
WASI प्रीव्यू 2 में मुख्य विशेषताएँ और संवर्द्धन
एसिंक्रोनस I/O (असिंक I/O)
एसिंक्रोनस I/O WASI प्रीव्यू 2 में एक महत्वपूर्ण सुधार है। सिंक्रोनस I/O के विपरीत, जो I/O ऑपरेशन पूरा होने तक प्रोग्राम के निष्पादन को रोकता है, एसिंक्रोनस I/O प्रोग्राम को I/O ऑपरेशन के प्रगति में होने के दौरान निष्पादन जारी रखने की अनुमति देता है। जब I/O ऑपरेशन पूरा हो जाता है, तो प्रोग्राम को सूचित किया जाता है और वह परिणामों को संसाधित कर सकता है।
यह दृष्टिकोण कई फायदे प्रदान करता है:
- बेहतर प्रदर्शन: असिंक I/O ब्लॉकिंग को रोकता है, जिससे बेहतर प्रतिक्रिया और थ्रूपुट होता है।
- मापनीयता: असिंक I/O अनुप्रयोगों को बड़ी संख्या में समवर्ती I/O ऑपरेशनों को संभालने में सक्षम बनाता है।
- संसाधन उपयोग: असिंक I/O कई थ्रेड्स की आवश्यकता को कम करता है, जिससे संसाधन उपयोग में सुधार होता है।
उदाहरण: एक सर्वर एप्लिकेशन की कल्पना करें जिसे कई आने वाले अनुरोधों को संभालने की आवश्यकता है। सिंक्रोनस I/O के साथ, प्रत्येक अनुरोध सर्वर को तब तक ब्लॉक कर देगा जब तक वह नेटवर्क से डेटा पढ़ने की प्रतीक्षा करता है। एसिंक्रोनस I/O के साथ, सर्वर रीड ऑपरेशन शुरू कर सकता है और डेटा ट्रांसफर होने के दौरान अन्य अनुरोधों को संसाधित करना जारी रख सकता है। जब डेटा आता है, तो सर्वर को सूचित किया जाता है और वह अनुरोध को संसाधित कर सकता है।
उन्नत नेटवर्किंग समर्थन
WASI प्रीव्यू 2 नेटवर्किंग के लिए बेहतर समर्थन प्रदान करता है, जिससे WASI के साथ नेटवर्क-आधारित एप्लिकेशन बनाना आसान हो जाता है। नेटवर्किंग API TCP और UDP सॉकेट के साथ-साथ DNS रिज़ॉल्यूशन के लिए समर्थन प्रदान करता है।
मुख्य सुधारों में शामिल हैं:
- एसिंक्रोनस नेटवर्किंग ऑपरेशंस: नेटवर्किंग ऑपरेशंस अब एसिंक्रोनस हैं, जो नॉन-ब्लॉकिंग नेटवर्क संचार की अनुमति देते हैं।
- बेहतर त्रुटि प्रबंधन: नेटवर्किंग API अधिक विस्तृत त्रुटि जानकारी प्रदान करता है, जिससे नेटवर्क समस्याओं का निदान और समाधान करना आसान हो जाता है।
- सुरक्षा संवर्द्धन: नेटवर्किंग API में एड्रेस फ़िल्टरिंग और एक्सेस कंट्रोल जैसी सुरक्षा सुविधाएँ शामिल हैं।
उदाहरण: WASI के साथ निर्मित एक वितरित डेटाबेस सिस्टम पर विचार करें। प्रत्येक डेटाबेस नोड क्लस्टर में अन्य नोड्स के साथ संवाद करने के लिए नेटवर्किंग API का उपयोग कर सकता है। एसिंक्रोनस नेटवर्किंग ऑपरेशंस नोड्स को बिना ब्लॉक किए बड़ी संख्या में समवर्ती कनेक्शनों को संभालने की अनुमति देते हैं।
WASI-NN: न्यूरल नेटवर्क अनुमान
WASI-NN WASI का एक विस्तार है जो वेबअसेंबली मॉड्यूल को न्यूरल नेटवर्क अनुमान लगाने में सक्षम बनाता है। यह पूर्व-प्रशिक्षित न्यूरल नेटवर्क मॉडल को लोड करने और निष्पादित करने के लिए एक मानकीकृत इंटरफ़ेस प्रदान करता है। यह डेवलपर्स को AI-संचालित एप्लिकेशन बनाने की अनुमति देता है जो किसी भी प्लेटफ़ॉर्म पर चल सकते हैं जो WASI का समर्थन करता है।
WASI-NN के प्रमुख लाभों में शामिल हैं:
- पोर्टेबिलिटी: WASI-NN न्यूरल नेटवर्क मॉडल को किसी भी WASI-संगत प्लेटफ़ॉर्म पर निष्पादित करने की अनुमति देता है।
- सुरक्षा: WASI का सुरक्षा मॉडल अंतर्निहित सिस्टम को दुर्भावनापूर्ण न्यूरल नेटवर्क मॉडल से बचाता है।
- प्रदर्शन: WASI-NN न्यूरल नेटवर्क अनुमान के लिए लगभग-नेटिव प्रदर्शन प्रदान करने के लिए हार्डवेयर त्वरण का लाभ उठाता है।
उदाहरण: WASI-NN के साथ बनाया गया एक छवि पहचान एप्लिकेशन स्मार्टफोन से लेकर एम्बेडेड सिस्टम तक विभिन्न उपकरणों पर तैनात किया जा सकता है, बिना कोड में किसी भी संशोधन की आवश्यकता के। एप्लिकेशन एक पूर्व-प्रशिक्षित छवि पहचान मॉडल लोड कर सकता है और इसका उपयोग डिवाइस के कैमरे द्वारा कैप्चर की गई छवियों में वस्तुओं की पहचान करने के लिए कर सकता है।
सुधारित सुरक्षा सुविधाएँ
सुरक्षा WASI के डिज़ाइन में एक केंद्रीय चिंता है। प्रीव्यू 2 प्रीव्यू 1 के क्षमता-आधारित सुरक्षा मॉडल पर आधारित है, जिसमें सुरक्षा को और बढ़ाने के लिए नई सुविधाएँ जोड़ी गई हैं। इन सुविधाओं में शामिल हैं:
- सूक्ष्म-स्तरीय अनुमतियाँ: WASI प्रीव्यू 2 Wasm मॉड्यूल को दी गई अनुमतियों पर अधिक सूक्ष्म-स्तरीय नियंत्रण की अनुमति देता है।
- संसाधन सीमाएँ: WASI Wasm मॉड्यूल पर संसाधन सीमाएँ निर्धारित करने की अनुमति देता है, जिससे उन्हें अत्यधिक संसाधनों का उपभोग करने से रोका जा सके।
- सैंडबॉक्सिंग: WASI Wasm मॉड्यूल के लिए एक सुरक्षित सैंडबॉक्स वातावरण प्रदान करता है, जो उन्हें अंतर्निहित सिस्टम से अलग करता है।
उदाहरण: एक क्लाउड कंप्यूटिंग प्रदाता एक सैंडबॉक्स्ड वातावरण में उपयोगकर्ता द्वारा प्रदान किए गए कोड को सुरक्षित रूप से निष्पादित करने के लिए WASI का उपयोग कर सकता है। प्रदाता कोड पर संसाधन सीमाएँ निर्धारित कर सकता है ताकि उसे अत्यधिक संसाधनों का उपभोग करने और अन्य किरायेदारों के साथ हस्तक्षेप करने से रोका जा सके।
कंपोनेंट मॉडल इंटीग्रेशन
WASI प्रीव्यू 2 को वेबअसेंबली कंपोनेंट मॉडल के साथ सहजता से एकीकृत करने के लिए डिज़ाइन किया गया है। कंपोनेंट मॉडल वेबअसेंबली मॉड्यूल बनाने और कंपोज़ करने के लिए एक मॉड्यूलर सिस्टम है। यह डेवलपर्स को पुन: प्रयोज्य कंपोनेंट बनाने की अनुमति देता है जिन्हें आसानी से बड़े अनुप्रयोगों में इकट्ठा किया जा सकता है।
यह एकीकरण कई फायदे प्रदान करता है:
- मॉड्यूलरिटी: कंपोनेंट मॉडल मॉड्यूलरिटी को बढ़ावा देता है, जिससे जटिल अनुप्रयोगों का निर्माण और रखरखाव आसान हो जाता है।
- पुन: प्रयोज्यता: कंपोनेंट्स का कई अनुप्रयोगों में पुन: उपयोग किया जा सकता है, जिससे विकास समय और प्रयास कम हो जाता है।
- अंतर-संचालनीयता: कंपोनेंट्स विभिन्न भाषाओं में लिखे जा सकते हैं और वेबअसेंबली में संकलित किए जा सकते हैं, जिससे विभिन्न प्रोग्रामिंग भाषाओं के बीच अंतर-संचालनीयता की अनुमति मिलती है।
उदाहरण: एक सॉफ्टवेयर कंपनी पुन: प्रयोज्य कंपोनेंट्स की एक लाइब्रेरी बना सकती है जिसका उपयोग विभिन्न प्रकार के एप्लिकेशन बनाने के लिए किया जा सकता है। ये कंपोनेंट्स विभिन्न भाषाओं में लिखे जा सकते हैं और वेबअसेंबली में संकलित किए जा सकते हैं, जिससे डेवलपर्स प्रत्येक कंपोनेंट के लिए सबसे अच्छी भाषा चुन सकते हैं।
WASI प्रीव्यू 2 के उपयोग के मामले
WASI प्रीव्यू 2 अनुप्रयोगों के लिए संभावनाओं की एक विस्तृत श्रृंखला खोलता है। यहाँ कुछ प्रमुख उपयोग के मामले हैं:
सर्वरलेस कंप्यूटिंग
WASI सर्वरलेस कंप्यूटिंग के लिए एक आदर्श मंच है। इसकी सुरक्षा और पोर्टेबिलिटी सुविधाएँ इसे एक सैंडबॉक्स्ड वातावरण में उपयोगकर्ता द्वारा प्रदान किए गए कोड को निष्पादित करने के लिए अच्छी तरह से अनुकूल बनाती हैं। सर्वरलेस प्लेटफ़ॉर्म विभिन्न भाषाओं में लिखे गए कार्यों को निष्पादित करने के लिए WASI का उपयोग कर सकते हैं, जो एक पॉलीग्लॉट रनटाइम वातावरण प्रदान करता है।
उदाहरण: एक क्लाउड प्रदाता एक सर्वरलेस प्लेटफ़ॉर्म बनाने के लिए WASI का उपयोग कर सकता है जो डेवलपर्स को जावास्क्रिप्ट, पायथन और रस्ट में लिखे गए कार्यों को तैनात करने की अनुमति देता है। कार्यों को एक सुरक्षित सैंडबॉक्स वातावरण में निष्पादित किया जाता है, और प्रदाता अंतर्निहित बुनियादी ढांचे के प्रबंधन के लिए जिम्मेदार होता है।
एज कंप्यूटिंग
WASI एज कंप्यूटिंग के लिए भी अच्छी तरह से अनुकूल है। इसका छोटा पदचिह्न और कम ओवरहेड इसे नेटवर्क के किनारे पर संसाधन-विवश उपकरणों पर एप्लिकेशन चलाने के लिए आदर्श बनाता है। WASI का उपयोग एज एप्लिकेशन बनाने के लिए किया जा सकता है जो डेटा प्रोसेसिंग, एनालिटिक्स और मशीन लर्निंग करते हैं।
उदाहरण: एक विनिर्माण कंपनी अपने उपकरणों के प्रदर्शन की निगरानी के लिए एक एज एप्लिकेशन बनाने के लिए WASI का उपयोग कर सकती है। एप्लिकेशन उपकरणों पर सेंसर से डेटा एकत्र कर सकता है और विसंगतियों का पता लगाने के लिए मशीन लर्निंग का उपयोग कर सकता है। एप्लिकेशन उपकरण के पास स्थित एक छोटे कंप्यूटर पर चलता है, जिससे डेटा प्रोसेसिंग की विलंबता कम हो जाती है।
एम्बेडेड सिस्टम
WASI का उपयोग एम्बेडेड सिस्टम के लिए एप्लिकेशन बनाने के लिए किया जा सकता है। इसकी पोर्टेबिलिटी डेवलपर्स को एक बार कोड लिखने और इसे विभिन्न प्रकार के एम्बेडेड उपकरणों पर तैनात करने की अनुमति देती है। WASI की सुरक्षा सुविधाएँ एम्बेडेड सिस्टम को दुर्भावनापूर्ण कोड से बचाती हैं।
उदाहरण: एक रोबोटिक्स कंपनी अपने रोबोट के लिए एप्लिकेशन बनाने के लिए WASI का उपयोग कर सकती है। एप्लिकेशन रोबोट की गतिविधियों को नियंत्रित कर सकते हैं, सेंसर डेटा को संसाधित कर सकते हैं, और पर्यावरण के साथ बातचीत कर सकते हैं। एप्लिकेशन रोबोट के एम्बेडेड कंप्यूटर पर चलते हैं, और WASI एक सुरक्षित और पोर्टेबल रनटाइम वातावरण प्रदान करता है।
डेस्कटॉप अनुप्रयोग
WASI का उपयोग डेस्कटॉप एप्लिकेशन बनाने के लिए भी किया जा सकता है। इसकी पोर्टेबिलिटी डेवलपर्स को एक बार कोड लिखने और इसे विभिन्न ऑपरेटिंग सिस्टम पर तैनात करने की अनुमति देती है। WASI की सुरक्षा सुविधाएँ उपयोगकर्ता के कंप्यूटर को दुर्भावनापूर्ण कोड से बचाती हैं।
उदाहरण: एक सॉफ्टवेयर कंपनी एक क्रॉस-प्लेटफ़ॉर्म डेस्कटॉप एप्लिकेशन बनाने के लिए WASI का उपयोग कर सकती है। एप्लिकेशन एक ही भाषा में लिखा जा सकता है और वेबअसेंबली में संकलित किया जा सकता है, और इसे बिना किसी संशोधन के विंडोज, मैकओएस और लिनक्स पर तैनात किया जा सकता है। फिग्मा जैसी कंपनियाँ पहले से ही उच्च-प्रदर्शन वाले डेस्कटॉप एप्लिकेशन बनाने के लिए वेबअसेंबली का उपयोग कर रही हैं।
WASI प्रीव्यू 1 से प्रीव्यू 2 में माइग्रेट करना
WASI प्रीव्यू 1 से WASI प्रीव्यू 2 में माइग्रेट करने के लिए कुछ कोड परिवर्तनों की आवश्यकता होती है, क्योंकि API को महत्वपूर्ण रूप से अपडेट किया गया है। सबसे महत्वपूर्ण परिवर्तनों में शामिल हैं:
- एसिंक्रोनस I/O: सभी I/O ऑपरेशन अब एसिंक्रोनस हैं। आपको नए एसिंक्रोनस I/O API का उपयोग करने के लिए अपने कोड को अपडेट करना होगा।
- नेटवर्किंग API: नेटवर्किंग API को फिर से डिज़ाइन किया गया है। आपको नए नेटवर्किंग API का उपयोग करने के लिए अपने कोड को अपडेट करना होगा।
- त्रुटि प्रबंधन: त्रुटि प्रबंधन तंत्र को अपडेट किया गया है। आपको नए त्रुटि कोड को संभालने के लिए अपने कोड को अपडेट करना होगा।
WASI समुदाय डेवलपर्स को उनके कोड को प्रीव्यू 1 से प्रीव्यू 2 में माइग्रेट करने में मदद करने के लिए दस्तावेज़ीकरण और उपकरण प्रदान करता है। माइग्रेशन प्रक्रिया शुरू करने से पहले इन संसाधनों से परामर्श करने की अनुशंसा की जाती है।
WASI विकास के लिए उपकरण और संसाधन
WASI एप्लिकेशन बनाने में डेवलपर्स की मदद के लिए विभिन्न प्रकार के उपकरण और संसाधन उपलब्ध हैं। इनमें शामिल हैं:
- WASI SDK: WASI SDK C/C++ कोड को WASI समर्थन के साथ वेबअसेंबली में संकलित करने के लिए एक टूलचेन प्रदान करता है।
- Wasmtime: Wasmtime एक स्टैंडअलोन वेबअसेंबली रनटाइम है जो WASI का समर्थन करता है।
- Wasmer: Wasmer एक और वेबअसेंबली रनटाइम है जो WASI का समर्थन करता है।
- WASI समुदाय: WASI समुदाय डेवलपर्स को WASI के साथ आरंभ करने में मदद करने के लिए दस्तावेज़ीकरण, ट्यूटोरियल और उदाहरण प्रदान करता है।
WASI का भविष्य
WASI एक तेजी से विकसित हो रही तकनीक है। WASI के भविष्य के संस्करणों में और भी अधिक सुविधाएँ और सुधार शामिल होने की उम्मीद है, जैसे:
- उन्नत सुरक्षा सुविधाएँ: तेजी से परिष्कृत हमलों से बचाने के लिए उन्नत सुरक्षा सुविधाएँ।
- बेहतर प्रदर्शन: WASI अनुप्रयोगों के प्रदर्शन को बेहतर बनाने के लिए और अनुकूलन।
- नई भाषाओं के लिए समर्थन: अधिक प्रोग्रामिंग भाषाओं के लिए समर्थन, जिससे WASI डेवलपर्स की एक विस्तृत श्रृंखला के लिए सुलभ हो जाएगा।
- मानकीकृत कंपोनेंट मॉडल: वेबअसेंबली कंपोनेंट मॉडल के साथ पूर्ण एकीकरण, जो अत्यधिक मॉड्यूलर और पुन: प्रयोज्य अनुप्रयोगों के निर्माण को सक्षम करेगा।
WASI सॉफ्टवेयर विकास के भविष्य के लिए एक प्रमुख तकनीक बनने की ओर अग्रसर है, जो सुरक्षित, पोर्टेबल और उच्च-प्रदर्शन वाले अनुप्रयोगों के निर्माण को सक्षम बनाता है जो किसी भी प्लेटफ़ॉर्म पर चल सकते हैं।