वेब असेंबली: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 49: Line 49:
quote=... this specification is complemented by additional documents defining interfaces to specific embedding environments such as the Web. These will each define a WebAssembly application programming interface (API) suitable for a given environment.}}
quote=... this specification is complemented by additional documents defining interfaces to specific embedding environments such as the Web. These will each define a WebAssembly application programming interface (API) suitable for a given environment.}}
</ref>
</ref>
वेब असेंबली का मुख्य लक्ष्य [[वेब पृष्ठ]]ों पर उच्च-प्रदर्शन अनुप्रयोगों को सक्षम करना है, लेकिन यह कोई वेब-विशिष्ट धारणा नहीं बनाता है या वेब-विशिष्ट सुविधाएँ प्रदान नहीं करता है, इसलिए इसे अन्य वातावरणों में भी नियोजित किया जा सकता है।<ref>{{Cite web|
 
वेब असेंबली का मुख्य लक्ष्य [[वेब पृष्ठ|वेब पृष्ठों]] पर उच्च-प्रदर्शन अनुप्रयोगों को सक्षम करना है, लेकिन यह कोई वेब-विशिष्ट धारणा नहीं बनाता है या वेब-विशिष्ट सुविधाएँ प्रदान नहीं करता है, इसलिए इसे अन्य वातावरणों में भी नियोजित किया जा सकता है।<ref>{{Cite web|
title=Introduction — WebAssembly 1.1|
title=Introduction — WebAssembly 1.1|
url=https://webassembly.github.io/spec/core/intro/introduction.html|
url=https://webassembly.github.io/spec/core/intro/introduction.html|
Line 69: Line 70:
journal=SIGPLAN Notices|volume=52|issue=6|pages=185–200|doi=10.1145/3140587.3062363|issn=0362-1340|
journal=SIGPLAN Notices|volume=52|issue=6|pages=185–200|doi=10.1145/3140587.3062363|issn=0362-1340|
quote=While the Web is the primary motivation for WebAssembly, nothing in its design depends on the Web or a JavaScript environment. It is an open standard specifically designed for embedding in multiple contexts, and we expect that stand-alone implementations will become available in the future.|doi-access=free}}
quote=While the Web is the primary motivation for WebAssembly, nothing in its design depends on the Web or a JavaScript environment. It is an open standard specifically designed for embedding in multiple contexts, and we expect that stand-alone implementations will become available in the future.|doi-access=free}}
</ref><ref name=":1"/>और किसी भी ऑपरेटिंग सिस्टम पर किसी भी भाषा का समर्थन करने का लक्ष्य रखता है,<ref name="Wasmer" />और व्यवहार में सभी सबसे लोकप्रिय भाषाओं में पहले से ही कम से कम कुछ स्तर का समर्थन है।
</ref><ref name=":1" /> और किसी भी ऑपरेटिंग सिस्टम पर किसी भी भाषा का समर्थन करने का लक्ष्य रखता है,<ref name="Wasmer" /> और व्यवहार में सभी सबसे लोकप्रिय भाषाओं में पहले से ही कम से कम कुछ स्तर का समर्थन है।


में घोषित किया {{Start date|2015}} और पहली बार में जारी किया गया {{Start date|2017|3}}, वेब असेंबली 5 दिसंबर 2019 को वर्ल्ड वाइड वेब कंसोर्टियम की सिफारिश बन गई<ref>{{cite web |
2015 में घोषित किया गया और पहली बार मार्च 2017 में जारी किया गया वेब असेंबली 5 दिसंबर 2019 को वर्ल्ड वाइड वेब कंसोर्टियम की सिफारिश बन गया<ref>{{cite web |
author1=World Wide Web Consortium |
author1=World Wide Web Consortium |
title=WebAssembly Core Specification |
title=WebAssembly Core Specification |
Line 84: Line 85:
url=https://webassembly.github.io/spec/core/|
url=https://webassembly.github.io/spec/core/|
access-date=2021-03-22|website=webassembly.github.io}}
access-date=2021-03-22|website=webassembly.github.io}}
</ref> और इसने 2021 में [[संगणक तंत्र संस्था]] [[SIGPLAN]] से प्रोग्रामिंग लैंग्वेज सॉफ्टवेयर अवार्ड प्राप्त किया।<ref>{{Cite web|
</ref> और इसे 2021 में [[संगणक तंत्र संस्था]] [[SIGPLAN|सिगप्लान]] से प्रोग्रामिंग भाषा सॉफ्टवेयर अवार्ड प्राप्त किया था।<ref>{{Cite web|
url=http://www.sigplan.org/Awards/Software/|
url=http://www.sigplan.org/Awards/Software/|
title=Programming Languages Software Award|
title=Programming Languages Software Award|
website=www.sigplan.org}}
website=www.sigplan.org}}
</ref> वर्ल्ड वाइड वेब कंसोर्टियम (W3C) [[Mozilla]], [[Microsoft]], [[Google]], Apple Inc., [[Fastly]], [[Intel]], और [[Red Hat]] के योगदान से मानक बनाए रखता है।<ref name="ars"/><ref name="bytecode"/>
</ref> वर्ल्ड वाइड वेब कंसोर्टियम (W3C) [[Mozilla|मोजिल्ला]], [[Microsoft|माइक्रोसॉफ्ट]], [[Google|गूगल]], एप्पल इंक., [[Fastly|फास्टली]], [[Intel|इंटेल]], और [[Red Hat|रेड हैट]] के योगदान से मानक बनाए रखता है।<ref name="ars" /><ref name="bytecode" />
 




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


