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

From Vigyanwiki
No edit summary
No edit summary
Line 26: Line 26:
| influenced =
| influenced =
}}
}}
WebAssembly (कभी-कभी संक्षिप्त रूप से वासम) एक [[सॉफ्टवेयर पोर्टेबिलिटी]] [[बाइनरी कोड]] को परिभाषित करता है | बाइनरी-कोड प्रारूप और [[निष्पादन]] योग्य के लिए संबंधित पाठ प्रारूप<ref>{{cite web |author1=Mozilla |
WebAssembly (कभी-कभी संक्षिप्त रूप से वासम) [[सॉफ्टवेयर पोर्टेबिलिटी]] [[बाइनरी कोड]] को परिभाषित करता है | बाइनरी-कोड प्रारूप और [[निष्पादन]] योग्य के लिए संबंधित पाठ प्रारूप<ref>{{cite web |author1=Mozilla |
title=Understanding WebAssembly text format |
title=Understanding WebAssembly text format |
url=https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format |
url=https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format |
Line 55: Line 55:
quote=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.|
quote=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.|
website=webassembly.github.io}}
website=webassembly.github.io}}
</ref> यह एक [[खुला मानक]] है<ref>{{Cite journal|
</ref> यह [[खुला मानक]] है<ref>{{Cite journal|
last1=Haas|first1=Andreas|
last1=Haas|first1=Andreas|
last2=Rossberg|first2=Andreas|
last2=Rossberg|first2=Andreas|
Line 99: Line 99:


जून 2019 में, Chrome 75 को डिफ़ॉल्ट रूप से सक्षम WebAssembly थ्रेड्स के साथ जारी किया गया था।<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 को डिफ़ॉल्ट रूप से सक्षम WebAssembly थ्रेड्स के साथ जारी किया गया था।<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 से, WebAssembly 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 डेटाटाइप जोड़ता है, फ़ंक्शन के लिए कई मान वापस करने की क्षमता, और मास मेमोरी इनिशियलाइज़/कॉपी करता है।
अप्रैल 2022 से, WebAssembly 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 डेटाटाइप जोड़ता है, फ़ंक्शन के लिए कई मान वापस करने की क्षमता, और मास मेमोरी इनिशियलाइज़/कॉपी करता है।


== कार्यान्वयन ==
== कार्यान्वयन ==
जबकि WebAssembly को शुरू में वेब ब्राउज़र में निकट-देशी कोड निष्पादन गति को सक्षम करने के लिए डिज़ाइन किया गया था, इसे अधिक सामान्यीकृत संदर्भों में इस तरह के बाहर मूल्यवान माना गया है।<ref name="nonweb">{{cite web|title=Non-Web Embeddings|url=https://webassembly.org/docs/non-web/|access-date=15 May 2019|work=WebAssembly}}</ref><ref name="nonwebsrc">{{cite web|title=Non-Web Embeddings|url=https://github.com/WebAssembly/design/blob/master/NonWeb.md|access-date=15 May 2019|work=[[GitHub]] / WebAssembly}}</ref> चूंकि WebAssembly के रनटाइम वातावरण (आरई) निम्न स्तर की [[स्टैक मशीन]] ([[जावा वर्चुअल मशीन]] या [[एडोब फ्लैश]] के समान) हैं, जिन्हें होस्ट अनुप्रयोगों में एम्बेड किया जा सकता है, उनमें से कुछ ने वास्मटाइम और वासमर जैसे स्टैंडअलोन रनटाइम वातावरणों का एक तरीका खोज लिया है।<ref name=":1">{{Cite web|title=Outside the web: standalone WebAssembly binaries using Emscripten · V8|url=https://v8.dev/blog/emscripten-standalone-wasm#running-in-wasm-runtimes|access-date=2020-07-28|website=v8.dev}}</ref><ref name="Wasmer">{{Cite web|title=Wasmer - The Universal WebAssembly Runtime|url=https://wasmer.io/|quote=Compile everything to WebAssembly. Run it on any OS or embed it into other languages.|access-date=2021-02-19|website=wasmer.io}}</ref>
जबकि WebAssembly को शुरू में वेब ब्राउज़र में निकट-देशी कोड निष्पादन गति को सक्षम करने के लिए डिज़ाइन किया गया था, इसे अधिक सामान्यीकृत संदर्भों में इस तरह के बाहर मूल्यवान माना गया है।<ref name="nonweb">{{cite web|title=Non-Web Embeddings|url=https://webassembly.org/docs/non-web/|access-date=15 May 2019|work=WebAssembly}}</ref><ref name="nonwebsrc">{{cite web|title=Non-Web Embeddings|url=https://github.com/WebAssembly/design/blob/master/NonWeb.md|access-date=15 May 2019|work=[[GitHub]] / WebAssembly}}</ref> चूंकि WebAssembly के रनटाइम वातावरण (आरई) निम्न स्तर की [[स्टैक मशीन]] ([[जावा वर्चुअल मशीन]] या [[एडोब फ्लैश]] के समान) हैं, जिन्हें होस्ट अनुप्रयोगों में एम्बेड किया जा सकता है, उनमें से कुछ ने वास्मटाइम और वासमर जैसे स्टैंडअलोन रनटाइम वातावरणों का तरीका खोज लिया है।<ref name=":1">{{Cite web|title=Outside the web: standalone WebAssembly binaries using Emscripten · V8|url=https://v8.dev/blog/emscripten-standalone-wasm#running-in-wasm-runtimes|access-date=2020-07-28|website=v8.dev}}</ref><ref name="Wasmer">{{Cite web|title=Wasmer - The Universal WebAssembly Runtime|url=https://wasmer.io/|quote=Compile everything to WebAssembly. Run it on any OS or embed it into other languages.|access-date=2021-02-19|website=wasmer.io}}</ref>




Line 110: Line 110:


== संकलक ==
== संकलक ==
WebAssembly कार्यान्वयन आमतौर पर [[समय से पहले संकलन]] | समय से पहले (एओटी) या समय से पहले संकलन | समय से पहले (जेआईटी) संकलन का उपयोग करता है, लेकिन एक इंटरप्रेटर (कंप्यूटिंग) का भी उपयोग कर सकता है। जबकि पहला कार्यान्वयन वेब ब्राउज़र में आ चुका है, सामान्य प्रयोजन के उपयोग के लिए गैर-ब्राउज़र कार्यान्वयन भी हैं, जिनमें वास्मेर,<ref name="Wasmer" />वासटाइम<ref>{{Cite web|title=Wasmtime — a small and efficient runtime for WebAssembly & WASI|url=https://wasmtime.dev/|access-date=2020-12-18|website=wasmtime.dev}}</ref> या डब्ल्यूएएमआर,<ref name="bytecode" />wasm3, WAVM, और कई अन्य।<ref>{{Cite web|
WebAssembly कार्यान्वयन आमतौर पर [[समय से पहले संकलन]] | समय से पहले (एओटी) या समय से पहले संकलन | समय से पहले (जेआईटी) संकलन का उपयोग करता है, लेकिन इंटरप्रेटर (कंप्यूटिंग) का भी उपयोग कर सकता है। जबकि पहला कार्यान्वयन वेब ब्राउज़र में आ चुका है, सामान्य प्रयोजन के उपयोग के लिए गैर-ब्राउज़र कार्यान्वयन भी हैं, जिनमें वास्मेर,<ref name="Wasmer" />वासटाइम<ref>{{Cite web|title=Wasmtime — a small and efficient runtime for WebAssembly & WASI|url=https://wasmtime.dev/|access-date=2020-12-18|website=wasmtime.dev}}</ref> या डब्ल्यूएएमआर,<ref name="bytecode" />wasm3, WAVM, और कई अन्य।<ref>{{Cite web|
title=Roadmap
title=Roadmap
|url=https://webassembly.org/roadmap/ |access-date=2021-12-07|
|url=https://webassembly.org/roadmap/ |access-date=2021-12-07|
Line 116: Line 116:
क्योंकि WebAssembly के निष्पादन योग्य पहले से संकलित होते हैं, उन्हें बनाने के लिए विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का उपयोग करना संभव है।<ref name=AcceleratingWeb/>यह वासम के सीधे संकलन के माध्यम से या वासम में संबंधित वर्चुअल मशीन # प्रोसेस वर्चुअल मशीनों के कार्यान्वयन के माध्यम से प्राप्त किया जाता है। संकलन लक्ष्य के रूप में वासम का समर्थन करने के लिए लगभग 40 प्रोग्रामिंग भाषाओं की सूचना दी गई है।<ref name=Implementations/>
क्योंकि WebAssembly के निष्पादन योग्य पहले से संकलित होते हैं, उन्हें बनाने के लिए विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का उपयोग करना संभव है।<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> जो WebAssembly को सी शार्प (प्रोग्रामिंग लैंग्वेज)|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> जो WebAssembly को सी शार्प (प्रोग्रामिंग लैंग्वेज)|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 135: Line 135:


== सुरक्षा विचार ==
== सुरक्षा विचार ==
जून 2018 में, एक सुरक्षा शोधकर्ता ने [[स्पेक्टर (सुरक्षा भेद्यता)]] और [[मेल्टडाउन (सुरक्षा भेद्यता)]] सुरक्षा भेद्यताओं के लिए वेबएसेम्बली का उपयोग करने की संभावना प्रस्तुत की, एक बार साझा मेमोरी के साथ [[थ्रेड (कंप्यूटिंग)]] के लिए समर्थन जोड़ा गया। इस चिंता के कारण, WebAssembly 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 में WebAssembly थ्रेड प्रस्ताव के लिए प्रायोगिक समर्थन जोड़ा।<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 में, सुरक्षा शोधकर्ता ने [[स्पेक्टर (सुरक्षा भेद्यता)]] और [[मेल्टडाउन (सुरक्षा भेद्यता)]] सुरक्षा भेद्यताओं के लिए वेबएसेम्बली का उपयोग करने की संभावना प्रस्तुत की, बार साझा मेमोरी के साथ [[थ्रेड (कंप्यूटिंग)]] के लिए समर्थन जोड़ा गया। इस चिंता के कारण, WebAssembly 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 में WebAssembly थ्रेड प्रस्ताव के लिए प्रायोगिक समर्थन जोड़ा।<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>
WebAssembly की [[मैलवेयर]] लेखकों, स्कैमर्स और [[फ़िशिंग]] हमलावरों के लिए सबूत छिपाने में अधिक आसानी की अनुमति देने के लिए आलोचना की गई है; WebAssembly केवल अपने संकलित रूप में उपयोगकर्ता की मशीन पर मौजूद है, जो [मैलवेयर बनाता है] का पता लगाना मुश्किल है।<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> WebAssembly की गति और छुपाने की क्षमता ने वेबसाइट विज़िटर के डिवाइस पर छिपे हुए क्रिप्टोकुरेंसी # खनन में इसका उपयोग किया है।<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> [[कॉइनहाइव]], वेबसाइट विज़िटर के ब्राउज़रों में क्रिप्टोक्यूरेंसी खनन की सुविधा प्रदान करने वाली एक अब निष्क्रिय सेवा है, उनका दावा है कि उनका माइनर WebAssembly का उपयोग करता है और एक देशी माइनर के प्रदर्शन के लगभग 65% के साथ चलता है।<ref name="forcepoint" />Technische Universität Braunschweig के एक जून 2019 के अध्ययन ने एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों में WebAssembly के उपयोग का विश्लेषण किया और पाया कि प्रचलित उपयोग दुर्भावनापूर्ण क्रिप्टो खनन के लिए था, और यह मैलवेयर अध्ययन किए गए WebAssembly-उपयोग करने वाली वेबसाइटों के आधे से अधिक के लिए जिम्मेदार है।<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 मिलियन वेबसाइटों सहित स्रोतों की एक विस्तृत श्रृंखला से एकत्र किए गए सभी WebAssembly मॉड्यूल के 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>  
WebAssembly की [[मैलवेयर]] लेखकों, स्कैमर्स और [[फ़िशिंग]] हमलावरों के लिए सबूत छिपाने में अधिक आसानी की अनुमति देने के लिए आलोचना की गई है; WebAssembly केवल अपने संकलित रूप में उपयोगकर्ता की मशीन पर मौजूद है, जो [मैलवेयर बनाता है] का पता लगाना मुश्किल है।<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> WebAssembly की गति और छुपाने की क्षमता ने वेबसाइट विज़िटर के डिवाइस पर छिपे हुए क्रिप्टोकुरेंसी # खनन में इसका उपयोग किया है।<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> [[कॉइनहाइव]], वेबसाइट विज़िटर के ब्राउज़रों में क्रिप्टोक्यूरेंसी खनन की सुविधा प्रदान करने वाली अब निष्क्रिय सेवा है, उनका दावा है कि उनका माइनर WebAssembly का उपयोग करता है और देशी माइनर के प्रदर्शन के लगभग 65% के साथ चलता है।<ref name="forcepoint" />Technische Universität Braunschweig के जून 2019 के अध्ययन ने एलेक्सा की शीर्ष 1 मिलियन वेबसाइटों में WebAssembly के उपयोग का विश्लेषण किया और पाया कि प्रचलित उपयोग दुर्भावनापूर्ण क्रिप्टो खनन के लिए था, और यह मैलवेयर अध्ययन किए गए WebAssembly-उपयोग करने वाली वेबसाइटों के आधे से अधिक के लिए जिम्मेदार है।<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 मिलियन वेबसाइटों सहित स्रोतों की विस्तृत श्रृंखला से एकत्र किए गए सभी WebAssembly मॉड्यूल के 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 144: Line 144:


== वासी ==
== वासी ==
WebAssembly System Interface (WASI) मोज़िला द्वारा डिज़ाइन किया गया एक सरल इंटरफ़ेस ([[अनुप्रयोग बाइनरी इंटरफ़ेस]] और [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]]) है, जिसका उद्देश्य किसी भी प्लेटफ़ॉर्म पर पोर्टेबल होना है।<ref name="WASI">{{cite web |url=https://github.com/WebAssembly/WASI |title=WebAssembly System Interface Repo |work=[[GitHub]] / WebAssembly|date=10 February 2020 }}</ref> यह [[क्षमता-आधारित सुरक्षा]] द्वारा विवश फ़ाइल I/O जैसी [[POSIX]] जैसी सुविधाएँ प्रदान करता है।<ref>{{cite web |title=Additional background on Capabilities |url=https://github.com/bytecodealliance/wasmtime/blob/master/docs/WASI-capabilities.md |website=GitHub |date=4 March 2022 |publisher=bytecodealliance |language=en}}</ref><ref>{{cite web |title=Standardizing WASI: A system interface to run WebAssembly outside the web – Mozilla Hacks - the Web developer blog |url=https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ |website=Mozilla Hacks – the Web developer blog}}</ref> कुछ अन्य प्रस्तावित ABI/API भी हैं।<ref name="reference-sysroot">{{cite web |url=https://github.com/WebAssembly/reference-sysroot |title=reference-sysroot Repo |work=[[GitHub]] / WebAssembly|date=12 January 2020 }}</ref><ref name="wasm-c-api">{{cite web |url=https://github.com/WebAssembly/wasm-c-api |title=wasm-c-api Repo |work=[[GitHub]] / WebAssembly|date=3 February 2020 }}</ref>
WebAssembly System Interface (WASI) मोज़िला द्वारा डिज़ाइन किया गया सरल इंटरफ़ेस ([[अनुप्रयोग बाइनरी इंटरफ़ेस]] और [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]]) है, जिसका उद्देश्य किसी भी प्लेटफ़ॉर्म पर पोर्टेबल होना है।<ref name="WASI">{{cite web |url=https://github.com/WebAssembly/WASI |title=WebAssembly System Interface Repo |work=[[GitHub]] / WebAssembly|date=10 February 2020 }}</ref> यह [[क्षमता-आधारित सुरक्षा]] द्वारा विवश फ़ाइल I/O जैसी [[POSIX]] जैसी सुविधाएँ प्रदान करता है।<ref>{{cite web |title=Additional background on Capabilities |url=https://github.com/bytecodealliance/wasmtime/blob/master/docs/WASI-capabilities.md |website=GitHub |date=4 March 2022 |publisher=bytecodealliance |language=en}}</ref><ref>{{cite web |title=Standardizing WASI: A system interface to run WebAssembly outside the web – Mozilla Hacks - the Web developer blog |url=https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ |website=Mozilla Hacks – the Web developer blog}}</ref> कुछ अन्य प्रस्तावित ABI/API भी हैं।<ref name="reference-sysroot">{{cite web |url=https://github.com/WebAssembly/reference-sysroot |title=reference-sysroot Repo |work=[[GitHub]] / WebAssembly|date=12 January 2020 }}</ref><ref name="wasm-c-api">{{cite web |url=https://github.com/WebAssembly/wasm-c-api |title=wasm-c-api Repo |work=[[GitHub]] / WebAssembly|date=3 February 2020 }}</ref>
WASI [[शिमला मिर्च (यूनिक्स)]]#CloudABI और शिमला मिर्च (यूनिक्स) से प्रभावित है।
WASI [[शिमला मिर्च (यूनिक्स)]]#CloudABI और शिमला मिर्च (यूनिक्स) से प्रभावित है।


Line 157: Line 157:


=== वर्चुअल मशीन ===
=== वर्चुअल मशीन ===
वासम कोड (बाइनरी कोड, यानी बायटेकोड) को सॉफ्टवेयर पोर्टेबिलिटी वर्चुअल स्टैक मशीन (वीएम) पर चलाने का इरादा है।<ref name="stack machine" />वीएम को जावास्क्रिप्ट की तुलना में तेजी से पार्स और निष्पादित करने और एक कॉम्पैक्ट कोड प्रतिनिधित्व करने के लिए डिज़ाइन किया गया है।<ref name="github.com" />एक बाहरी कार्यक्षमता (जैसे [[सिस्टम कॉल]]) जो वासम बाइनरी कोड द्वारा अपेक्षित हो सकती है, मानक द्वारा निर्धारित नहीं की जाती है। इसके बजाय यह मेजबान पर्यावरण द्वारा मॉड्यूल के माध्यम से इंटरफेसिंग प्रदान करने का एक तरीका प्रदान करता है जिसमें वीएम कार्यान्वयन चलता है।<ref>{{Cite web|title=Portability - WebAssembly|url=https://webassembly.org/docs/portability/#assumptions-for-efficient-execution|access-date=2020-07-28|website=webassembly.org}}</ref><ref name=":1" />
वासम कोड (बाइनरी कोड, यानी बायटेकोड) को सॉफ्टवेयर पोर्टेबिलिटी वर्चुअल स्टैक मशीन (वीएम) पर चलाने का इरादा है।<ref name="stack machine" />वीएम को जावास्क्रिप्ट की तुलना में तेजी से पार्स और निष्पादित करने और कॉम्पैक्ट कोड प्रतिनिधित्व करने के लिए डिज़ाइन किया गया है।<ref name="github.com" />बाहरी कार्यक्षमता (जैसे [[सिस्टम कॉल]]) जो वासम बाइनरी कोड द्वारा अपेक्षित हो सकती है, मानक द्वारा निर्धारित नहीं की जाती है। इसके बजाय यह मेजबान पर्यावरण द्वारा मॉड्यूल के माध्यम से इंटरफेसिंग प्रदान करने का तरीका प्रदान करता है जिसमें वीएम कार्यान्वयन चलता है।<ref>{{Cite web|title=Portability - WebAssembly|url=https://webassembly.org/docs/portability/#assumptions-for-efficient-execution|access-date=2020-07-28|website=webassembly.org}}</ref><ref name=":1" />




=== वासम कार्यक्रम ===
=== वासम कार्यक्रम ===
एक वासम प्रोग्राम को एक अलग मॉड्यूल के रूप में डिज़ाइन किया गया है जिसमें विभिन्न वासम-परिभाषित मूल्यों और प्रोग्राम प्रकार की परिभाषाओं का संग्रह है। ये या तो द्विआधारी या शाब्दिक प्रारूप (नीचे देखें) में व्यक्त किए गए हैं कि दोनों की एक सामान्य संरचना है।<ref>{{Cite web|url=https://webassembly.github.io/spec/core/syntax/conventions.html|title=Conventions — WebAssembly 1.0|website=webassembly.github.io|access-date=12 November 2019}}</ref>
वासम प्रोग्राम को अलग मॉड्यूल के रूप में डिज़ाइन किया गया है जिसमें विभिन्न वासम-परिभाषित मूल्यों और प्रोग्राम प्रकार की परिभाषाओं का संग्रह है। ये या तो द्विआधारी या शाब्दिक प्रारूप (नीचे देखें) में व्यक्त किए गए हैं कि दोनों की सामान्य संरचना है।<ref>{{Cite web|url=https://webassembly.github.io/spec/core/syntax/conventions.html|title=Conventions — 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>
वासम प्रोग्राम के बाइनरी प्रारूप के लिए मुख्य मानक निर्देश सेट आर्किटेक्चर (आईएसए) को परिभाषित करता है जिसमें वीएम द्वारा निष्पादित विशिष्ट प्रकार के ऑपरेशन शामिल होते हैं (यह निर्दिष्ट किए बिना कि उन्हें कैसे निष्पादित किया जाना चाहिए)।<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 से थोड़ी कम थी। WebAssembly के बाद के संस्करणों ने opcodes की संख्या को 200 से थोड़ा अधिक बढ़ा दिया। [[WebAssembly SIMD]] प्रस्ताव (समानांतर प्रसंस्करण के लिए) [[128-बिट कंप्यूटिंग]] के लिए एक वैकल्पिक opcode उपसर्ग (0xfd) पेश करता है। 128-बिट SIMD। SIMD प्रीफ़िक्स का संयोजन, साथ ही एक ऑपकोड जो SIMD प्रीफ़िक्स के बाद मान्य है, एक SIMD ऑपकोड बनाता है। SIMD ऑपकोड न्यूनतम व्यवहार्य उत्पाद (MVP) SIMD क्षमता के लिए अतिरिक्त 236 निर्देश लाते हैं (कुल लगभग 436 निर्देशों के लिए)।<ref>
मूल मानक (एमवीपी) में इस्तेमाल किए गए ऑपकोड की संख्या 256 संभावित ऑपकोड में से 200 से थोड़ी कम थी। WebAssembly के बाद के संस्करणों ने opcodes की संख्या को 200 से थोड़ा अधिक बढ़ा दिया। [[WebAssembly SIMD]] प्रस्ताव (समानांतर प्रसंस्करण के लिए) [[128-बिट कंप्यूटिंग]] के लिए वैकल्पिक opcode उपसर्ग (0xfd) पेश करता है। 128-बिट SIMD। SIMD प्रीफ़िक्स का संयोजन, साथ ही ऑपकोड जो SIMD प्रीफ़िक्स के बाद मान्य है, SIMD ऑपकोड बनाता है। SIMD ऑपकोड न्यूनतम व्यवहार्य उत्पाद (MVP) SIMD क्षमता के लिए अतिरिक्त 236 निर्देश लाते हैं (कुल लगभग 436 निर्देशों के लिए)।<ref>
   {{
   {{
       Cite web
       Cite web
Line 192: Line 192:
           | 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> और बाद में 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>
ये 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> वह पोर्टेबल नहीं है, यानी एआरएम या स्मार्टफोन पर प्रयोग करने योग्य नहीं है। एसएमडी के साथ असेंबली कोड को कॉल करके स्मार्टफोन सिमड का समर्थन कर सकते हैं, और सी # में समान समर्थन है।
ये 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> वह पोर्टेबल नहीं है, यानी एआरएम या स्मार्टफोन पर प्रयोग करने योग्य नहीं है। एसएमडी के साथ असेंबली कोड को कॉल करके स्मार्टफोन सिमड का समर्थन कर सकते हैं, और सी # में समान समर्थन है।


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


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


{| class="wikitable"
{| class="wikitable"
Line 254: Line 254:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
सभी पूर्णांक स्थिरांक एक अंतरिक्ष-कुशल, चर-लंबाई [[LEB128]] एन्कोडिंग का उपयोग करके एन्कोड किए गए हैं।<ref name=wasmint>{{cite web
सभी पूर्णांक स्थिरांक अंतरिक्ष-कुशल, चर-लंबाई [[LEB128]] एन्कोडिंग का उपयोग करके एन्कोड किए गए हैं।<ref name=wasmint>{{cite web
  |        url = https://webassembly.github.io/spec/core/binary/values.html#integers
  |        url = https://webassembly.github.io/spec/core/binary/values.html#integers
  |      title = WebAssembly Specification Release 1.0
  |      title = WebAssembly Specification Release 1.0
Line 267: Line 267:
   ($t0 टाइप करें (func (परम i64) (परिणाम i64)))
   ($t0 टाइप करें (func (परम i64) (परिणाम i64)))
   (func $f0 (प्रकार $t0) (परम $p0 i64) (परिणाम i64)
   (func $f0 (प्रकार $t0) (परम $p0 i64) (परिणाम i64)
     (यदि $I0 (परिणाम i64) ;; $I0 एक अप्रयुक्त लेबल नाम है
     (यदि $I0 (परिणाम i64)4;; $I0 अप्रयुक्त लेबल नाम है
       (i64.eqz
       (i64.eqz
         (स्थानीय.get $p0)) ;; नाम $p0 यहाँ 0 जैसा ही है
         (स्थानीय.get $p0))p;; नाम $p0 यहाँ 0 जैसा ही है
       (तब
       (तब
         (i64.const 1))
         (i64.const 1))
Line 275: Line 275:
         (i64.mul
         (i64.mul
           (स्थानीय। $p0 प्राप्त करें)
           (स्थानीय। $p0 प्राप्त करें)
           (कॉल $f0 ;; नाम $f0 यहाँ 0 जैसा ही है
           (कॉल $f0�;; नाम $f0 यहाँ 0 जैसा ही है
             (i64.उप
             (i64.उप
               (स्थानीय। $p0 प्राप्त करें)
               (स्थानीय। $p0 प्राप्त करें)
Line 281: Line 281:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


ध्यान दें कि एक मॉड्यूल निहित रूप से संकलक द्वारा उत्पन्न होता है। फ़ंक्शन को वास्तव में बाइनरी में टाइप टेबल की प्रविष्टि द्वारा संदर्भित किया जाता है, इसलिए एक प्रकार का खंड और {{code|type}} डिकंपाइलर द्वारा उत्सर्जित।<ref>{{cite web |title=Modules (Binary) |url=https://webassembly.github.io/spec/core/syntax/modules.html |website=WebAssembly 1.0}}</ref> कंपाइलर और डीकंपलर को ऑनलाइन एक्सेस किया जा सकता है।<ref>{{cite web |title=WebAssembly Binary Toolkit (wabt) demos |url=https://webassembly.github.io/wabt/demo/ |website=webassembly.github.io}}</ref>
ध्यान दें कि मॉड्यूल निहित रूप से संकलक द्वारा उत्पन्न होता है। फ़ंक्शन को वास्तव में बाइनरी में टाइप टेबल की प्रविष्टि द्वारा संदर्भित किया जाता है, इसलिए प्रकार का खंड और {{code|type}} डिकंपाइलर द्वारा उत्सर्जित।<ref>{{cite web |title=Modules (Binary) |url=https://webassembly.github.io/spec/core/syntax/modules.html |website=WebAssembly 1.0}}</ref> कंपाइलर और डीकंपलर को ऑनलाइन एक्सेस किया जा सकता है।<ref>{{cite web |title=WebAssembly Binary Toolkit (wabt) demos |url=https://webassembly.github.io/wabt/demo/ |website=webassembly.github.io}}</ref>





Revision as of 11:47, 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

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

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


इतिहास

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

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

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

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

कार्यान्वयन

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


वेब ब्राउज़र

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


संकलक

WebAssembly कार्यान्वयन आमतौर पर समय से पहले संकलन | समय से पहले (एओटी) या समय से पहले संकलन | समय से पहले (जेआईटी) संकलन का उपयोग करता है, लेकिन इंटरप्रेटर (कंप्यूटिंग) का भी उपयोग कर सकता है। जबकि पहला कार्यान्वयन वेब ब्राउज़र में आ चुका है, सामान्य प्रयोजन के उपयोग के लिए गैर-ब्राउज़र कार्यान्वयन भी हैं, जिनमें वास्मेर,[10]वासटाइम[40] या डब्ल्यूएएमआर,[16]wasm3, WAVM, और कई अन्य।[41] क्योंकि WebAssembly के निष्पादन योग्य पहले से संकलित होते हैं, उन्हें बनाने के लिए विभिन्न प्रकार की प्रोग्रामिंग भाषाओं का उपयोग करना संभव है।[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] जो WebAssembly को सी शार्प (प्रोग्रामिंग लैंग्वेज)|C# (ब्लेज़र द्वारा समर्थित), F शार्प (प्रोग्रामिंग लैंग्वेज)|F# (बोलेरो द्वारा समर्थित) जैसी कचरा एकत्र करने वाली प्रोग्रामिंग भाषाओं के लिए संकलन लक्ष्य बना देगा[56] ब्लेज़र), पायथन (प्रोग्रामिंग लैंग्वेज), और यहां तक ​​​​कि जावास्क्रिप्ट की मदद से जहां ब्राउजर की समय-समय पर संकलन की गति बहुत धीमी मानी जाती है। पायथन (प्रोग्रामिंग भाषा) सहित कई अन्य भाषाओं को कुछ समर्थन प्राप्त है,[57] जूलिया (प्रोग्रामिंग भाषा),[58][59][60] और रूबी (प्रोग्रामिंग भाषा)[61]


सीमाएं

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

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

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


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

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

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

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


वासी

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

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


विशिष्टता

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

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


वर्चुअल मशीन

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


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

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


निर्देश सेट

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

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

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

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

C source code and corresponding WebAssembly
C source code WebAssembly .wat text format WebAssembly .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] WebAssembly टेक्स्ट फॉर्मेट को एस-अभिव्यक्ति का उपयोग करके फोल्ड किए गए फॉर्मेट में अधिक कैननिक रूप से लिखा गया है। निर्देशों और अभिव्यक्तियों के लिए, यह प्रारूप विशुद्ध रूप से वाक्यात्मक चीनी है और इसमें रैखिक प्रारूप के साथ कोई व्यवहारिक अंतर नहीं है।[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.


बाहरी संबंध