वेब असेंबली

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

में घोषित किया 2015 और पहली बार में जारी किया गया March 2017, WebAssembly 5 दिसंबर 2019 को वर्ल्ड वाइड वेब कंसोर्टियम की सिफारिश बन गई  और इसने 2021 में संगणक तंत्र संस्था SIGPLAN से प्रोग्रामिंग लैंग्वेज सॉफ्टवेयर अवार्ड प्राप्त किया। वर्ल्ड वाइड वेब कंसोर्टियम (W3C) Mozilla, Microsoft, Google, Apple Inc., Fastly, Intel, और Red Hat के योगदान से मानक बनाए रखता है।

इतिहास
WebAssembly का नाम सभा की भाषा की अवधारणा को विकसित करने के लिए रखा गया है, यह शब्द 1950 के दशक का है। यह नाम असेंबली जैसी प्रोग्रामिंग को वर्ल्ड वाइड वेब पर लाने का सुझाव देता है, जहां इसे ग्राहक की ओर निष्पादित किया जाएगा — वेबसाइट उपयोगकर्ता के कंप्यूटर द्वारा उपयोगकर्ता के वेब ब्राउज़र के माध्यम से। इसे पूरा करने के लिए, WebAssembly को वास्तविक असेंबली भाषा की तुलना में कहीं अधिक हार्डवेयर-स्वतंत्र होना चाहिए।

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

मार्च 2017 में, न्यूनतम व्यवहार्य उत्पाद (एमवीपी) का डिज़ाइन समाप्त होने की घोषणा की गई और पूर्वावलोकन चरण समाप्त हो गया। सितंबर 2017 के अंत में, सफारी (वेब ​​​​ब्राउज़र) को समर्थन के साथ जारी किया गया था। फरवरी 2018 में, WebAssembly Working Group ने Core Specification, JavaScript इंटरफ़ेस और Web API के लिए तीन सार्वजनिक कार्य प्रारूप प्रकाशित किए।

जून 2019 में, Chrome 75 को डिफ़ॉल्ट रूप से सक्षम WebAssembly थ्रेड्स के साथ जारी किया गया था। अप्रैल 2022 से, WebAssembly 2.0 ड्राफ़्ट स्थिति में है, जो कई SIMD-संबंधित निर्देश और एक नया v128 डेटाटाइप जोड़ता है, फ़ंक्शन के लिए कई मान वापस करने की क्षमता, और मास मेमोरी इनिशियलाइज़/कॉपी करता है।

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

वेब ब्राउज़र
नवंबर 2017 में, मोज़िला ने सभी प्रमुख ब्राउज़रों में समर्थन की घोषणा की, WebAssembly को एज 16 में डिफ़ॉल्ट रूप से सक्षम करने के बाद। समर्थन में iOS और Android के लिए मोबाइल वेब ब्राउज़र शामिल हैं।, 96% स्थापित ब्राउज़र  WebAssembly (संस्करण 1.0) का समर्थन करें। लेकिन पुराने ब्राउज़रों के लिए, वासम को जावास्क्रिप्ट पॉलीफ़िल (प्रोग्रामिंग) द्वारा asm.js में संकलित किया जा सकता है।

संकलक
WebAssembly कार्यान्वयन आमतौर पर समय से पहले संकलन | समय से पहले (एओटी) या समय से पहले संकलन | समय से पहले (जेआईटी) संकलन का उपयोग करता है, लेकिन एक इंटरप्रेटर (कंप्यूटिंग) का भी उपयोग कर सकता है। जबकि पहला कार्यान्वयन वेब ब्राउज़र में आ चुका है, सामान्य प्रयोजन के उपयोग के लिए गैर-ब्राउज़र कार्यान्वयन भी हैं, जिनमें वास्मेर, वासटाइम या डब्ल्यूएएमआर, wasm3, WAVM, और कई अन्य। क्योंकि WebAssembly के निष्पादन योग्य पहले से संकलित होते हैं, उन्हें बनाने के लिए विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का उपयोग करना संभव है। यह वासम के सीधे संकलन के माध्यम से या वासम में संबंधित वर्चुअल मशीन # प्रोसेस वर्चुअल मशीनों के कार्यान्वयन के माध्यम से प्राप्त किया जाता है। संकलन लक्ष्य के रूप में वासम का समर्थन करने के लिए लगभग 40 प्रोग्रामिंग भाषाओं की सूचना दी गई है।

