---
title: WebAssembly
slug: WebAssembly
translation_of: WebAssembly
---
{{WebAssemblySidebar}}
WebAssembly – это новый открытый формат байт-кода, исполняемого современными браузерами. Он позволяет переносить код, написанный на таких языках как C, C++, C#, Rust, в низкоуровневые ассемблерные инструкции и использовать его в сети. Формат имеет компактные размеры, высокую производительность, близкую к нативной, и может одновременно работать с JavaScript.
В двух словах
WebAssembly оказывает огромное влияние на веб-платформу — он предоставляет способ исполнения кода, написанного на различных языках, в сети, со скоростью близкой к нативной, чего ранее невозможно было достичь.
WebAssembly разработан для дополнения JavaScript – используя WebAssembly JavaScript API вы можете загружать модули WebAssembly в приложения JavaScript и обеспечивать взаимодействие между ними, используя общие функции. Такой подход позволяет вам получить производительность и мощность WebAssembly, а также выразительность и гибкость JavaScript в ваших приложениях, даже если вы не знаете как писать код WebAssembly, а используете готовые модули.
И что еще лучше, так это то, что WebAssembly разрабатывается как веб-стандарт W3C WebAssembly Working Group и Community Group при активном участии основных производителей браузеров.
Руководства
- Основы WebAssembly
- Прежде всего, начните с чтения общего описания WebAssembly - что это такое, чем это может быть полезно, почему он подходит для веб-платформы и как его использовать.
- Компиляция кода C/C++ в WebAssembly
- После того как вы написали код на C / C ++, вы можете скомпилировать его в .wasm, например, с помощью инструмента Emscripten. Давайте посмотрим, как это работает.
- Компиляция существующего кода C в WebAssembly
- Главное, что позволяет WebAssembly, это использование огромного множества разнообразных и проверенных временем библиотек, написанных на языке C, в сети.
- Загрузка и запуск кода WebAssembly
- После того, как у вас появился .wasm, эта статья расскажет, как из него получить, скомпилировать и создать экземпляр модуля, совмещая WebAssembly JavaScript API c Fetch или XHR API.
- Кэширование скомпилированных модулей WebAssembly
- Кэширование больших модулей WebAssembly на клиенте полезно для повышения скорости запуска приложений. В этой статье объясняется, как это сделать с помощью IndexedDB.
- Использование WebAssembly JavaScript API
- После того, как вы загрузили модуль .wasm, вы захотите его использовать. В этой статье мы покажем вам, как использовать WebAssembly через WebAssembly JavaScript API.
- Экспортируемые функции WebAssembly
- Экспортируемые функции WebAssembly — это функции нативного модуля, доступные в JavaScript, которые позволяют вызывать код WebAssembly из JavaScript. В этой статье описывается, что они из себя представляют.
- Описание текстового формата WebAssembly
- Эта статья описывает текстовый формат WebAssembly. Это низкоуровневое текстовое представления модулей .wasm используемое в инструментах разработчика во время отладки.
- Перевод из текстового формата WebAssembly в wasm
- Эта статья содержит руководство по переводу модулей WebAssembly, написанных в текстовом формате, в двоичный файл .wasm.
Ссылки на API
- {{jsxref("Global_objects/WebAssembly", "WebAssembly")}}
- Этот объект является пространством имен для всех функций, связанных с WebAssembly.
- {{jsxref("Global_objects/WebAssembly/Module", "WebAssembly.Module()")}}
- Объект
WebAssembly.Module
содержит не контролируемый WebAssembly код, который уже скомпилирован браузером и может эффективно использоваться совместно с Workers, кешироваться в IndexedDB, и иметь несколько экземпляров.
- {{jsxref("Global_objects/WebAssembly/Instance", "WebAssembly.Instance()")}}
- Объект
WebAssembly.Instance
это контролируемый, исполняемый экземпляр Module
. Instance
содержит все экспортированные функции WebAssembly, которые позволяют вызывать код WebAssembly из JavaScript.
- {{jsxref("Global_objects/WebAssembly/instantiateStreaming", "WebAssembly.instantiateStreaming()")}}
- Функция
WebAssembly.instantiateStreaming()
является основной для компиляции и создания экземпляра кода WebAssembly, возвращающая одновременно Module
и Instance
.
- {{jsxref("Global_objects/WebAssembly/Memory", "WebAssembly.Memory()")}}
WebAssembly.Memory
это изменяемый {{jsxref("Global_objects/ArrayBuffer", "ArrayBuffer")}} содержащий в себе данные не имеющие типа к которым обращается Instance
.
- {{jsxref("Global_objects/WebAssembly/Table", "WebAssembly.Table()")}}
WebAssembly.Table
объект является изменяемым типизированным массивом значений, таких как ссылки на функции, которые доступны Instance
.
- {{jsxref("WebAssembly.CompileError()")}}
- Создает новый WebAssembly
CompileError
объект.
- {{jsxref("WebAssembly.LinkError()")}}
- Создает новый WebAssembly
LinkError
объект.
- {{jsxref("WebAssembly.RuntimeError()")}}
- Создает новый WebAssembly
RuntimeError
объект.
Примеры
Спецификация
Specification |
Status |
Comment |
{{SpecName('WebAssembly JS')}} |
{{Spec2('WebAssembly JS')}} |
Initial draft definition of the JavaScript API. |
Совместимость с браузерами
Эта таблица совместимости автоматически создается на основе структурированных данных. Если вы хотите внести свой вклад, пожалуйста, посетите
https://github.com/mdn/browser-compat-data и отправьте нам запрос на внесение изменений.
{{Compat("javascript.builtins.WebAssembly")}}
Смотрите также