WebAssembly (WASM) स्थान के भीतर कई नए मानकीकरण प्रयास हो रहे हैं, जिसमें हम सॉफ्टवेयर अनुप्रयोगों को लिखने का एक नया तरीका मानते हैं। इस नए मॉडल का वर्णन करने के माध्यम से, मैं वासम के कुछ इतिहास में गोता लगाना चाहूंगा ताकि यह वर्णन किया जा सके कि हम कहां जा रहे हैं।
WebAssembly (WASM) के लिए डिज़ाइन 2015 में शुरू हुआ, 2019 में आधिकारिक तौर पर वेब की चौथी भाषा बनने से पहले। जबकि कई प्रौद्योगिकीविद् एक ब्राउज़र तकनीक के रूप में वासम से परिचित हैं, वास स्वयं जावास्क्रिप्ट या वेब एपीआई पर निर्भर नहीं है।
वासम के अग्रदूत, asm.js
, 2013 में प्रमुखता से बढ़े। जावास्क्रिप्ट का एक उपसमूह जो ब्राउज़रों के लिए अत्यधिक अनुकूलन योग्य है और जो सी और सी ++ जैसी भाषाओं के लिए संकलन लक्ष्य के रूप में कार्य कर सकता है। मेरी सर्वकालिक पसंदीदा वार्ताओं में से एक, "जावास्क्रिप्ट का जन्म और मृत्यु" asm.js
से प्रेरित एक काल्पनिक भविष्य को कवर करती है। भविष्य के बीच समानताओं पर ध्यान दें, हम अंततः वासम और गैरी की भविष्यवाणियों के साथ PyCon 2014 से उनकी बातचीत को देखते हुए ।
मैं अक्सर asm.js
अब तक का सबसे बड़ा हैक कहता हूं (सबसे प्यारे तरीके से)। किसने सोचा होगा कि एक उच्च-स्तरीय स्क्रिप्टिंग भाषा A")" एक संकलन लक्ष्य और B")" इतनी अविश्वसनीय रूप से तेज़ हो सकती है? 2012 में, मैंने कई सी ++ पुस्तकालयों को asm.js
में पोर्ट किया और महसूस किया कि मैंने गुप्त कोड को पोर्टेबल ब्रह्मांड में अनलॉक कर दिया है।
तकनीक ने कई चीजें साबित कीं। सबसे पहले, अन्य भाषाओं को वेब पर लाने की आवश्यकता और इच्छा है, लेकिन देव वहाँ रुकना नहीं चाहते थे। डेटा विज़ुअलाइज़ेशन टूल (जैसे एसएएस में मैंने जिन घटकों पर काम किया था) से लेकर यूनिटी और अनरियल इंजन (UE3 को 4 दिनों में पोर्ट किया गया था) के साथ बनाए गए एप्लिकेशन के प्रकारों को कम्प्यूटेशनल और ग्राफ़िक रूप से मांगा गया था।
इसीलिए जब 2015 में W3C WebAssembly समुदाय समूह और संबंधित WebAssembly डिज़ाइन रिपॉजिटरी बनाई गई, तो मोज़िला, Google , Microsoft और Apple जैसे ब्राउज़र विक्रेता इस प्रयास में पहले योगदानकर्ताओं में से थे और सबसे पहले एक ठोस अवसर देखने वाले थे। डिज़ाइन को एक बाइनरी प्रारूप वाली भाषा के लिए कहा जाता है जिसे पोर्टेबल संकलन लक्ष्य के रूप में इस्तेमाल किया जा सकता है, तेजी से डाउनलोड को सक्षम करने के लिए आकार के लिए अनुकूलित और स्ट्रीमिंग संकलन के लिए समर्थन जो डाउनलोड किए गए मॉड्यूल को निकट-त्वरित तात्कालिकता की अनुमति देता है। सबसे महत्वपूर्ण बात यह है कि इन मॉड्यूलों को सैंडबॉक्स [निष्पादन वातावरण] की सुविधा प्रदान करनी चाहिए क्योंकि ब्राउज़रों में चलने वाले किसी भी मनमाना कोड को अवश्य ही करना चाहिए।
ब्राउज़र-साइड परिनियोजन में जो कुछ सीखा गया था, उसमें से बहुत से तरीकों से संकेत मिलता है कि वासम ब्राउज़र से परे अपनी क्षमता को पूरा कर सकता है। "क्लाउड" मशीनरी के विश्वव्यापी नेटवर्क में कंप्यूट आर्किटेक्चर, ऑपरेटिंग सिस्टम और सिस्टम बाधाओं का एक विषम सेट बनाता है।
वासम के कुछ प्रमुख गुणों पर एक पोर्टेबल संकलन लक्ष्य के रूप में विचार करें जो कि कॉम्पैक्ट बाइनरी प्रारूप के लिए तेज़, सैंडबॉक्स और आसानी से वितरित किया गया है। वासम के ये गुण इसे क्लाउड के लिए गणना की सही वितरण योग्य इकाई बनाते हैं। इसके अतिरिक्त, कंपनियां विभिन्न वातावरणों के लिए एप्लिकेशन बनाना चाहती हैं, लेकिन हर बार रिफैक्टर नहीं करना चाहती हैं। वास इन बाधाओं को दूर करता है।
जब मैंने पहली बार asm.js
के बारे में सीखा, तो मैं अपने मौजूदा फ्लैश एप्लिकेशन को HTML5 में कैसे ले जाऊं, इसके समाधान की तलाश में था। यह एक्शनस्क्रिप्ट/फ्लेक्स ऐप अपने जावा समकक्ष का एक पुनर्लेखित संस्करण था जो सी में लिखे गए समान व्यावसायिक तर्क के पुराने संस्करणों का एक पोर्ट था। यह कहानी आपको जंगली लग सकती है यदि आपने बड़े उद्यमों में काम नहीं किया है, लेकिन आप पा सकते हैं प्रत्येक संगठन में कंप्यूटिंग के प्रत्येक युग के बीच इस प्रकार का पोर्टिंग जो समय की कसौटी पर खरा उतरने के लिए पर्याप्त भाग्यशाली है।
वासम किसी भी वासम-अनुपालन रनटाइम के लिए कुल पोर्टेबिलिटी की अनुमति देता है, जिसमें ब्राउज़र, रनटाइम जो कि FaaS के लिए उद्देश्य से बनाए गए हैं, या IoT के लिए छोटे आर्किटेक्चर पर चलने के लिए डिज़ाइन किया गया है। वेब में, वास मॉड्यूल शुद्ध संगणना से परे चीजों को करने के लिए वेब एपीआई जैसे वेबजीएल, नेटवर्किंग और उपकरणों तक पहुंचने के लिए जावास्क्रिप्ट "गोंद" कोड का उपयोग करने में सक्षम हैं। दिन के अंत में, एक वासम कार्यक्रम वास्तव में केवल संख्यात्मक मूल्यों पर काम करता है, या अलग तरह से कहा जाता है, एक वासम मॉड्यूल ट्रेंचकोट में i32s का एक गुच्छा है। दिलचस्प चीजें करने के लिए, वासम मॉड्यूल को होस्ट रनटाइम से फ़ंक्शन को कॉल करने में सक्षम होना चाहिए।
लगभग उसी समय जब WebAssembly 1.0 एक अनुशंसित वेब मानक बन गया, W3C WebAssembly वर्किंग ग्रुप के भीतर एक नया उपसमूह WebAssembly के लिए सिस्टम-स्तरीय इंटरफ़ेस की खोज के लिए बनाया गया था जिसे WASI (WebAssembly Systems इंटरफ़ेस) के रूप में जाना जाता है। समूह तब से मानकीकृत इंटरफेस का एक सेट बनाने पर काम कर रहा है।
WASI WebAssembly को कहीं भी अच्छी तरह से काम करने के लिए मौजूद है, न केवल ब्राउज़र के भीतर, बल्कि WASI की प्रमुख विशेषता इसका क्षमता-आधारित सुरक्षा मॉडल है। क्षमता-आधारित सुरक्षा 60 के दशक ( डेनिस एंड वैन हॉर्न, 1966 ) के आसपास रही है, लेकिन डैन गोहमैन ने क्लाउड एबीआई के विचारों पर निर्माण करके इस पर एक नया रूप दिया।
स्वाभाविक रूप से, इस तकनीक ने जल्द ही वेब के बाहर वासम चलाने में रुचि रखने वाली कंपनियों का ध्यान आकर्षित किया। फास्टली, इंटेल, रेड हैट और मोज़िला जैसी कंपनियों ने वासम को क्लाउड में, उपकरणों पर और किनारे पर काम करने का मौका देखा। वे कंपनियाँ WASI जैसे मानकों का उपयोग करके वासम के लिए सुरक्षित सॉफ़्टवेयर फ़ाउंडेशन बनाने के लिए एक गैर-लाभकारी संगठन, बाइटकोड एलायंस (BA) की संस्थापक सदस्य थीं। कई अन्य संगठन जल्द ही बीए में शामिल हो गए, जिनमें सॉफ्टवेयर उद्योग के प्रमुख खिलाड़ी शामिल हैं और अब यह 30 से अधिक सदस्यों के साथ खड़ा है और बढ़ रहा है!
पिछले कुछ वर्षों में, हमने वासम को क्लाउड-नेटिव एप्लिकेशन में चलाने के लिए आवश्यक टूलिंग बनाने की दिशा में बड़े पैमाने पर प्रगति की है। समुदाय ने इन शुरुआती अनुभवों से बहुत कुछ सीखा, और इसने हमें एक नया मानक बनाने के लिए प्रभावित किया जिसे अब हम कंपोनेंट मॉडल कहते हैं। घटक मॉडल WASI से निचले स्तर पर है, यह WASI के साथ अच्छा काम करता है लेकिन WASI पर निर्भर नहीं है। यह हमारे एक ऐसे सॉफ्टवेयर इकोसिस्टम की कल्पना का परिणाम है जो न केवल कंप्यूट की एक पोर्टेबल इकाई के आसपास आधारित है, बल्कि कंपोजेबल, इंटरऑपरेबल और प्लेटफॉर्म वर्चुअलाइजेबल WebAssembly मॉड्यूल के साथ पूरी तरह से नया है।
आइए इसे तोड़ दें:
रचनाशीलता: भाषा-स्वतंत्र तरीके से मॉड्यूलर कोड के पुन: उपयोग की अनुमति दें।
प्लेटफ़ॉर्म वर्चुअलाइज़ेशन: प्लेटफ़ॉर्म-विशिष्ट टुकड़ों में परत करने की क्षमता जो एक घटक को किसी दिए गए वातावरण में चलाने की आवश्यकता होती है। प्लेटफ़ॉर्म वर्चुअलाइज़ेशन और कंपोज़िबिलिटी के लिए फीचर के पहले के प्रस्ताव को मॉड्यूल-लिंकिंग कहा जाता था।
इंटरऑपरेबिलिटी: कंपोज़ेबल और वर्चुअलाइज़ेबल कंपोनेंट्स के साथ, हमें कंपोनेंट्स के बीच सूचनाओं के आदान-प्रदान का एक तरीका चाहिए। हमने इंटरफ़ेस प्रकार नामक एक प्रस्ताव के साथ शुरुआत की, लेकिन यह भी अब घटक मॉडल प्रस्ताव की एक प्रमुख विशेषता है।
यह कहानी है कि कैसे कंपोनेंट मॉडल ने आकार लेना शुरू किया। पिछले प्रस्तावों में से प्रत्येक को अब इस व्यापक मानक में परिष्कृत किया गया है। हम इस वर्ष के अंत में WASI मानकों और घटक मॉडल के अगले प्रमुख स्थिर पुनरावृत्ति को देखने की उम्मीद करते हैं।
नीचे, हम आपको वासम, WASI और घटक मॉडल के विकास के एक प्लॉट किए गए इतिहास के बारे में बताते हैं।
2019 : शुद्ध संकलन लक्ष्य, शुरुआती इंटरफेस को जोड़ना जो कि syscalls को होस्ट से जोड़ता है। कई मायनों में, ऐसा लगता है कि हम POSIX के WebAssembly संस्करण की ओर बढ़ रहे हैं। हम वास्तव में एक साधारण सीएलआई लिखने में सक्षम थे और इसे डेस्कटॉप पर या सर्वर रहित फ़ंक्शन में वासमटाइम के साथ चला सकते थे।
2020 : WASI API उन चीजों पर केंद्रित है जिनकी किसी भी CLI प्रोग्राम को आवश्यकता हो सकती है, जैसे सिस्टम क्लॉक, या फाइल सिस्टम। फास्टली के ल्यूसेट वासम रनटाइम का वासमटाइम (एक बीए प्रोजेक्ट) के साथ विलय हो गया।
2021 : बेशक, इन सभी तत्वों का विकास और सुधार जारी है। 2021 में, हम नए उपयोग के मामले-विशिष्ट WASI इंटरफेस के विकास को देखना शुरू करते हैं, wasi-nn
के लिए, जब अनुमान लगाने के लिए हार्डवेयर त्वरण की आवश्यकता होती है। इसी साल ल्यूक वैगनर ने कंपोनेंट मॉडल को परिभाषित करना शुरू किया।
2022 : हम वासम मॉड्यूल को क्लाउड वातावरण में अच्छी तरह से चलाने के लिए नए उच्च-स्तरीय एपीआई देखना शुरू करते हैं, जहां की-वैल्यू स्टोर या पब / सब मैसेजिंग सेवाओं के साथ काम करने जैसी क्षमताओं की आवश्यकता होती है। अंत में, बहुत काम के बाद, WASI सॉकेट पेश किए गए। 2023 : हम घटक मॉडल और WASI मानकों के लिए स्थिरता मील के पत्थर की दिशा में काम कर रहे हैं।
2019 की यात्रा को देखते हुए, आप यह देखना शुरू कर सकते हैं कि मानकों में विविधता कैसे आई है क्योंकि उपयोग के मामलों में वृद्धि हुई है और उपयोगकर्ता यह चुनना और चुनना शुरू करते हैं कि वे क्या करते हैं और क्या नहीं। एक सर्वव्यापी ब्लॉक से एक लचीले ढांचे के भीतर एक दूसरे के साथ काम करने के लिए डिज़ाइन किए गए छोटे बिल्डिंग ब्लॉक्स के बढ़ते सूट तक: घटक मॉडल।
इस मॉडल में, डेवलपर विभिन्न मूल्य प्रस्तावों के रूप में विभिन्न भाषाओं में लागू किए गए अपने एप्लिकेशन के टुकड़ों को चुन और चुन सकते हैं। जैसा कि डेवलपर्स वासम घटक पुस्तकालयों का निर्माण शुरू करते हैं, अन्य डेवलपर्स उन्हें 'लेगो' के दुनिया के सबसे बड़े टोकरे के रूप में मान सकते हैं।
पूर्ण-चक्र क्षण में, हम मानते हैं कि नया नवाचार तब आएगा जब घटक मॉडल हमारे वेब एप्लिकेशन लिखने के तरीके को प्रभावित करना शुरू कर देगा। यह तब समझ में आता है जब वेब उन शांत लेकिन विवश वातावरणों में से एक है, जिसमें बहुत ही अधीर उपयोगकर्ता होते हैं - नए प्रयोग के लिए एक प्रजनन स्थल।
उदाहरण के लिए, मुझे उम्मीद है कि घटक किसी वेब एप्लिकेशन के लिए भाषा-तटस्थ प्लगइन सिस्टम को डिज़ाइन करना और भी आसान बना देंगे। यदि पाइथन जैसे भाषा रनटाइम के लिए आवश्यक टुकड़ा है, तो उस भाषा रनटाइम का लाभ उठाने वाले कई घटक इसका उपयोग कर सकते हैं। इसकी तुलना आज की दुनिया से करें, जहां हमारे पास केवल वासम मॉड्यूल (घटक नहीं) हैं और ये आम तौर पर उनके सभी संकलन-समय की निर्भरता के साथ एक ही बाइनरी में बेक किए गए हैं। यदि एक बड़ा एप्लिकेशन तृतीय-पक्ष प्लगइन्स का समर्थन करता है, तो संभावना है कि प्रत्येक वास प्लगइन में डुप्लिकेट निर्भरताएं होंगी जो आकार और मेमोरी ब्लोट और धीमे डाउनलोड की ओर ले जाती हैं।
वेब के लिए वासम घटकों की भविष्य की प्रणाली के साथ, जहां एक एकल एप्लिकेशन के पास किसी भी भाषा में लिखे गए घटकों का अपना विकल्प हो सकता है, एक एप्लिकेशन को केवल वही डाउनलोड करने की आवश्यकता होगी जिसकी उसे आवश्यकता है और आयात के साथ किसी अन्य ES मॉड्यूल जैसे घटकों के साथ सहभागिता करनी होगी। इस दुनिया में, सबसे अच्छा घटक ऊपर उठेगा। सबसे अच्छा मतलब सबसे तेज़ या सबसे साफ एपीआई हो सकता है, लेकिन सबसे महत्वपूर्ण बात यह है कि इसकी परिभाषित विशेषता स्रोत भाषा नहीं होगी। सबसे अच्छा घटक जीत सकता है!
WASI मानकों और घटक मॉडल को वास्तविक बनाने का एक बड़ा हिस्सा एक प्रयोग करने योग्य तकनीकी ढांचा बनाने में BA की भूमिका है: SDK, टूलिंग और कोर घटक; सभी एक सुसंगत और सुरक्षित तरीके से निर्मित हैं, और सर्वोत्तम अभ्यास के उदाहरण के रूप में सभी के लिए सुलभ हैं।
समान रूप से, बीए की तकनीकी संचालन समिति (टीएससी) की भूमिका हर बीए परियोजना के लिए तकनीकी शासन और सहायता प्रदान करने में महत्वपूर्ण होगी। हम W3C WebAssembly और WASI कार्य समूहों में मानकों के सर्वोत्तम संभव सेट को डिजाइन करने वाले लोगों के साथ काम करते हैं, जिसका अर्थ है कि हम यह सुनिश्चित करने के लिए उनके साथ सहयोग करते हैं कि व्यवहार में सब कुछ काम करता है। W3C WebAssembly और WASI समूह इन मानकों को अंतिम रूप देने पर केंद्रित हैं, और BA एक सक्रिय फीडबैक लूप स्थापित करने के लिए जितनी जल्दी हो सके उन्हें समुदाय के भीतर उपभोग्य बनाने पर केंद्रित है।
बीए के चार्टर का एक अन्य महत्वपूर्ण हिस्सा भाषा और पर्यावरण की अंतर्संचालनीयता को सक्षम करना है। बीए कई अलग-अलग भाषाओं के लिए भाषा बंधन उत्पन्न करने के लिए टूलिंग प्रदान करता है, लेकिन भाषा इंटरऑपरेबिलिटी निर्वाण तक पहुंचने का एक पहलू यह है कि हमें वासम घटकों के साथ इंटरऑप करने के लिए विभिन्न भाषा पारिस्थितिक तंत्रों में रजिस्ट्रियों और पैकेज प्रबंधकों की आवश्यकता है। यही कारण है कि हम SIG-रजिस्ट्री के हिस्से के रूप में एक रजिस्ट्री प्रोटोकॉल (वारग कहा जाता है) को डिजाइन करने पर काम कर रहे हैं जो किसी भी रजिस्ट्री को सक्षम करता है जो वासम घटकों को प्रकाशित करने, उपभोग करने, स्टोर करने और साझा करने के लिए प्रोटोकॉल को लागू करता है।
शायद किसी भी वास सॉफ्टवेयर स्टैक का सबसे महत्वपूर्ण टुकड़ा वास रनटाइम है, और बीए दो होस्ट करता है! Wasmtime रस्ट में लिखा गया है और अक्सर नए WASI और WebAssembly प्रस्तावों के साथ प्रयोग करने के लिए परीक्षण का आधार है। WebAssembly माइक्रो-रनटाइम ( WAMR ) C में लिखा गया है और ESP32 जैसे छोटे आर्किटेक्चर सहित कई आर्किटेक्चर का समर्थन करता है। ये दोनों रनटाइम वासम रनटाइम के महान संदर्भ कार्यान्वयन के रूप में कार्य करते हैं। वासम मॉड्यूल के निर्माण के लिए एसडीके और उपकरण वासम मानकों के अनुरूप हैं, इसलिए कोई भी मानक-अनुपालन वासम रनटाइम (बीए द्वारा होस्ट नहीं किए गए सहित) इन सॉफ्टवेयर फाउंडेशनों पर निर्माण कर सकता है।
WASI और घटक मॉडल और बाइटकोड एलायंस से कार्यान्वयन के माध्यम से विकसित होने वाले सभी नए और रोमांचक मानकों को देखते हुए, मुझे उम्मीद है कि 2023 एक रोमांचक वर्ष होगा!
Cosmonic के साथ आज ही निःशुल्क शुरुआत करें: अभी लॉन्च करें!
बेली हेस द्वारा | Bytecode Alliance TSC और Cosmonic के निदेशक
यह लेख मूल रूप से न्यू टेक फोरम के हिस्से के रूप में इन्फोवर्ल्ड में प्रकाशित हुआ था।
यह कहानी CosmonicDevs द्वारा हैकरनून के ब्रांड ऐज़ एन ऑथर प्रोग्राम के अंतर्गत रिलीज़ के रूप में वितरित की गई थी। यहां कार्यक्रम के बारे में और जानें: https://business.hackernoon.com/brand-as-author