Emscripten C (प्रोग्रामिंग लैंग्वेज) और C ++ को Wasm में संकलित करता है बैकएंड के रूप में बाइनरीन और एलएलवीएम का उपयोग करना। Emscripten किसी भी LLVM- समर्थित भाषाओं (जैसे C (प्रोग्रामिंग लैंग्वेज), C++ या जंग (प्रोग्रामिंग भाषा), अन्य के बीच) स्रोत कोड को एक बाइनरी फ़ाइल में संकलित कर सकता है जो उसी सैंडबॉक्स (कंप्यूटर सुरक्षा) में जावास्क्रिप्ट कोड के रूप में चलता है। Emscripten WebGL जैसे कई सामान्य रूप से उपयोग किए जाने वाले पर्यावरण इंटरफेस के लिए बाइंडिंग प्रदान करता है।

संस्करण 8 के अनुसार, एक स्टैंडअलोन बजना सी (प्रोग्रामिंग लैंग्वेज) और सी ++ को वासम में संकलित कर सकता है। इसका प्रारंभिक उद्देश्य C (प्रोग्रामिंग भाषा) और C++ से संकलन (कंप्यूटिंग) का समर्थन करना है, हालांकि अन्य स्रोत प्रोग्रामिंग भाषा जैसे रस्ट (प्रोग्रामिंग भाषा), .NET भाषाओं के लिए समर्थन और असेंबलीस्क्रिप्ट (टाइपप्रति-लाइक) भी उभर रहा है। एमवीपी जारी होने के बाद, थ्रेड (कंप्यूटिंग) #Multhreading और कचरा संग्रह (कंप्यूटर विज्ञान) का समर्थन करने की योजना है जो WebAssembly को सी शार्प (प्रोग्रामिंग लैंग्वेज)|C# (ब्लेज़र द्वारा समर्थित), F शार्प (प्रोग्रामिंग लैंग्वेज)|F# (बोलेरो द्वारा समर्थित) जैसी कचरा एकत्र करने वाली प्रोग्रामिंग भाषाओं के लिए एक संकलन लक्ष्य बना देगा ब्लेज़र), पायथन (प्रोग्रामिंग लैंग्वेज), और यहां तक ​​​​कि जावास्क्रिप्ट की मदद से जहां ब्राउजर की समय-समय पर संकलन की गति बहुत धीमी मानी जाती है। पायथन (प्रोग्रामिंग भाषा) सहित कई अन्य भाषाओं को कुछ समर्थन प्राप्त है, जूलिया (प्रोग्रामिंग भाषा),  और रूबी (प्रोग्रामिंग भाषा)।

सीमाएं

 * 1) सामान्य तौर पर, WebAssembly दस्तावेज़ ऑब्जेक्ट मॉडल के साथ सीधे संपर्क की अनुमति नहीं देता है। सभी इंटरैक्शन JavaScript इंटरऑप के माध्यम से प्रवाहित होने चाहिए।
 * 2) कचरा संग्रह की अनुपस्थिति (कंप्यूटर विज्ञान) (हालांकि इसे संबोधित करने की योजना है।)
 * 3) सुरक्षा विचार (नीचे चर्चा की गई)

WebAssembly डेस्कटॉप और मोबाइल पर समर्थित है, लेकिन बाद में, व्यवहार में (गैर-छोटी मेमोरी आवंटन के लिए, जैसे कि यूनिटी (गेम इंजन) गेम इंजन के साथ) गंभीर सीमाएँ हैं जो कई अनुप्रयोगों को मोबाइल पर मज़बूती से तैनात करने के लिए अक्षम बनाती हैं। ब्राउज़र [..] वर्तमान में क्रोम-विशिष्ट वर्कअराउंड का सहारा लिए बिना Android पर क्रोम पर ~300MB से अधिक मेमोरी आवंटित करना विश्वसनीय नहीं है, न ही iOS पर सफारी में। कोई प्रत्यक्ष दस्तावेज़ ऑब्जेक्ट मॉडल (DOM) एक्सेस नहीं है; हालाँकि, इसके लिए प्रॉक्सी फ़ंक्शंस बनाना संभव है, उदाहरण के लिए stdweb के माध्यम से या web_sys जंग (प्रोग्रामिंग भाषा) का उपयोग करते समय।

