वेब असेंबली

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

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

2015 में घोषित किया गया और पहली बार मार्च 2017 में जारी किया गया वेब असेंबली 5 दिसंबर 2019 को वर्ल्ड वाइड वेब कंसोर्टियम की सिफारिश बन गया  और इसे 2021 में संगणक तंत्र संस्था सिगप्लान से प्रोग्रामिंग भाषा सॉफ्टवेयर अवार्ड प्राप्त किया था। वर्ल्ड वाइड वेब कंसोर्टियम (W3C) मोजिल्ला, माइक्रोसॉफ्ट, गूगल, एप्पल इंक., फास्टली, इंटेल, और रेड हैट के योगदान से मानक बनाए रखता है।

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

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

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

जून 2019 में, क्रोम 75 को डिफ़ॉल्ट रूप से सक्षम वेब असेंबली थ्रेड्स के साथ जारी किया गया था।

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

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

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

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

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

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

सीमाएं

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

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

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

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

बड़ी मात्रा में कोड को प्रभावी ढंग से अस्पष्ट करने की क्षमता का उपयोग विज्ञापन अवरोधन और गोपनीयता टूल को अक्षम करने के लिए भी किया जा सकता है जो गोपनीयता बैजर जैसे वेब ट्रैकिंग को रोकते हैं।

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

 * W3C Community Group
 * वेब असेंबली Design
 * – with info on browser compatibility and specifications (वेब असेंबली JavaScript API)
 * – with info on browser compatibility and specifications (वेब असेंबली JavaScript API)