वेब असेंबली की घोषणा पहली बार 2015 में की गई थी,<ref name="Launch bug"/>और पहला प्रदर्शन [[फ़ायरफ़ॉक्स]] में यूनिटी (गेम इंजन) के एंग्री बॉट्स को क्रियान्वित कर रहा था,<ref name="Unity in Firefox"/>[[गूगल क्रोम]],<ref name="V8 blog"/>और [[माइक्रोसॉफ्ट बढ़त]]<ref name="Edge"/>पूर्ववर्ती प्रौद्योगिकियां मोज़िला और [[Google मूल क्लाइंट]] से asm.js थीं,<ref name="techcrunch2015"/><ref name="PNaCl"/>और प्रारंभिक कार्यान्वयन asm.js के फीचर सेट पर आधारित था।<ref name="initial implementation"/>asm.js तकनीक पहले से ही निकट-देशी कोड निष्पादन गति प्रदान करती है<ref>{{Cite web|url=https://blog.mozilla.org/javascript/2013/08/01/staring-at-the-sun-dalvik-vs-spidermonkey/|title=Staring at the Sun: Dalvik vs. ASM.js vs. Native|website=blog.mozilla.org|access-date=7 December 2019|quote=Even discarding the one score where asm.js did better, it executes at around 70% of the speed of native C++ code.}}</ref><ref>{{Cite book|last=Arjun|first=Jangda, Abhinav Powers, Bobby Berger, Emery Guha|url=http://worldcat.org/oclc/1106328738|title=Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code|date=2019-01-25|oclc=1106328738}}</ref> और उन ब्राउज़रों के लिए व्यवहार्य विकल्प माना जा सकता है जो वेब असेंबली का समर्थन नहीं करते हैं या सुरक्षा कारणों से इसे अक्षम कर दिया है।
वेब असेंबली की घोषणा पहली बार 2015 में की गई थी,<ref name="Launch bug"/> और पहला प्रदर्शन [[फ़ायरफ़ॉक्स]] में यूनिटी (गेम इंजन) के एंग्री बॉट्स को क्रियान्वित कर रहा था,<ref name="Unity in Firefox"/>[[गूगल क्रोम]],<ref name="V8 blog"/> और [[माइक्रोसॉफ्ट बढ़त]]<ref name="Edge"/> पूर्ववर्ती प्रौद्योगिकियां मोज़िला और [[Google मूल क्लाइंट|गूगल मूल क्लाइंट]] से एएसएमडॉटजेएस थीं,<ref name="techcrunch2015"/><ref name="PNaCl"/> और प्रारंभिक कार्यान्वयन एएसएमडॉटजेएस के फीचर सेट पर आधारित था।<ref name="initial implementation"/> एएसएमडॉटजेएस तकनीक पहले से ही निकट-देशी कोड निष्पादन गति प्रदान करती है<ref>{{Cite web|url=https://blog.mozilla.org/javascript/2013/08/01/staring-at-the-sun-dalvik-vs-spidermonkey/|title=Staring at the Sun: Dalvik vs. ASM.js vs. Native|website=blog.mozilla.org|access-date=7 December 2019|quote=Even discarding the one score where asm.js did better, it executes at around 70% of the speed of native C++ code.}}</ref><ref>{{Cite book|last=Arjun|first=Jangda, Abhinav Powers, Bobby Berger, Emery Guha|url=http://worldcat.org/oclc/1106328738|title=Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code|date=2019-01-25|oclc=1106328738}}</ref> और उन ब्राउज़रों के लिए व्यवहार्य विकल्प माना जा सकता है जो वेब असेंबली का समर्थन नहीं करते हैं या सुरक्षा कारणों से इसे अक्षम कर दिया है।
 
मार्च 2017 में, [[न्यूनतम व्यवहार्य उत्पाद]] (एमवीपी) का डिज़ाइन समाप्त होने की घोषणा की गई और पूर्वावलोकन चरण समाप्त हो गया।<ref name="MVP"/> सितंबर 2017 के अंत में, [[सफारी (वेब ​​​​ब्राउज़र)]] को समर्थन के साथ जारी किया गया था। फरवरी 2018 में, वेब असेंबली वर्किंग ग्रुप में कोर स्पेसिफिकेशन, जावास्क्रिप्टइंटरफ़ेस और वेब एपीआई के लिए तीन सार्वजनिक कार्य प्रारूप प्रकाशित किए गये थे।<ref name="W3C-WD2018" /><ref name="W3C-CSWD2018" /><ref name="W3C-JIWD2018" /><ref name="W3C-WAWD2018" />


मार्च 2017 में, [[न्यूनतम व्यवहार्य उत्पाद]] (एमवीपी) का डिज़ाइन समाप्त होने की घोषणा की गई और पूर्वावलोकन चरण समाप्त हो गया।<ref name="MVP"/>सितंबर 2017 के अंत में, [[सफारी (वेब ​​​​ब्राउज़र)]] को समर्थन के साथ जारी किया गया था। फरवरी 2018 में, वेब असेंबली Working Group ने Core Specification, JavaScript इंटरफ़ेस और Web API के लिए तीन सार्वजनिक कार्य प्रारूप प्रकाशित किए।<ref name="W3C-WD2018" /><ref name="W3C-CSWD2018" /><ref name="W3C-JIWD2018" /><ref name="W3C-WAWD2018" />
जून 2019 में, क्रोम 75 को डिफ़ॉल्ट रूप से सक्षम वेब असेंबली थ्रेड्स के साथ जारी किया गया था।<ref>{{Cite web|title=WebAssembly Worker Based Threads - Chrome Platform Status|url=https://chromestatus.com/feature/5724132452859904|access-date=2022-02-19|website=chromestatus.com}}</ref>


जून 2019 में, Chrome 75 को डिफ़ॉल्ट रूप से सक्षम वेब असेंबली थ्रेड्स के साथ जारी किया गया था।<ref>{{Cite web|title=WebAssembly Worker Based Threads - Chrome Platform Status|url=https://chromestatus.com/feature/5724132452859904|access-date=2022-02-19|website=chromestatus.com}}</ref>
अप्रैल 2022 से, वेब असेंबली 2.0 ड्राफ़्ट स्थिति में है,<ref>{{Cite web |title=WebAssembly Specification — WebAssembly 2.0 (Draft 2022-09-01) |url=https://webassembly.github.io/spec/core/ |access-date=2022-09-09 |website=webassembly.github.io}}</ref><ref>{{Cite web |title=WebAssembly 2.0 First Public Working Drafts {{!}} W3C News |url=https://www.w3.org/blog/news/archives/9509 |access-date=2022-09-09 |language=en-US}}</ref> जो कई [[SIMD|सिमद]]-संबंधित निर्देश और नया वी128 डेटाटाइप जोड़ता है, फ़ंक्शन के लिए कई मान वापस करने की क्षमता, और मास मेमोरी इनिशियलाइज़/कॉपी करता है।
अप्रैल 2022 से, वेब असेंबली 2.0 ड्राफ़्ट स्थिति में है,<ref>{{Cite web |title=WebAssembly Specification — WebAssembly 2.0 (Draft 2022-09-01) |url=https://webassembly.github.io/spec/core/ |access-date=2022-09-09 |website=webassembly.github.io}}</ref><ref>{{Cite web |title=WebAssembly 2.0 First Public Working Drafts {{!}} W3C News |url=https://www.w3.org/blog/news/archives/9509 |access-date=2022-09-09 |language=en-US}}</ref> जो कई [[SIMD]]-संबंधित निर्देश और नया v128 डेटाटाइप जोड़ता है, फ़ंक्शन के लिए कई मान वापस करने की क्षमता, और मास मेमोरी इनिशियलाइज़/कॉपी करता है।


== कार्यान्वयन ==
== कार्यान्वयन ==
Line 106: Line 109:


=== वेब ब्राउज़र ===
=== वेब ब्राउज़र ===
नवंबर 2017 में, मोज़िला ने सभी प्रमुख ब्राउज़रों में समर्थन की घोषणा की,<ref name="in browsers"/>वेब असेंबली को एज 16 में डिफ़ॉल्ट रूप से सक्षम करने के बाद।<ref name="Edge16"/>समर्थन में iOS और Android के लिए मोबाइल वेब ब्राउज़र शामिल हैं।  {{As of|2022|10}}, 96% स्थापित ब्राउज़र  वेब असेंबली (संस्करण 1.0) का समर्थन करें।<ref name="caniuse.com"/>लेकिन पुराने ब्राउज़रों के लिए, वासम को जावास्क्रिप्ट [[पॉलीफ़िल (प्रोग्रामिंग)]] द्वारा asm.js में संकलित किया जा सकता है।<ref name="ars2015"/>
नवंबर 2017 में, वेब असेंबली को एज 16 में डिफ़ॉल्ट रूप से सक्षम करने के बाद,<ref name="in browsers"/> मोज़िला ने सभी प्रमुख ब्राउज़रों में समर्थन की घोषणा की थी।<ref name="Edge16"/> इस समर्थन में आईओएस और एंड्रॉयड के लिए मोबाइल वेब ब्राउज़र शामिल हैं।  {{As of|2022|10}}, 96% स्थापित ब्राउज़र  वेब असेंबली (संस्करण 1.0) का समर्थन करें।<ref name="caniuse.com"/> लेकिन पुराने ब्राउज़रों के लिए, वासम को जावास्क्रिप्ट [[पॉलीफ़िल (प्रोग्रामिंग)]] द्वारा एएसएमडॉटजेएस में संकलित किया जा सकता है।<ref name="ars2015"/>




Line 116: Line 119:
क्योंकि वेब असेंबली के निष्पादन योग्य पहले से संकलित होते हैं, उन्हें बनाने के लिए विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का उपयोग करना संभव है।<ref name=AcceleratingWeb/>यह वासम के सीधे संकलन के माध्यम से या वासम में संबंधित वर्चुअल मशीन # प्रोसेस वर्चुअल मशीनों के कार्यान्वयन के माध्यम से प्राप्त किया जाता है। संकलन लक्ष्य के रूप में वासम का समर्थन करने के लिए लगभग 40 प्रोग्रामिंग भाषाओं की सूचना दी गई है।<ref name=Implementations/>
क्योंकि वेब असेंबली के निष्पादन योग्य पहले से संकलित होते हैं, उन्हें बनाने के लिए विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का उपयोग करना संभव है।<ref name=AcceleratingWeb/>यह वासम के सीधे संकलन के माध्यम से या वासम में संबंधित वर्चुअल मशीन # प्रोसेस वर्चुअल मशीनों के कार्यान्वयन के माध्यम से प्राप्त किया जाता है। संकलन लक्ष्य के रूप में वासम का समर्थन करने के लिए लगभग 40 प्रोग्रामिंग भाषाओं की सूचना दी गई है।<ref name=Implementations/>


[[Emscripten]] C (प्रोग्रामिंग लैंग्वेज) और C ++ को Wasm में संकलित करता है<ref name="MVP"/>बैकएंड के रूप में बाइनरीन और [[एलएलवीएम]] का उपयोग करना।<ref>{{Cite tweet|user=kripken|number=1186407352880074752|title=Emscripten has switched to the upstream LLVM wasm backend by default! / Details:<nowiki>https://groups.google.com/forum/#!topic/emscripten-discuss/NpxVAOirSl4</nowiki> …|last=Zakai|first=Alon|date=21 October 2019|access-date=22 October 2019}}</ref> Emscripten किसी भी LLVM- समर्थित भाषाओं (जैसे C (प्रोग्रामिंग लैंग्वेज), C++ या [[जंग (प्रोग्रामिंग भाषा)]], अन्य के बीच) स्रोत कोड को बाइनरी फ़ाइल में संकलित कर सकता है जो उसी [[सैंडबॉक्स (कंप्यूटर सुरक्षा)]] में जावास्क्रिप्ट कोड के रूप में चलता है।{{Refn|group=note|According to official documentation, the Emscripten SDK may be used to create <code>.wasm</code> files which then may be executed in a web browser.<ref>{{Cite web|url=https://webassembly.org/getting-started/developers-guide/|title=Developer's Guide - WebAssembly|website=webassembly.org|access-date=10 June 2019}}</ref><ref>{{Cite web|url=https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm|title=Compiling a New C/C++ Module to WebAssembly|website=MDN Web Docs|language=en|access-date=10 June 2019}}</ref><ref>{{Cite web|url=https://emscripten.org/docs/compiling/WebAssembly.html|title=Building to WebAssembly — Emscripten 1.38.33 documentation|website=emscripten.org|access-date=10 June 2019}}</ref> Even though Emscripten can consume various languages when using [[Clang]], some problems may arise.<ref>{{Cite web|url=https://developers.google.com/web/updates/2018/03/emscripting-a-c-library|title=Emscripting a C library to Wasm {{!}} Web|website=Google Developers|language=en|access-date=10 June 2019}}</ref>}} Emscripten [[WebGL]] जैसे कई सामान्य रूप से उपयोग किए जाने वाले पर्यावरण इंटरफेस के लिए बाइंडिंग प्रदान करता है।
[[Emscripten]] C (प्रोग्रामिंग भाषा) और C ++ को Wasm में संकलित करता है<ref name="MVP"/>बैकएंड के रूप में बाइनरीन और [[एलएलवीएम]] का उपयोग करना।<ref>{{Cite tweet|user=kripken|number=1186407352880074752|title=Emscripten has switched to the upstream LLVM wasm backend by default! / Details:<nowiki>https://groups.google.com/forum/#!topic/emscripten-discuss/NpxVAOirSl4</nowiki> …|last=Zakai|first=Alon|date=21 October 2019|access-date=22 October 2019}}</ref> Emscripten किसी भी LLVM- समर्थित भाषाओं (जैसे C (प्रोग्रामिंग भाषा), C++ या [[जंग (प्रोग्रामिंग भाषा)]], अन्य के बीच) स्रोत कोड को बाइनरी फ़ाइल में संकलित कर सकता है जो उसी [[सैंडबॉक्स (कंप्यूटर सुरक्षा)]] में जावास्क्रिप्ट कोड के रूप में चलता है।{{Refn|group=note|According to official documentation, the Emscripten SDK may be used to create <code>.wasm</code> files which then may be executed in a web browser.<ref>{{Cite web|url=https://webassembly.org/getting-started/developers-guide/|title=Developer's Guide - WebAssembly|website=webassembly.org|access-date=10 June 2019}}</ref><ref>{{Cite web|url=https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm|title=Compiling a New C/C++ Module to WebAssembly|website=MDN Web Docs|language=en|access-date=10 June 2019}}</ref><ref>{{Cite web|url=https://emscripten.org/docs/compiling/WebAssembly.html|title=Building to WebAssembly — Emscripten 1.38.33 documentation|website=emscripten.org|access-date=10 June 2019}}</ref> Even though Emscripten can consume various languages when using [[Clang]], some problems may arise.<ref>{{Cite web|url=https://developers.google.com/web/updates/2018/03/emscripting-a-c-library|title=Emscripting a C library to Wasm {{!}} Web|website=Google Developers|language=en|access-date=10 June 2019}}</ref>}} Emscripten [[WebGL]] जैसे कई सामान्य रूप से उपयोग किए जाने वाले पर्यावरण इंटरफेस के लिए बाइंडिंग प्रदान करता है।


संस्करण 8 के अनुसार, स्टैंडअलोन [[बजना]] सी (प्रोग्रामिंग लैंग्वेज) और सी ++ को वासम में संकलित कर सकता है।<ref>{{Cite web|title=LLVM 8.0.0 Release Notes — LLVM 8 documentation|url=https://releases.llvm.org/8.0.0/docs/ReleaseNotes.html#changes-to-the-webassembly-target|access-date=22 October 2019|website=releases.llvm.org}}</ref>
संस्करण 8 के अनुसार, स्टैंडअलोन [[बजना]] सी (प्रोग्रामिंग भाषा) और सी ++ को वासम में संकलित कर सकता है।<ref>{{Cite web|title=LLVM 8.0.0 Release Notes — LLVM 8 documentation|url=https://releases.llvm.org/8.0.0/docs/ReleaseNotes.html#changes-to-the-webassembly-target|access-date=22 October 2019|website=releases.llvm.org}}</ref>
इसका प्रारंभिक उद्देश्य C (प्रोग्रामिंग भाषा) और C++ से [[संकलन (कंप्यूटिंग)]] का समर्थन करना है,<ref name="github.com"/>हालांकि अन्य स्रोत [[प्रोग्रामिंग भाषा]] जैसे रस्ट (प्रोग्रामिंग भाषा), .NET भाषाओं के लिए समर्थन<ref name="Rust" /><ref>{{Cite web|title=Frequently asked questions (FAQ) about Blazor|url=https://blazor.net/docs/introduction/faq.html|access-date=18 June 2018|website=blazor.net}}</ref><ref name="Implementations" />और [[असेंबलीस्क्रिप्ट]]<ref>{{Citation|title=AssemblyScript/assemblyscript|date=2020-09-09|url=https://github.com/AssemblyScript/assemblyscript|publisher=The AssemblyScript Project|access-date=2020-09-09}}</ref> ([[टाइपप्रति]]-लाइक) भी उभर रहा है। एमवीपी जारी होने के बाद, थ्रेड (कंप्यूटिंग) #Multhreading और [[कचरा संग्रह (कंप्यूटर विज्ञान)]] का समर्थन करने की योजना है<ref name="next"/><ref>{{Cite web|url=https://github.com/WebAssembly/proposals/issues/16|title=🛤 Garbage collection · Issue #16 · WebAssembly/proposals|website=GitHub|language=en|access-date=25 July 2019}}</ref> जो वेब असेंबली को सी शार्प (प्रोग्रामिंग लैंग्वेज)|C# ([[ब्लेज़र]] द्वारा समर्थित), F शार्प (प्रोग्रामिंग लैंग्वेज)|F# (बोलेरो द्वारा समर्थित) जैसी कचरा एकत्र करने वाली प्रोग्रामिंग भाषाओं के लिए संकलन लक्ष्य बना देगा<ref>{{Cite web|url=https://fsbolero.io/|title=Bolero: F# in WebAssembly|website=fsbolero.io|access-date=25 July 2019}}</ref> ब्लेज़र), पायथन (प्रोग्रामिंग लैंग्वेज), और यहां तक ​​​​कि [[जावास्क्रिप्ट]] की मदद से जहां ब्राउजर की समय-समय पर संकलन की गति बहुत धीमी मानी जाती है। [[पायथन (प्रोग्रामिंग भाषा)]] सहित कई अन्य भाषाओं को कुछ समर्थन प्राप्त है,<ref>{{Cite web|title=Pyodide: Bringing the scientific Python stack to the browser – Mozilla Hacks - the Web developer blog|url=https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser|access-date=2020-09-09|website=Mozilla Hacks – the Web developer blog|language=en-US}}</ref> [[जूलिया (प्रोग्रामिंग भाषा)]],<ref>{{Cite web|url=https://nextjournal.com/sdanisch/wasm-julia|title=Julia in the Browser |website=nextjournal.com|access-date=9 April 2019}}</ref><ref>{{Cite web|url=https://github.com/JuliaPackaging/Yggdrasil/pull/2|title=WebAssembly platform by tshort · Pull Request #2 · JuliaPackaging/Yggdrasil|website=GitHub|language=en|access-date=9 April 2019}}</ref><ref>{{Citation|last=Fischer|first=Keno|title=GitHub - Keno/julia-wasm: Running julia on wasm.|date=22 July 2019|url=https://github.com/Keno/julia-wasm|access-date=25 July 2019}}</ref> और [[रूबी (प्रोग्रामिंग भाषा)]]।<ref>{{Cite web|url=https://ruby.dj/|title=MRuby in Your Browser|website=ruby.dj|access-date=25 July 2019}}</ref>
इसका प्रारंभिक उद्देश्य C (प्रोग्रामिंग भाषा) और C++ से [[संकलन (कंप्यूटिंग)]] का समर्थन करना है,<ref name="github.com"/>हालांकि अन्य स्रोत [[प्रोग्रामिंग भाषा]] जैसे रस्ट (प्रोग्रामिंग भाषा), .NET भाषाओं के लिए समर्थन<ref name="Rust" /><ref>{{Cite web|title=Frequently asked questions (FAQ) about Blazor|url=https://blazor.net/docs/introduction/faq.html|access-date=18 June 2018|website=blazor.net}}</ref><ref name="Implementations" />और [[असेंबलीस्क्रिप्ट]]<ref>{{Citation|title=AssemblyScript/assemblyscript|date=2020-09-09|url=https://github.com/AssemblyScript/assemblyscript|publisher=The AssemblyScript Project|access-date=2020-09-09}}</ref> ([[टाइपप्रति]]-लाइक) भी उभर रहा है। एमवीपी जारी होने के बाद, थ्रेड (कंप्यूटिंग) #Multhreading और [[कचरा संग्रह (कंप्यूटर विज्ञान)]] का समर्थन करने की योजना है<ref name="next"/><ref>{{Cite web|url=https://github.com/WebAssembly/proposals/issues/16|title=🛤 Garbage collection · Issue #16 · WebAssembly/proposals|website=GitHub|language=en|access-date=25 July 2019}}</ref> जो वेब असेंबली को सी शार्प (प्रोग्रामिंग भाषा)|C# ([[ब्लेज़र]] द्वारा समर्थित), F शार्प (प्रोग्रामिंग भाषा)|F# (बोलेरो द्वारा समर्थित) जैसी कचरा एकत्र करने वाली प्रोग्रामिंग भाषाओं के लिए संकलन लक्ष्य बना देगा<ref>{{Cite web|url=https://fsbolero.io/|title=Bolero: F# in WebAssembly|website=fsbolero.io|access-date=25 July 2019}}</ref> ब्लेज़र), पायथन (प्रोग्रामिंग भाषा), और यहां तक ​​​​कि [[जावास्क्रिप्ट]] की मदद से जहां ब्राउजर की समय-समय पर संकलन की गति बहुत धीमी मानी जाती है। [[पायथन (प्रोग्रामिंग भाषा)]] सहित कई अन्य भाषाओं को कुछ समर्थन प्राप्त है,<ref>{{Cite web|title=Pyodide: Bringing the scientific Python stack to the browser – Mozilla Hacks - the Web developer blog|url=https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser|access-date=2020-09-09|website=Mozilla Hacks – the Web developer blog|language=en-US}}</ref> [[जूलिया (प्रोग्रामिंग भाषा)]],<ref>{{Cite web|url=https://nextjournal.com/sdanisch/wasm-julia|title=Julia in the Browser |website=nextjournal.com|access-date=9 April 2019}}</ref><ref>{{Cite web|url=https://github.com/JuliaPackaging/Yggdrasil/pull/2|title=WebAssembly platform by tshort · Pull Request #2 · JuliaPackaging/Yggdrasil|website=GitHub|language=en|access-date=9 April 2019}}</ref><ref>{{Citation|last=Fischer|first=Keno|title=GitHub - Keno/julia-wasm: Running julia on wasm.|date=22 July 2019|url=https://github.com/Keno/julia-wasm|access-date=25 July 2019}}</ref> और [[रूबी (प्रोग्रामिंग भाषा)]]।<ref>{{Cite web|url=https://ruby.dj/|title=MRuby in Your Browser|website=ruby.dj|access-date=25 July 2019}}</ref>




Line 127: Line 130:
# सुरक्षा विचार (नीचे चर्चा की गई)
# सुरक्षा विचार (नीचे चर्चा की गई)


वेब असेंबली डेस्कटॉप और मोबाइल पर समर्थित है, लेकिन बाद में, व्यवहार में (गैर-छोटी मेमोरी आवंटन के लिए, जैसे कि यूनिटी (गेम इंजन) गेम इंजन के साथ) गंभीर सीमाएँ हैं जो कई अनुप्रयोगों को मोबाइल पर मज़बूती से तैनात करने के लिए अक्षम बनाती हैं। ब्राउज़र [..] वर्तमान में क्रोम-विशिष्ट वर्कअराउंड का सहारा लिए बिना Android पर क्रोम पर ~300MB से अधिक मेमोरी आवंटित करना विश्वसनीय नहीं है, न ही iOS पर सफारी में।<ref>{{Cite web|title=Wasm needs a better memory management story · Issue #1397 · WebAssembly/design|url=https://github.com/WebAssembly/design/issues/1397|access-date=2021-02-15|website=GitHub|language=en}}</ref>
वेब असेंबली डेस्कटॉप और मोबाइल पर समर्थित है, लेकिन बाद में, व्यवहार में (गैर-छोटी मेमोरी आवंटन के लिए, जैसे कि यूनिटी (गेम इंजन) गेम इंजन के साथ) गंभीर सीमाएँ हैं जो कई अनुप्रयोगों को मोबाइल पर मज़बूती से तैनात करने के लिए अक्षम बनाती हैं। ब्राउज़र [..] वर्तमान में क्रोम-विशिष्ट वर्कअराउंड का सहारा लिए बिना एंड्रॉयड पर क्रोम पर ~300MB से अधिक मेमोरी आवंटित करना विश्वसनीय नहीं है, न ही iOS पर सफारी में।<ref>{{Cite web|title=Wasm needs a better memory management story · Issue #1397 · WebAssembly/design|url=https://github.com/WebAssembly/design/issues/1397|access-date=2021-02-15|website=GitHub|language=en}}</ref>
कोई प्रत्यक्ष दस्तावेज़ ऑब्जेक्ट मॉडल (DOM) एक्सेस नहीं है; हालाँकि, इसके लिए प्रॉक्सी फ़ंक्शंस बनाना संभव है, उदाहरण के लिए stdweb के माध्यम से<ref>{{Cite web|url=https://docs.rs/stdweb/*/stdweb/|title=stdweb - Rust|website=docs.rs|access-date=5 June 2019|quote=The goal of this crate is to provide Rust bindings to the Web APIs and to allow a high degree of interoperability between Rust and JavaScript.}}</ref> या web_sys<ref>{{Cite web|url=https://docs.rs/web-sys/*/web_sys/|title=web_sys - Rust|website=docs.rs|access-date=5 June 2019|quote=Raw API bindings for Web APIs. This is a procedurally generated crate from browser WebIDL which provides a binding to all APIs that browser provide on the web.}}</ref> जंग (प्रोग्रामिंग भाषा) का उपयोग करते समय।
कोई प्रत्यक्ष दस्तावेज़ ऑब्जेक्ट मॉडल (DOM) एक्सेस नहीं है; हालाँकि, इसके लिए प्रॉक्सी फ़ंक्शंस बनाना संभव है, उदाहरण के लिए stdweb के माध्यम से<ref>{{Cite web|url=https://docs.rs/stdweb/*/stdweb/|title=stdweb - Rust|website=docs.rs|access-date=5 June 2019|quote=The goal of this crate is to provide Rust bindings to the Web APIs and to allow a high degree of interoperability between Rust and JavaScript.}}</ref> या web_sys<ref>{{Cite web|url=https://docs.rs/web-sys/*/web_sys/|title=web_sys - Rust|website=docs.rs|access-date=5 June 2019|quote=Raw API bindings for Web APIs. This is a procedurally generated crate from browser WebIDL which provides a binding to all APIs that browser provide on the web.}}</ref> जंग (प्रोग्रामिंग भाषा) का उपयोग करते समय।


सभी प्रमुख वेब ब्राउज़र वेब असेंबली की अनुमति देते हैं यदि सामग्री-सुरक्षा-नीति निर्दिष्ट नहीं है, या यदि असुरक्षित-ईवल का उपयोग किया जाता है, लेकिन अन्यथा प्रमुख वेब ब्राउज़र अलग व्यवहार करते हैं।<ref>{{Cite web|title=WebAssembly/content-security-policy|url=https://github.com/WebAssembly/content-security-policy|access-date=2021-02-17|website=GitHub|language=en}}</ref> व्यावहारिक रूप से वेब असेंबली का उपयोग Chrome पर असुरक्षित-eval के बिना नहीं किया जा सकता है,<ref>{{Cite web|title=948834 - chromium - An open-source project to help move the web forward. - Monorail|url=https://bugs.chromium.org/p/chromium/issues/detail?id=948834&can=1&q=wasm-eval|access-date=2021-02-17|website=bugs.chromium.org}}</ref><ref name="ReferenceA">{{Cite web|title=No way to use WebAssembly on Chrome without 'unsafe-eval' · Issue #7 · WebAssembly/content-security-policy|url=https://github.com/WebAssembly/content-security-policy/issues/7|access-date=2021-02-17|website=GitHub|language=en}}</ref> जबकि वर्कर थ्रेड वर्कअराउंड उपलब्ध है।<ref name="ReferenceA"/>
सभी प्रमुख वेब ब्राउज़र वेब असेंबली की अनुमति देते हैं यदि सामग्री-सुरक्षा-नीति निर्दिष्ट नहीं है, या यदि असुरक्षित-ईवल का उपयोग किया जाता है, लेकिन अन्यथा प्रमुख वेब ब्राउज़र अलग व्यवहार करते हैं।<ref>{{Cite web|title=WebAssembly/content-security-policy|url=https://github.com/WebAssembly/content-security-policy|access-date=2021-02-17|website=GitHub|language=en}}</ref> व्यावहारिक रूप से वेब असेंबली का उपयोग क्रोम पर असुरक्षित-eval के बिना नहीं किया जा सकता है,<ref>{{Cite web|title=948834 - chromium - An open-source project to help move the web forward. - Monorail|url=https://bugs.chromium.org/p/chromium/issues/detail?id=948834&can=1&q=wasm-eval|access-date=2021-02-17|website=bugs.chromium.org}}</ref><ref name="ReferenceA">{{Cite web|title=No way to use WebAssembly on Chrome without 'unsafe-eval' · Issue #7 · WebAssembly/content-security-policy|url=https://github.com/WebAssembly/content-security-policy/issues/7|access-date=2021-02-17|website=GitHub|language=en}}</ref> जबकि वर्कर थ्रेड वर्कअराउंड उपलब्ध है।<ref name="ReferenceA"/>






== सुरक्षा विचार ==
== सुरक्षा विचार ==
जून 2018 में, सुरक्षा शोधकर्ता ने [[स्पेक्टर (सुरक्षा भेद्यता)]] और [[मेल्टडाउन (सुरक्षा भेद्यता)]] सुरक्षा भेद्यताओं के लिए वेबएसेम्बली का उपयोग करने की संभावना प्रस्तुत की, बार साझा मेमोरी के साथ [[थ्रेड (कंप्यूटिंग)]] के लिए समर्थन जोड़ा गया। इस चिंता के कारण, वेब असेंबली Developers ने इस सुविधा को होल्ड पर रख दिया।<ref name="forcepoint"/><ref name="bleeping computer">{{cite web |last1=Cimpanu |first1=Catalin |title=Changes in WebAssembly Could Render Meltdown and Spectre Browser Patches Useless |url=https://www.bleepingcomputer.com/news/security/changes-in-webassembly-could-render-meltdown-and-spectre-browser-patches-useless/ |publisher=[[Bleeping Computer]] |access-date=8 June 2019 |language=en-us |date=24 June 2018}}</ref><ref name="tech republic">{{cite web |last1=Sanders |first1=James |title=How opaque WebAssembly code could increase the risk of Spectre attacks online |url=https://www.techrepublic.com/article/how-opaque-webassembly-code-could-increase-the-risk-of-spectre-attacks-online/ |website=[[Tech Republic]] |access-date=9 June 2019 |language=en |date=25 June 2018}}</ref> हालाँकि, इन भविष्य के भाषा एक्सटेंशन का पता लगाने के लिए, Google Chrome ने अक्टूबर 2018 में वेब असेंबली थ्रेड प्रस्ताव के लिए प्रायोगिक समर्थन जोड़ा।<ref>{{cite web |last1=R |first1=Bhagyashree |title=Google Chrome 70 now supports WebAssembly threads to build multi-threaded web applications |url=https://hub.packtpub.com/google-chrome-70-now-supports-webassembly-threads-to-build-multi-threaded-web-applications/ |website=[[Packt|Packt Pub]] |access-date=9 June 2019 |date=30 October 2018}}</ref>
जून 2018 में, सुरक्षा शोधकर्ता ने [[स्पेक्टर (सुरक्षा भेद्यता)]] और [[मेल्टडाउन (सुरक्षा भेद्यता)]] सुरक्षा भेद्यताओं के लिए वेबएसेम्बली का उपयोग करने की संभावना प्रस्तुत की, बार साझा मेमोरी के साथ [[थ्रेड (कंप्यूटिंग)]] के लिए समर्थन जोड़ा गया। इस चिंता के कारण, वेब असेंबली Developers ने इस सुविधा को होल्ड पर रख दिया।<ref name="forcepoint"/><ref name="bleeping computer">{{cite web |last1=Cimpanu |first1=Catalin |title=Changes in WebAssembly Could Render Meltdown and Spectre Browser Patches Useless |url=https://www.bleepingcomputer.com/news/security/changes-in-webassembly-could-render-meltdown-and-spectre-browser-patches-useless/ |publisher=[[Bleeping Computer]] |access-date=8 June 2019 |language=en-us |date=24 June 2018}}</ref><ref name="tech republic">{{cite web |last1=Sanders |first1=James |title=How opaque WebAssembly code could increase the risk of Spectre attacks online |url=https://www.techrepublic.com/article/how-opaque-webassembly-code-could-increase-the-risk-of-spectre-attacks-online/ |website=[[Tech Republic]] |access-date=9 June 2019 |language=en |date=25 June 2018}}</ref> हालाँकि, इन भविष्य के भाषा एक्सटेंशन का पता लगाने के लिए, Google क्रोम ने अक्टूबर 2018 में वेब असेंबली थ्रेड प्रस्ताव के लिए प्रायोगिक समर्थन जोड़ा।<ref>{{cite web |last1=R |first1=Bhagyashree |title=Google Chrome 70 now supports WebAssembly threads to build multi-threaded web applications |url=https://hub.packtpub.com/google-chrome-70-now-supports-webassembly-threads-to-build-multi-threaded-web-applications/ |website=[[Packt|Packt Pub]] |access-date=9 June 2019 |date=30 October 2018}}</ref>
वेब असेंबली की [[मैलवेयर]] लेखकों, स्कैमर्स और [[फ़िशिंग]] हमलावरों के लिए सबूत छिपाने में अधिक आसानी की अनुमति देने के लिए आलोचना की गई है; वेब असेंबली केवल अपने संकलित रूप में उपयोगकर्ता की मशीन पर मौजूद है, जो [मैलवेयर बनाता है] का पता लगाना मुश्किल है।<ref name="virus bulletin">{{cite web |last1=Lonkar |first1=Aishwarya |last2=Chandrayan |first2=Siddhesh |title=The dark side of WebAssembly |url=https://www.virusbulletin.com/virusbulletin/2018/10/dark-side-webassembly/ |website=[[Virus Bulletin]] |access-date=8 June 2019 |date=October 2018}}</ref> वेब असेंबली की गति और छुपाने की क्षमता ने वेबसाइट विज़िटर के डिवाइस पर छिपे हुए क्रिप्टोकुरेंसी # खनन में इसका उपयोग किया है।<ref name="virus bulletin"/><ref name="malwarebytes">{{cite web |last1=Segura |first1=Jérôme |title=Persistent drive-by cryptomining coming to a browser near you |url=https://blog.malwarebytes.com/cybercrime/2017/11/persistent-drive-by-cryptomining-coming-to-a-browser-near-you/ |publisher=[[Malwarebytes]] |access-date=8 June 2019 |date=29 November 2017}}</ref><ref name="forcepoint">{{cite web |last1=Neumann |first1=Robert |last2=Toro |first2=Abel |title=In-browser mining: Coinhive and WebAssembly |url=https://www.forcepoint.com/blog/x-labs/browser-mining-coinhive-and-webassembly |publisher=Forcepoint |access-date=8 June 2019 |language=en |date=19 April 2018}}</ref> [[कॉइनहाइव]], वेबसाइट विज़िटर के ब्राउज़रों में क्रिप्टोक्यूरेंसी खनन की सुविधा प्रदान करने वाली अब निष्क्रिय सेवा है, उनका दावा है कि उनका माइनर वेब असेंबली का उपयोग करता है और देशी माइनर के प्रदर्शन के लगभग 65% के साथ चलता है।<ref name="forcepoint" />Technische Universität Braunschweig के जून 2019 के अध्ययन ने एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों में वेब असेंबली के उपयोग का विश्लेषण किया और पाया कि प्रचलित उपयोग दुर्भावनापूर्ण क्रिप्टो खनन के लिए था, और यह मैलवेयर अध्ययन किए गए वेब असेंबली-उपयोग करने वाली वेबसाइटों के आधे से अधिक के लिए जिम्मेदार है।<ref>{{Cite web|url=https://www.infoq.com/news/2019/10/WebAssembly-wasm-malicious-usage/|title=Recent Study Estimates That 50% of Websites Using WebAssembly Apply It for Malicious Purposes|website=InfoQ|access-date=3 November 2019}}</ref><ref>{{cite book |last1=Musch |first1=Marius |title=Detection of Intrusions and Malware, and Vulnerability Assessment |volume=11543 |pages=23–42 |last2=Wressnegger |first2=Christian |last3=Johns |first3=Martin |last4=Rieck |first4=Konrad |chapter=New Kid on the Web: A Study on the Prevalence of WebAssembly in the Wild |url=https://www.sec.cs.tu-bs.de/pubs/2019a-dimva.pdf |publisher=[[Detection of Intrusions and Malware, and Vulnerability Assessment]] |access-date=15 February 2022 |doi=10.1007/978-3-030-22038-9_2 |date=June 2019|series=Lecture Notes in Computer Science |isbn=978-3-030-22037-2|s2cid=184482682 }} [https://www.dimva2019.org/wp-content/uploads/sites/31/2019/06/DIMVA19-slides-2-R.pdf Slides (PDF)]</ref> यूनिवर्सिटी ऑफ़ स्टटगार्ट | यूनिवर्सिटी स्टटगार्ट के अप्रैल 2021 के अध्ययन में पाया गया कि तब से क्रिप्टो माइनिंग को हाशिए पर डाल दिया गया है, जो एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों सहित स्रोतों की विस्तृत श्रृंखला से एकत्र किए गए सभी वेब असेंबली मॉड्यूल के 1% से नीचे गिर गया है।<ref>Aaron Hilbig, Daniel Lehmann, and Michael Pradel (April 2021). "An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases." (Archived April 2021) https://software-lab.org/publications/www2021.pdf</ref>  
वेब असेंबली की [[मैलवेयर]] लेखकों, स्कैमर्स और [[फ़िशिंग]] हमलावरों के लिए सबूत छिपाने में अधिक आसानी की अनुमति देने के लिए आलोचना की गई है; वेब असेंबली केवल अपने संकलित रूप में उपयोगकर्ता की मशीन पर मौजूद है, जो [मैलवेयर बनाता है] का पता लगाना मुश्किल है।<ref name="virus bulletin">{{cite web |last1=Lonkar |first1=Aishwarya |last2=Chandrayan |first2=Siddhesh |title=The dark side of WebAssembly |url=https://www.virusbulletin.com/virusbulletin/2018/10/dark-side-webassembly/ |website=[[Virus Bulletin]] |access-date=8 June 2019 |date=October 2018}}</ref> वेब असेंबली की गति और छुपाने की क्षमता ने वेबसाइट विज़िटर के डिवाइस पर छिपे हुए क्रिप्टोकुरेंसी # खनन में इसका उपयोग किया है।<ref name="virus bulletin"/><ref name="malwarebytes">{{cite web |last1=Segura |first1=Jérôme |title=Persistent drive-by cryptomining coming to a browser near you |url=https://blog.malwarebytes.com/cybercrime/2017/11/persistent-drive-by-cryptomining-coming-to-a-browser-near-you/ |publisher=[[Malwarebytes]] |access-date=8 June 2019 |date=29 November 2017}}</ref><ref name="forcepoint">{{cite web |last1=Neumann |first1=Robert |last2=Toro |first2=Abel |title=In-browser mining: Coinhive and WebAssembly |url=https://www.forcepoint.com/blog/x-labs/browser-mining-coinhive-and-webassembly |publisher=Forcepoint |access-date=8 June 2019 |language=en |date=19 April 2018}}</ref> [[कॉइनहाइव]], वेबसाइट विज़िटर के ब्राउज़रों में क्रिप्टोक्यूरेंसी खनन की सुविधा प्रदान करने वाली अब निष्क्रिय सेवा है, उनका दावा है कि उनका माइनर वेब असेंबली का उपयोग करता है और देशी माइनर के प्रदर्शन के लगभग 65% के साथ चलता है।<ref name="forcepoint" />Technische Universität Braunschweig के जून 2019 के अध्ययन ने एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों में वेब असेंबली के उपयोग का विश्लेषण किया और पाया कि प्रचलित उपयोग दुर्भावनापूर्ण क्रिप्टो खनन के लिए था, और यह मैलवेयर अध्ययन किए गए वेब असेंबली-उपयोग करने वाली वेबसाइटों के आधे से अधिक के लिए जिम्मेदार है।<ref>{{Cite web|url=https://www.infoq.com/news/2019/10/WebAssembly-wasm-malicious-usage/|title=Recent Study Estimates That 50% of Websites Using WebAssembly Apply It for Malicious Purposes|website=InfoQ|access-date=3 November 2019}}</ref><ref>{{cite book |last1=Musch |first1=Marius |title=Detection of Intrusions and Malware, and Vulnerability Assessment |volume=11543 |pages=23–42 |last2=Wressnegger |first2=Christian |last3=Johns |first3=Martin |last4=Rieck |first4=Konrad |chapter=New Kid on the Web: A Study on the Prevalence of WebAssembly in the Wild |url=https://www.sec.cs.tu-bs.de/pubs/2019a-dimva.pdf |publisher=[[Detection of Intrusions and Malware, and Vulnerability Assessment]] |access-date=15 February 2022 |doi=10.1007/978-3-030-22038-9_2 |date=June 2019|series=Lecture Notes in Computer Science |isbn=978-3-030-22037-2|s2cid=184482682 }} [https://www.dimva2019.org/wp-content/uploads/sites/31/2019/06/DIMVA19-slides-2-R.pdf Slides (PDF)]</ref> यूनिवर्सिटी ऑफ़ स्टटगार्ट | यूनिवर्सिटी स्टटगार्ट के अप्रैल 2021 के अध्ययन में पाया गया कि तब से क्रिप्टो माइनिंग को हाशिए पर डाल दिया गया है, जो एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों सहित स्रोतों की विस्तृत श्रृंखला से एकत्र किए गए सभी वेब असेंबली मॉड्यूल के 1% से नीचे गिर गया है।<ref>Aaron Hilbig, Daniel Lehmann, and Michael Pradel (April 2021). "An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases." (Archived April 2021) https://software-lab.org/publications/www2021.pdf</ref>  


Line 166: Line 169:
==== निर्देश सेट ====
==== निर्देश सेट ====
वासम प्रोग्राम के बाइनरी प्रारूप के लिए मुख्य मानक निर्देश सेट आर्किटेक्चर (आईएसए) को परिभाषित करता है जिसमें वीएम द्वारा निष्पादित विशिष्ट प्रकार के ऑपरेशन शामिल होते हैं (यह निर्दिष्ट किए बिना कि उन्हें कैसे निष्पादित किया जाना चाहिए)।<ref>{{Cite web|url=https://webassembly.github.io/spec/core/intro/introduction.html?highlight=isa#scope|title=Introduction — WebAssembly 1.0|website=webassembly.github.io|access-date=17 May 2019}}</ref> निर्देशों की सूची में मानक मेमोरी लोड / स्टोर निर्देश, संख्यात्मक, पैरामीट्रिक, नियंत्रण प्रवाह निर्देश सेट आर्किटेक्चर और वास-विशिष्ट चर निर्देश शामिल हैं।<ref>{{Cite web|url=https://webassembly.github.io/spec/core/syntax/instructions.html|title=Instructions — WebAssembly 1.0|website=webassembly.github.io|access-date=12 November 2019}}</ref>
वासम प्रोग्राम के बाइनरी प्रारूप के लिए मुख्य मानक निर्देश सेट आर्किटेक्चर (आईएसए) को परिभाषित करता है जिसमें वीएम द्वारा निष्पादित विशिष्ट प्रकार के ऑपरेशन शामिल होते हैं (यह निर्दिष्ट किए बिना कि उन्हें कैसे निष्पादित किया जाना चाहिए)।<ref>{{Cite web|url=https://webassembly.github.io/spec/core/intro/introduction.html?highlight=isa#scope|title=Introduction — WebAssembly 1.0|website=webassembly.github.io|access-date=17 May 2019}}</ref> निर्देशों की सूची में मानक मेमोरी लोड / स्टोर निर्देश, संख्यात्मक, पैरामीट्रिक, नियंत्रण प्रवाह निर्देश सेट आर्किटेक्चर और वास-विशिष्ट चर निर्देश शामिल हैं।<ref>{{Cite web|url=https://webassembly.github.io/spec/core/syntax/instructions.html|title=Instructions — WebAssembly 1.0|website=webassembly.github.io|access-date=12 November 2019}}</ref>
मूल मानक (एमवीपी) में इस्तेमाल किए गए ऑपकोड की संख्या 256 संभावित ऑपकोड में से 200 से थोड़ी कम थी। वेब असेंबली के बाद के संस्करणों ने opcodes की संख्या को 200 से थोड़ा अधिक बढ़ा दिया। [[WebAssembly SIMD|वेब असेंबली SIMD]] प्रस्ताव (समानांतर प्रसंस्करण के लिए) [[128-बिट कंप्यूटिंग]] के लिए वैकल्पिक opcode उपसर्ग (0xfd) पेश करता है। 128-बिट SIMD। SIMD प्रीफ़िक्स का संयोजन, साथ ही ऑपकोड जो SIMD प्रीफ़िक्स के बाद मान्य है, SIMD ऑपकोड बनाता है। SIMD ऑपकोड न्यूनतम व्यवहार्य उत्पाद (MVP) SIMD क्षमता के लिए अतिरिक्त 236 निर्देश लाते हैं (कुल लगभग 436 निर्देशों के लिए)।<ref>
मूल मानक (एमवीपी) में इस्तेमाल किए गए ऑपकोड की संख्या 256 संभावित ऑपकोड में से 200 से थोड़ी कम थी। वेब असेंबली के बाद के संस्करणों ने opcodes की संख्या को 200 से थोड़ा अधिक बढ़ा दिया। [[WebAssembly SIMD|वेब असेंबली सिमद]] प्रस्ताव (समानांतर प्रसंस्करण के लिए) [[128-बिट कंप्यूटिंग]] के लिए वैकल्पिक opcode उपसर्ग (0xfd) पेश करता है। 128-बिट सिमद। सिमद प्रीफ़िक्स का संयोजन, साथ ही ऑपकोड जो सिमद प्रीफ़िक्स के बाद मान्य है, सिमद ऑपकोड बनाता है। सिमद ऑपकोड न्यूनतम व्यवहार्य उत्पाद (MVP) सिमद क्षमता के लिए अतिरिक्त 236 निर्देश लाते हैं (कुल लगभग 436 निर्देशों के लिए)।<ref>
   {{
   {{
       Cite web
       Cite web
Line 192: Line 195:
           | access-date=2021-05-12
           | access-date=2021-05-12
   }}
   }}
</ref> वे निर्देश, अंतिम रूप दिए गए ऑपकोड<ref>{{Cite web|title=Update interpreter and text with finalized opcodes by ngzhian · Pull Request #486 · WebAssembly/simd|url=https://github.com/WebAssembly/simd/pull/486|access-date=2021-05-14|website=GitHub|language=en}}</ref> Google के V8 (Google क्रोम में) और मोज़िला फ़ायरफ़ॉक्स में संबंधित इंजन में लागू किया गया है (लेकिन वेब ब्राउज़र के स्थिर संस्करणों में सक्षम नहीं है),<ref>{{Cite web|title=WebAssembly/simd|url=https://github.com/WebAssembly/simd|access-date=2021-05-14|website=GitHub|language=en}}</ref> और बाद में SIMD MVP के निर्देशों के लिए कुछ अतिरिक्त प्रस्ताव भी हैं, और टेबल पर अलग रिलैक्स-सिम प्रस्ताव भी है।<ref>{{Citation|title=WebAssembly/relaxed-simd|date=2021-05-03|url=https://github.com/WebAssembly/relaxed-simd|publisher=WebAssembly|access-date=2021-05-14}}</ref>
</ref> वे निर्देश, अंतिम रूप दिए गए ऑपकोड<ref>{{Cite web|title=Update interpreter and text with finalized opcodes by ngzhian · Pull Request #486 · WebAssembly/simd|url=https://github.com/WebAssembly/simd/pull/486|access-date=2021-05-14|website=GitHub|language=en}}</ref> Google के V8 (Google क्रोम में) और मोज़िला फ़ायरफ़ॉक्स में संबंधित इंजन में लागू किया गया है (लेकिन वेब ब्राउज़र के स्थिर संस्करणों में सक्षम नहीं है),<ref>{{Cite web|title=WebAssembly/simd|url=https://github.com/WebAssembly/simd|access-date=2021-05-14|website=GitHub|language=en}}</ref> और बाद में सिमद MVP के निर्देशों के लिए कुछ अतिरिक्त प्रस्ताव भी हैं, और टेबल पर अलग रिलैक्स-सिम प्रस्ताव भी है।<ref>{{Citation|title=WebAssembly/relaxed-simd|date=2021-05-03|url=https://github.com/WebAssembly/relaxed-simd|publisher=WebAssembly|access-date=2021-05-14}}</ref>
ये SIMD ऑपकोड पोर्टेबल भी हैं और x64 और ARM जैसे देशी निर्देश सेट में अनुवादित हैं। इसके विपरीत, न तो जावा की जावा बायटेकोड निर्देश सूची (न ही CIL निर्देशों की सूची) SIMD का समर्थन करती है, उनके ऑपकोड स्तर पर, यानी मानक में; दोनों में कुछ समांतर एपीआई हैं जो सिम स्पीडअप प्रदान करते हैं। जावा के लिए x64 SIMD के लिए [[आंतरिक कार्य]]ों को जोड़ने के लिए एक्सटेंशन है,<ref>{{Cite web|title=How we made the JVM 40x faster|url=https://astojanov.github.io/blog/2017/12/20/scala-simd.html<!--|quote=support for all 5912 Intel SIMD intrinsics from MMX to AVX-512.-->|access-date=2021-02-17|website=astojanov.github.io}}</ref> वह पोर्टेबल नहीं है, यानी एआरएम या स्मार्टफोन पर प्रयोग करने योग्य नहीं है। एसएमडी के साथ असेंबली कोड को कॉल करके स्मार्टफोन सिमड का समर्थन कर सकते हैं, और सी # में समान समर्थन है।
ये सिमद ऑपकोड पोर्टेबल भी हैं और x64 और ARM जैसे देशी निर्देश सेट में अनुवादित हैं। इसके विपरीत, न तो जावा की जावा बायटेकोड निर्देश सूची (न ही CIL निर्देशों की सूची) सिमद का समर्थन करती है, उनके ऑपकोड स्तर पर, यानी मानक में; दोनों में कुछ समांतर एपीआई हैं जो सिम स्पीडअप प्रदान करते हैं। जावा के लिए x64 सिमद के लिए [[आंतरिक कार्य]]ों को जोड़ने के लिए एक्सटेंशन है,<ref>{{Cite web|title=How we made the JVM 40x faster|url=https://astojanov.github.io/blog/2017/12/20/scala-simd.html<!--|quote=support for all 5912 Intel SIMD intrinsics from MMX to AVX-512.-->|access-date=2021-02-17|website=astojanov.github.io}}</ref> वह पोर्टेबल नहीं है, यानी एआरएम या स्मार्टफोन पर प्रयोग करने योग्य नहीं है। एसएमडी के साथ असेंबली कोड को कॉल करके स्मार्टफोन सिमड का समर्थन कर सकते हैं, और सी # में समान समर्थन है।


==== कोड प्रतिनिधित्व ====
==== कोड प्रतिनिधित्व ====

Revision as of 12:16, 24 February 2023

WebAssembly
WebAssembly Logo.svg
Paradigmstructured; stack machine[1]
द्वारा डिज़ाइन किया गयाW3C
Developer
पहली प्रस्तुतिMarch 2017; 7 years ago (2017-03)
ओएसPlatform independent
लाइसेंसApache License 2.0
फ़ाइल नाम एक्सटेंशनएस
  • .wat (text format)
  • .wasm (binary format)
Influenced by

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

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

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


इतिहास

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

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

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

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

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

कार्यान्वयन

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


वेब ब्राउज़र

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


संकलक

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

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

संस्करण 8 के अनुसार, स्टैंडअलोन बजना सी (प्रोग्रामिंग भाषा) और सी ++ को वासम में संकलित कर सकता है।[49] इसका प्रारंभिक उद्देश्य C (प्रोग्रामिंग भाषा) और C++ से संकलन (कंप्यूटिंग) का समर्थन करना है,[50]हालांकि अन्य स्रोत प्रोग्रामिंग भाषा जैसे रस्ट (प्रोग्रामिंग भाषा), .NET भाषाओं के लिए समर्थन[51][52][43]और असेंबलीस्क्रिप्ट[53] (टाइपप्रति-लाइक) भी उभर रहा है। एमवीपी जारी होने के बाद, थ्रेड (कंप्यूटिंग) #Multhreading और कचरा संग्रह (कंप्यूटर विज्ञान) का समर्थन करने की योजना है[54][55] जो वेब असेंबली को सी शार्प (प्रोग्रामिंग भाषा)|C# (ब्लेज़र द्वारा समर्थित), F शार्प (प्रोग्रामिंग भाषा)|F# (बोलेरो द्वारा समर्थित) जैसी कचरा एकत्र करने वाली प्रोग्रामिंग भाषाओं के लिए संकलन लक्ष्य बना देगा[56] ब्लेज़र), पायथन (प्रोग्रामिंग भाषा), और यहां तक ​​​​कि जावास्क्रिप्ट की मदद से जहां ब्राउजर की समय-समय पर संकलन की गति बहुत धीमी मानी जाती है। पायथन (प्रोग्रामिंग भाषा) सहित कई अन्य भाषाओं को कुछ समर्थन प्राप्त है,[57] जूलिया (प्रोग्रामिंग भाषा),[58][59][60] और रूबी (प्रोग्रामिंग भाषा)[61]


सीमाएं

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

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

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


सुरक्षा विचार

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

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

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


वासी

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

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


विशिष्टता

मेजबान पर्यावरण

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


वर्चुअल मशीन

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


वासम कार्यक्रम

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


निर्देश सेट

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

कोड प्रतिनिधित्व

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

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

C source code and corresponding वेब असेंबली
C source code वेब असेंबली .wat text format वेब असेंबली .wasm binary format
int factorial(int n) {
  if (n == 0)
    return 1;
  else
    return n * factorial(n-1);
}
(func (param i64) (result i64)
  local.get 0
  i64.eqz
  if (result i64)
      i64.const 1
  else
      local.get 0
      local.get 0
      i64.const 1
      i64.sub
      call 0
      i64.mul
  end)
00 61 73 6D 01 00 00 00
01 06 01 60 01 7E 01 7E
03 02 01 00
0A 17 01
15 00
20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B
0B

सभी पूर्णांक स्थिरांक अंतरिक्ष-कुशल, चर-लंबाई LEB128 एन्कोडिंग का उपयोग करके एन्कोड किए गए हैं।[97] वेब असेंबली टेक्स्ट फॉर्मेट को एस-अभिव्यक्ति का उपयोग करके फोल्ड किए गए फॉर्मेट में अधिक कैननिक रूप से लिखा गया है। निर्देशों और अभिव्यक्तियों के लिए, यह प्रारूप विशुद्ध रूप से वाक्यात्मक चीनी है और इसमें रैखिक प्रारूप के साथ कोई व्यवहारिक अंतर नहीं है।[98]द्वारा 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 डिकंपाइलर द्वारा उत्सर्जित।[99] कंपाइलर और डीकंपलर को ऑनलाइन एक्सेस किया जा सकता है।[100]


टिप्पणियाँ

  1. According to official documentation, the Emscripten SDK may be used to create .wasm files which then may be executed in a web browser.[45][46][47] Even though Emscripten can consume various languages when using Clang, some problems may arise.[48]


यह भी देखें

संदर्भ

  1. "WebAssembly/design/Semantics.md". GitHub (in English). Retrieved 2021-02-23. WebAssembly code can be considered a structured stack machine; a machine where most computations use a stack of values, but control flow is expressed in structured constructs such as blocks, ifs, and loops. In practice, implementations need not maintain an actual value stack, nor actual data structures for control; they need only behave as if they did so.
  2. Mozilla. "Understanding WebAssembly text format". MDN Web Docs. Retrieved 9 December 2019.
  3. "Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 18 June 2019. WebAssembly is an open standard...
  4. "Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 18 June 2019. WebAssembly is a ... code format
  5. 5.0 5.1 "Conventions — WebAssembly 1.0". webassembly.github.io. Retrieved 17 May 2019. WebAssembly is a programming language that has multiple concrete representations (its binary format and the text format). Both map to a common structure.
  6. "Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 18 June 2019. ... this specification is complemented by additional documents defining interfaces to specific embedding environments such as the Web. These will each define a WebAssembly application programming interface (API) suitable for a given environment.
  7. "Introduction — WebAssembly 1.1". webassembly.github.io. Retrieved 2021-02-19. Its main goal is to enable high performance applications on the Web, but it does not make any Web-specific assumptions or provide Web-specific features, so it can be employed in other environments as well.
  8. Haas, Andreas; Rossberg, Andreas; Schuff, Derek L.; Titzer, Ben L.; Holman, Michael; Gohman, Dan; Wagner, Luke; Zakai, Alon; Bastien, JF (14 June 2017). "Bringing the Web Up to Speed with WebAssembly". SIGPLAN Notices. 52 (6): 185–200. doi:10.1145/3140587.3062363. ISSN 0362-1340. While the Web is the primary motivation for WebAssembly, nothing in its design depends on the Web or a JavaScript environment. It is an open standard specifically designed for embedding in multiple contexts, and we expect that stand-alone implementations will become available in the future.
  9. 9.0 9.1 9.2 "Outside the web: standalone WebAssembly binaries using Emscripten · V8". v8.dev. Retrieved 2020-07-28.
  10. 10.0 10.1 10.2 "Wasmer - The Universal WebAssembly Runtime". wasmer.io. Retrieved 2021-02-19. Compile everything to WebAssembly. Run it on any OS or embed it into other languages.
  11. World Wide Web Consortium. "WebAssembly Core Specification". World Wide Web Consortium (W3). Retrieved 9 December 2019.
  12. Couriol, Bruno. "WebAssembly 1.0 Becomes a W3C Recommendation and the Fourth Language to Run Natively in Browsers". infoq.com. Retrieved 9 December 2019.
  13. "WebAssembly Specification — WebAssembly 1.1". webassembly.github.io. Retrieved 2021-03-22.
  14. "Programming Languages Software Award". www.sigplan.org.
  15. Bright, Peter (18 June 2015). "The Web is getting its bytecode: WebAssembly". Ars Technica. Condé Nast.
  16. 16.0 16.1 "New Bytecode Alliance Brings the Security, Ubiquity, and Interoperability of the Web to the World of Pervasive Computing". Mozilla (in English). 12 November 2019. Retrieved 27 May 2019.
  17. "Launch bug". GitHub / WebAssembly / design. 11 June 2015.
  18. Wagner, Luke (14 March 2016). "A WebAssembly Milestone: Experimental Support in Multiple Browsers". Mozilla Hacks.
  19. Thompson, Seth (15 March 2016). "Experimental support for WebAssembly in V8". V8 Blog.
  20. Zhu, Limin (15 March 2016). "Previewing WebAssembly experiments in Microsoft Edge". Microsoft Edge dev blog.
  21. Lardinois, Frederic (17 June 2015). "Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web". TechCrunch (in English). Retrieved 24 December 2017.
  22. Avram, Abel (31 May 2017). "Google Is to Remove Support for PNaCl". InfoQ. Retrieved 22 December 2017.
  23. "WebAssembly: a binary format for the web". ②ality – JavaScript and more. 18 June 2015.
  24. "Staring at the Sun: Dalvik vs. ASM.js vs. Native". blog.mozilla.org. Retrieved 7 December 2019. Even discarding the one score where asm.js did better, it executes at around 70% of the speed of native C++ code.
  25. Arjun, Jangda, Abhinav Powers, Bobby Berger, Emery Guha (2019-01-25). Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code. OCLC 1106328738.{{cite book}}: CS1 maint: multiple names: authors list (link)
  26. 26.0 26.1 Krill, Paul (6 March 2017). "WebAssembly is now ready for browsers to use". InfoWorld (in English). Retrieved 23 December 2017.
  27. "WebAssembly First Public Working Drafts". W3C. 15 February 2018. Retrieved 20 April 2018.
  28. "WebAssembly Core Specification". W3C. 15 February 2018. Retrieved 20 April 2018.
  29. "WebAssembly JavaScript Interface". W3C. 15 February 2018. Retrieved 20 April 2018.
  30. "WebAssembly Web API". W3C. 15 February 2018. Retrieved 20 April 2018.
  31. "WebAssembly Worker Based Threads - Chrome Platform Status". chromestatus.com. Retrieved 2022-02-19.
  32. "WebAssembly Specification — WebAssembly 2.0 (Draft 2022-09-01)". webassembly.github.io. Retrieved 2022-09-09.
  33. "WebAssembly 2.0 First Public Working Drafts | W3C News" (in English). Retrieved 2022-09-09.
  34. "Non-Web Embeddings". WebAssembly. Retrieved 15 May 2019.
  35. "Non-Web Embeddings". GitHub / WebAssembly. Retrieved 15 May 2019.
  36. "WebAssembly support now shipping in all major browsers". The Mozilla Blog (in English). Retrieved 21 November 2017.
  37. "Introducing new JavaScript optimizations, WebAssembly, SharedArrayBuffer, and Atomics in EdgeHTML 16". Microsoft Edge Dev Blog (in English). 31 October 2017. Retrieved 21 November 2017.
  38. "WebAssembly". Can I use. Retrieved 9 September 2022.
  39. Bright, Peter (18 June 2015). "The Web is getting its bytecode: WebAssembly". Ars Technica (in English). Retrieved 23 December 2017.
  40. "Wasmtime — a small and efficient runtime for WebAssembly & WASI". wasmtime.dev. Retrieved 2020-12-18.
  41. "Roadmap". Retrieved 2021-12-07.
  42. Ball, Kevin (26 June 2018). "How WebAssembly is Accelerating the Future of Web Development". Archived from the original on 12 February 2019. Retrieved 22 October 2018.
  43. 43.0 43.1 "Awesome WebAssembly Languages". GitHub. 26 June 2018. Retrieved 15 February 2022.
  44. Zakai, Alon [@kripken] (21 October 2019). "Emscripten has switched to the upstream LLVM wasm backend by default! / Details:https://groups.google.com/forum/#!topic/emscripten-discuss/NpxVAOirSl4 …" (Tweet). Retrieved 22 October 2019 – via Twitter.
  45. "Developer's Guide - WebAssembly". webassembly.org. Retrieved 10 June 2019.
  46. "Compiling a New C/C++ Module to WebAssembly". MDN Web Docs (in English). Retrieved 10 June 2019.
  47. "Building to WebAssembly — Emscripten 1.38.33 documentation". emscripten.org. Retrieved 10 June 2019.
  48. "Emscripting a C library to Wasm | Web". Google Developers (in English). Retrieved 10 June 2019.
  49. "LLVM 8.0.0 Release Notes — LLVM 8 documentation". releases.llvm.org. Retrieved 22 October 2019.
  50. 50.0 50.1 "WebAssembly High-Level Goals". GitHub / WebAssembly / design. 11 December 2015.
  51. Krill, Paul (29 November 2017). "Direct WebAssembly compilation comes to Rust language". InfoWorld (in English). Retrieved 24 December 2017.
  52. "Frequently asked questions (FAQ) about Blazor". blazor.net. Retrieved 18 June 2018.
  53. AssemblyScript/assemblyscript, The AssemblyScript Project, 2020-09-09, retrieved 2020-09-09
  54. Krill, Paul (26 October 2017). "What's next for WebAssembly: GC, threads, debugging". TechWorld. Retrieved 24 December 2017.
  55. "🛤 Garbage collection · Issue #16 · WebAssembly/proposals". GitHub (in English). Retrieved 25 July 2019.
  56. "Bolero: F# in WebAssembly". fsbolero.io. Retrieved 25 July 2019.
  57. "Pyodide: Bringing the scientific Python stack to the browser – Mozilla Hacks - the Web developer blog". Mozilla Hacks – the Web developer blog (in English). Retrieved 2020-09-09.
  58. "Julia in the Browser". nextjournal.com. Retrieved 9 April 2019.
  59. "WebAssembly platform by tshort · Pull Request #2 · JuliaPackaging/Yggdrasil". GitHub (in English). Retrieved 9 April 2019.
  60. Fischer, Keno (22 July 2019), GitHub - Keno/julia-wasm: Running julia on wasm., retrieved 25 July 2019
  61. "MRuby in Your Browser". ruby.dj. Retrieved 25 July 2019.
  62. "Wasm needs a better memory management story · Issue #1397 · WebAssembly/design". GitHub (in English). Retrieved 2021-02-15.
  63. "stdweb - Rust". docs.rs. Retrieved 5 June 2019. The goal of this crate is to provide Rust bindings to the Web APIs and to allow a high degree of interoperability between Rust and JavaScript.
  64. "web_sys - Rust". docs.rs. Retrieved 5 June 2019. Raw API bindings for Web APIs. This is a procedurally generated crate from browser WebIDL which provides a binding to all APIs that browser provide on the web.
  65. "WebAssembly/content-security-policy". GitHub (in English). Retrieved 2021-02-17.
  66. "948834 - chromium - An open-source project to help move the web forward. - Monorail". bugs.chromium.org. Retrieved 2021-02-17.
  67. 67.0 67.1 "No way to use WebAssembly on Chrome without 'unsafe-eval' · Issue #7 · WebAssembly/content-security-policy". GitHub (in English). Retrieved 2021-02-17.
  68. 68.0 68.1 68.2 Neumann, Robert; Toro, Abel (19 April 2018). "In-browser mining: Coinhive and WebAssembly" (in English). Forcepoint. Retrieved 8 June 2019.
  69. Cimpanu, Catalin (24 June 2018). "Changes in WebAssembly Could Render Meltdown and Spectre Browser Patches Useless" (in English). Bleeping Computer. Retrieved 8 June 2019.
  70. Sanders, James (25 June 2018). "How opaque WebAssembly code could increase the risk of Spectre attacks online". Tech Republic (in English). Retrieved 9 June 2019.
  71. R, Bhagyashree (30 October 2018). "Google Chrome 70 now supports WebAssembly threads to build multi-threaded web applications". Packt Pub. Retrieved 9 June 2019.
  72. 72.0 72.1 Lonkar, Aishwarya; Chandrayan, Siddhesh (October 2018). "The dark side of WebAssembly". Virus Bulletin. Retrieved 8 June 2019.
  73. Segura, Jérôme (29 November 2017). "Persistent drive-by cryptomining coming to a browser near you". Malwarebytes. Retrieved 8 June 2019.
  74. "Recent Study Estimates That 50% of Websites Using WebAssembly Apply It for Malicious Purposes". InfoQ. Retrieved 3 November 2019.
  75. Musch, Marius; Wressnegger, Christian; Johns, Martin; Rieck, Konrad (June 2019). "New Kid on the Web: A Study on the Prevalence of WebAssembly in the Wild". Detection of Intrusions and Malware, and Vulnerability Assessment (PDF). Lecture Notes in Computer Science. Vol. 11543. Detection of Intrusions and Malware, and Vulnerability Assessment. pp. 23–42. doi:10.1007/978-3-030-22038-9_2. ISBN 978-3-030-22037-2. S2CID 184482682. Retrieved 15 February 2022. Slides (PDF)
  76. Aaron Hilbig, Daniel Lehmann, and Michael Pradel (April 2021). "An Empirical Study of Real-World WebAssembly Binaries: Security, Languages, Use Cases." (Archived April 2021) https://software-lab.org/publications/www2021.pdf
  77. Watt, Conrad (2018-01-08). "Mechanising and verifying the WebAssembly specification". Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs. CPP 2018 (in English). Los Angeles CA USA: ACM: 53–65. doi:10.1145/3167082. ISBN 978-1-4503-5586-5. S2CID 9401691.
  78. "Symbolically Executing WebAssembly in Manticore". 31 January 2020. Retrieved 10 February 2020.
  79. "WebAssembly System Interface Repo". GitHub / WebAssembly. 10 February 2020.
  80. "Additional background on Capabilities". GitHub (in English). bytecodealliance. 4 March 2022.
  81. "Standardizing WASI: A system interface to run WebAssembly outside the web – Mozilla Hacks - the Web developer blog". Mozilla Hacks – the Web developer blog.
  82. "reference-sysroot Repo". GitHub / WebAssembly. 12 January 2020.
  83. "wasm-c-api Repo". GitHub / WebAssembly. 3 February 2020.
  84. 84.0 84.1 "The "Wasmer" WebAssembly Runtime is Generally Available". InfoQ (in English). Retrieved 2021-02-19.
  85. "Design Rationale". GitHub / WebAssembly / design. 1 October 2016.
  86. "Portability - WebAssembly". webassembly.org. Retrieved 2020-07-28.
  87. "Conventions — WebAssembly 1.0". webassembly.github.io. Retrieved 12 November 2019.
  88. "Introduction — WebAssembly 1.0". webassembly.github.io. Retrieved 17 May 2019.
  89. "Instructions — WebAssembly 1.0". webassembly.github.io. Retrieved 12 November 2019.
  90. Lively, Thomas (2021-02-19) [Pull Request opened on 2021-02-05]. "Final opcodes by tlively · Pull Request #452 · WebAssembly/simd · GitHub". Bytecode Alliance. Retrieved 2021-05-12 – via GitHub.
  91. Delendik, Yury (2021-02-19) [SIMD changes committed on 2021-02-19]. "File wasm-tools/expr.rs at b5c3d98e40590512a3b12470ef358d5c7b983b15 · bytecodealliance/wasm-tools · GitHub". Bytecode Alliance. Retrieved 2021-05-12 – via GitHub.
  92. "Update interpreter and text with finalized opcodes by ngzhian · Pull Request #486 · WebAssembly/simd". GitHub (in English). Retrieved 2021-05-14.
  93. "WebAssembly/simd". GitHub (in English). Retrieved 2021-05-14.
  94. WebAssembly/relaxed-simd, WebAssembly, 2021-05-03, retrieved 2021-05-14
  95. "How we made the JVM 40x faster". astojanov.github.io. Retrieved 2021-02-17.
  96. "Roadmap". WebAssembly. March 2017.
  97. WebAssembly Community Group (January 2020). "WebAssembly Specification Release 1.0". Retrieved 13 January 2020.
  98. "Folded instructions". GitHub. / WebAssembly / spec
  99. "Modules (Binary)". WebAssembly 1.0.
  100. "WebAssembly Binary Toolkit (wabt) demos". webassembly.github.io.

Definition of Free Cultural Works logo notext.svg This article incorporates text from a free content work. Licensed under Apache License 2.0 (license statement/permission). Text taken from Text Format, jfbastien; rossberg-chromium; kripken; titzer; s3ththompson; sunfishcode; lukewagner; flagxor; enricobacis; c3d; binji; andrewosh, GitHub. WebAssembly/design. To learn how to add open license text to Wikipedia articles, please see this how-to page. For information on reusing text from Wikipedia, please see the terms of use.


बाहरी संबंध