सभी प्रमुख वेब ब्राउज़र WebAssembly की अनुमति देते हैं यदि सामग्री-सुरक्षा-नीति निर्दिष्ट नहीं है, या यदि असुरक्षित-ईवल का उपयोग किया जाता है, लेकिन अन्यथा प्रमुख वेब ब्राउज़र अलग व्यवहार करते हैं। व्यावहारिक रूप से WebAssembly का उपयोग Chrome पर असुरक्षित-eval के बिना नहीं किया जा सकता है, जबकि वर्कर थ्रेड वर्कअराउंड उपलब्ध है।

सुरक्षा विचार
जून 2018 में, एक सुरक्षा शोधकर्ता ने स्पेक्टर (सुरक्षा भेद्यता) और मेल्टडाउन (सुरक्षा भेद्यता) सुरक्षा भेद्यताओं के लिए वेबएसेम्बली का उपयोग करने की संभावना प्रस्तुत की, एक बार साझा मेमोरी के साथ थ्रेड (कंप्यूटिंग) के लिए समर्थन जोड़ा गया। इस चिंता के कारण, WebAssembly Developers ने इस सुविधा को होल्ड पर रख दिया। हालाँकि, इन भविष्य के भाषा एक्सटेंशन का पता लगाने के लिए, Google Chrome ने अक्टूबर 2018 में WebAssembly थ्रेड प्रस्ताव के लिए प्रायोगिक समर्थन जोड़ा। WebAssembly की मैलवेयर लेखकों, स्कैमर्स और फ़िशिंग हमलावरों के लिए सबूत छिपाने में अधिक आसानी की अनुमति देने के लिए आलोचना की गई है; WebAssembly केवल अपने संकलित रूप में उपयोगकर्ता की मशीन पर मौजूद है, जो [मैलवेयर बनाता है] का पता लगाना मुश्किल है। WebAssembly की गति और छुपाने की क्षमता ने वेबसाइट विज़िटर के डिवाइस पर छिपे हुए क्रिप्टोकुरेंसी # खनन में इसका उपयोग किया है। कॉइनहाइव, वेबसाइट विज़िटर के ब्राउज़रों में क्रिप्टोक्यूरेंसी खनन की सुविधा प्रदान करने वाली एक अब निष्क्रिय सेवा है, उनका दावा है कि उनका माइनर WebAssembly का उपयोग करता है और एक देशी माइनर के प्रदर्शन के लगभग 65% के साथ चलता है। Technische Universität Braunschweig के एक जून 2019 के अध्ययन ने एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों में WebAssembly के उपयोग का विश्लेषण किया और पाया कि प्रचलित उपयोग दुर्भावनापूर्ण क्रिप्टो खनन के लिए था, और यह मैलवेयर अध्ययन किए गए WebAssembly-उपयोग करने वाली वेबसाइटों के आधे से अधिक के लिए जिम्मेदार है।  यूनिवर्सिटी ऑफ़ स्टटगार्ट | यूनिवर्सिटी स्टटगार्ट के एक अप्रैल 2021 के अध्ययन में पाया गया कि तब से क्रिप्टो माइनिंग को हाशिए पर डाल दिया गया है, जो एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों सहित स्रोतों की एक विस्तृत श्रृंखला से एकत्र किए गए सभी WebAssembly मॉड्यूल के 1% से नीचे गिर गया है। बड़ी मात्रा में कोड को प्रभावी ढंग से अस्पष्ट करने की क्षमता का उपयोग विज्ञापन अवरोधन और गोपनीयता टूल को अक्षम करने के लिए भी किया जा सकता है जो गोपनीयता बैजर जैसे वेब ट्रैकिंग को रोकते हैं।

