WebAssembly או בקיצור Wasm הוא תקן פתוח המגדיר פורמט לקוד בינארי יביל (portablebinary-code) לקובצי הרצה, יחד עם ייצוג טקסטואלי בשפת סף, והגדרות ממשקים שנועדו להקל על הרצת הקוד בסביבת הריצה המארחת.[1][2][3][4] המטרה העיקרית של WebAssembly היא לאפשר ביצועים גבוהים ביישומי רשת, אבל הפורמט נועד גם לשילוב בסביבות אחרות.[5][6]
על מנת ליצור Wasm לדפדפנים, מפתחים יכולים להשתמש ב-Emscripten SDK כדי להדר קוד C++ (או כל שפה אחרת נתמכת LLVM כגון D או Rust) לקובץ בינארי שירוץ בארגז חול בו JavaScript רץ.[13] Emscripten מאגד כמה סביבות ממשקים נפוצים כמו WebGL. אין גישה ישירה ל-DOM; עם זאת, אפשר ליצור "פונקציות פרוקסי" לשם כך, למשל דרך stdweb,[14] web_sys,[15] ו-js_sys.[16] בעת שימוש בשפת Rust.
^"Conventions — WebAssembly 1.0". webassembly.github.io. נבדק ב-17 במאי 2019. WebAssembly is a programming language that has multiple concrete representations (its binary format and the text format). Both map to a common structure.{{cite web}}: (עזרה)
^"Introduction — WebAssembly 1.0". webassembly.github.io. נבדק ב-18 ביוני 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.{{cite web}}: (עזרה)
^Haas, Andreas; Rossberg, Andreas; Schuff, Derek L.; Titzer, Ben L.; Holman, Michael; Gohman, Dan; Wagner, Luke; Zakai, Alon; Bastien, JF (14 ביוני 2017). "Bringing the Web Up to Speed with WebAssembly". SIGPLAN Notices. 52 (6): 185–200. doi:10.1145/3140587.3062363. ISSN0362-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.{{cite journal}}: (עזרה)
^According to official documentation the Emscripten SDK may be used to create .wasm files which then may be executed in web browser.[9][10][11] Even though Emscripten can consume various languages when using Clang some problems may arise.[12]
^"stdweb - Rust". docs.rs. נבדק ב-5 ביוני 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.{{cite web}}: (עזרה)
^"web_sys - Rust". docs.rs. נבדק ב-5 ביוני 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.{{cite web}}: (עזרה)
^"js_sys- Rust". docs.rs. נבדק ב-5 ביוני 2019. Bindings to JavaScript's standard, built-in objects, including their methods and properties.{{cite web}}: (עזרה)