जैसा कि WebAssembly केवल संरचित नियंत्रण प्रवाह का समर्थन करता है, यह प्रतीकात्मक निष्पादन सहित सुरक्षा सत्यापन तकनीकों के प्रति उत्तरदायी है। इस दिशा में वर्तमान प्रयासों में मोनिकोर प्रतीकात्मक निष्पादन इंजन शामिल है।

वासी
WebAssembly System Interface (WASI) मोज़िला द्वारा डिज़ाइन किया गया एक सरल इंटरफ़ेस (अनुप्रयोग बाइनरी इंटरफ़ेस और अप्लिकेशन प्रोग्रामिंग अंतरफलक) है, जिसका उद्देश्य किसी भी प्लेटफ़ॉर्म पर पोर्टेबल होना है। यह क्षमता-आधारित सुरक्षा द्वारा विवश फ़ाइल I/O जैसी POSIX जैसी सुविधाएँ प्रदान करता है। कुछ अन्य प्रस्तावित ABI/API भी हैं। WASI शिमला मिर्च (यूनिक्स)#CloudABI और शिमला मिर्च (यूनिक्स) से प्रभावित है।

डॉकर (सॉफ्टवेयर) के सह-संस्थापक सोलोमन हाइक्स ने 2019 में लिखा, अगर WASM+WASI 2008 में मौजूद होता, तो हमें डॉकर बनाने की जरूरत नहीं होती। यह कितना महत्वपूर्ण है। सर्वर पर WebAssembly कंप्यूटिंग का भविष्य है। वासमर, संस्करण 1.0 में, सॉफ्टवेयर कंटेनरीकरण प्रदान करता है, हम सार्वभौमिक बायनेरिज़ बनाते हैं जो बिना किसी संशोधन के कहीं भी काम करते हैं, जिसमें लिनक्स, मैकओएस, विंडोज और वेब ब्राउज़र जैसे ऑपरेटिंग सिस्टम शामिल हैं। सुरक्षित निष्पादन के लिए डिफ़ॉल्ट रूप से वासम स्वचालित रूप से सैंडबॉक्स करता है।

मेजबान पर्यावरण
सामान्य मानक जावास्क्रिप्ट एपीआई के लिए मुख्य विनिर्देश और एम्बेडिंग पर विवरण प्रदान करता है।

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

वासम कार्यक्रम
एक वासम प्रोग्राम को एक अलग मॉड्यूल के रूप में डिज़ाइन किया गया है जिसमें विभिन्न वासम-परिभाषित मूल्यों और प्रोग्राम प्रकार की परिभाषाओं का संग्रह है। ये या तो द्विआधारी या शाब्दिक प्रारूप (नीचे देखें) में व्यक्त किए गए हैं कि दोनों की एक सामान्य संरचना है।

निर्देश सेट
वासम प्रोग्राम के बाइनरी प्रारूप के लिए मुख्य मानक एक निर्देश सेट आर्किटेक्चर (आईएसए) को परिभाषित करता है जिसमें वीएम द्वारा निष्पादित विशिष्ट प्रकार के ऑपरेशन शामिल होते हैं (यह निर्दिष्ट किए बिना कि उन्हें कैसे निष्पादित किया जाना चाहिए)। निर्देशों की सूची में मानक मेमोरी लोड / स्टोर निर्देश, संख्यात्मक, पैरामीट्रिक, नियंत्रण प्रवाह निर्देश सेट आर्किटेक्चर और वास-विशिष्ट चर निर्देश शामिल हैं। मूल मानक (एमवीपी) में इस्तेमाल किए गए ऑपकोड की संख्या 256 संभावित ऑपकोड में से 200 से थोड़ी कम थी। WebAssembly के बाद के संस्करणों ने opcodes की संख्या को 200 से थोड़ा अधिक बढ़ा दिया। WebAssembly SIMD प्रस्ताव (समानांतर प्रसंस्करण के लिए) 128-बिट कंप्यूटिंग के लिए एक वैकल्पिक opcode उपसर्ग (0xfd) पेश करता है। 128-बिट SIMD। SIMD प्रीफ़िक्स का संयोजन, साथ ही एक ऑपकोड जो SIMD प्रीफ़िक्स के बाद मान्य है, एक SIMD ऑपकोड बनाता है। SIMD ऑपकोड न्यूनतम व्यवहार्य उत्पाद (MVP) SIMD क्षमता के लिए अतिरिक्त 236 निर्देश लाते हैं (कुल लगभग 436 निर्देशों के लिए)। वे निर्देश, अंतिम रूप दिए गए ऑपकोड Google के V8 (Google क्रोम में) और मोज़िला फ़ायरफ़ॉक्स में संबंधित इंजन में लागू किया गया है (लेकिन वेब ब्राउज़र के स्थिर संस्करणों में सक्षम नहीं है), और बाद में SIMD MVP के निर्देशों के लिए कुछ अतिरिक्त प्रस्ताव भी हैं, और टेबल पर एक अलग रिलैक्स-सिम प्रस्ताव भी है। ये SIMD ऑपकोड पोर्टेबल भी हैं और x64 और ARM जैसे देशी निर्देश सेट में अनुवादित हैं। इसके विपरीत, न तो जावा की जावा बायटेकोड निर्देश सूची (न ही CIL निर्देशों की सूची) SIMD का समर्थन करती है, उनके ऑपकोड स्तर पर, यानी मानक में; दोनों में कुछ समांतर एपीआई हैं जो सिम स्पीडअप प्रदान करते हैं। जावा के लिए x64 SIMD के लिए आंतरिक कार्यों को जोड़ने के लिए एक एक्सटेंशन है, वह पोर्टेबल नहीं है, यानी एआरएम या स्मार्टफोन पर प्रयोग करने योग्य नहीं है। एसएमडी के साथ असेंबली कोड को कॉल करके स्मार्टफोन सिमड का समर्थन कर सकते हैं, और सी # में समान समर्थन है।

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

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

सभी पूर्णांक स्थिरांक एक अंतरिक्ष-कुशल, चर-लंबाई LEB128 एन्कोडिंग का उपयोग करके एन्कोड किए गए हैं। WebAssembly टेक्स्ट फॉर्मेट को एस-अभिव्यक्ति का उपयोग करके फोल्ड किए गए फॉर्मेट में अधिक कैननिक रूप से लिखा गया है। निर्देशों और अभिव्यक्तियों के लिए, यह प्रारूप विशुद्ध रूप से वाक्यात्मक चीनी है और इसमें रैखिक प्रारूप के साथ कोई व्यवहारिक अंतर नहीं है। द्वारा wasm2wat, ऊपर दिए गए कोड को डीकंपाइल करता है:

<वाक्यविन्यास प्रकाश लैंग = वाट> (मापांक ($t0 टाइप करें (func (परम i64) (परिणाम i64)))  (func $f0 (प्रकार $t0) (परम $p0 i64) (परिणाम i64) (यदि $I0 (परिणाम i64) ;; $I0 एक अप्रयुक्त लेबल नाम है     (i64.eqz (स्थानीय.get $p0)) ;; नाम $p0 यहाँ 0 जैसा ही है     (तब (i64.const 1))     (अन्य (i64.mul         (स्थानीय। $p0 प्राप्त करें)          (कॉल $f0 ;; नाम $f0 यहाँ 0 जैसा ही है (i64.उप             (स्थानीय। $p0 प्राप्त करें)              (i64.const 1))))))) 

ध्यान दें कि एक मॉड्यूल निहित रूप से संकलक द्वारा उत्पन्न होता है। फ़ंक्शन को वास्तव में बाइनरी में टाइप टेबल की प्रविष्टि द्वारा संदर्भित किया जाता है, इसलिए एक प्रकार का खंड और type डिकंपाइलर द्वारा उत्सर्जित। कंपाइलर और डीकंपलर को ऑनलाइन एक्सेस किया जा सकता है।

यह भी देखें

 * वास्तुकला तटस्थ वितरण प्रारूप (ANDF)
 * UNCOL
 * जावा बाइटकोड
 * सामान्य भाषा रनटाइम
 * एलएलवीएम
 * संकलक
 * में porting

बाहरी संबंध

 * W3C Community Group
 * WebAssembly Design
 * – with info on browser compatibility and specifications (WebAssembly JavaScript API)
 * – with info on browser compatibility and specifications (WebAssembly JavaScript API)