This page was translated from English by the community.Learn more and join the MDN Web Docs community.
WebAssembly
WebAssembly – это новый открытый формат байт-кода, исполняемого современными браузерами. Он позволяет переносить код, написанный на таких языках как C, C++, C#, Rust, в низкоуровневые ассемблерные инструкции и использовать его в сети. Формат имеет компактные размеры, высокую производительность, близкую к нативной, и может одновременно работать с JavaScript.
In this article
В двух словах
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, в сети.
- Компиляция Rust в WebAssembly
Если у вас есть уже написанный код на Rust, вы можете скомпилировать его в WebAssembly. Из этого руководства вы узнаете всё, что вам нужно знать, чтобы скомпилировать проект на Rust в wasm и использовать его в существующем веб-приложении.
- Загрузка и запуск кода WebAssembly
После того, как у вас появился .wasm, эта статья расскажет, как из него получить, скомпилировать и создать экземпляр модуля, совмещаяWebAssembly JavaScript API cFetch илиXHR API.
- Использование WebAssembly JavaScript API
После того, как вы загрузили модуль .wasm, вы захотите его использовать. В этой статье мы покажем вам, как использовать WebAssembly через WebAssembly JavaScript API.
- Экспортируемые функции WebAssembly
Экспортируемые функции WebAssembly — это функции нативного модуля, доступные в JavaScript, которые позволяют вызывать код WebAssembly из JavaScript. В этой статье описывается, что они из себя представляют.
- Описание текстового формата WebAssembly
Эта статья описывает текстовый формат WebAssembly. Это низкоуровневое текстовое представления модулей .wasm используемое в инструментах разработчика во время отладки.
- Перевод из текстового формата WebAssembly в wasm
Эта статья содержит руководство по переводу модулей WebAssembly, написанных в текстовом формате, в двоичный файл .wasm.
Ссылки на API
WebAssemblyЭтот объект является пространством имён для всех функций, связанных с WebAssembly.
WebAssembly.Module()Объект
WebAssembly.Moduleсодержит не контролируемый WebAssembly код, который уже скомпилирован браузером и может эффективно использоваться совместно сWorkers и иметь несколько экземпляров.WebAssembly.Instance()Объект
WebAssembly.Instanceэто контролируемый, исполняемый экземплярModule.Instanceсодержит всеэкспортированные функции WebAssembly, которые позволяют вызывать код WebAssembly из JavaScript.WebAssembly.instantiateStreaming()Функция
WebAssembly.instantiateStreaming()является основной для компиляции и создания экземпляра кода WebAssembly, возвращающая одновременноModuleиInstance.WebAssembly.Memory()WebAssembly.Memoryэто изменяемыйArrayBufferсодержащий в себе данные не имеющие типа к которым обращаетсяInstance.WebAssembly.Table()WebAssembly.Tableобъект является изменяемым типизированным массивом значений, таких как ссылки на функции, которые доступныInstance.WebAssembly.CompileError()Создаёт новый WebAssembly
CompileErrorобъект.WebAssembly.LinkError()Создаёт новый WebAssembly
LinkErrorобъект.WebAssembly.RuntimeError()Создаёт новый WebAssembly
RuntimeErrorобъект.
Примеры
- WASMSobel
- Больше примеров вы можете найти в нашем репозиторииwebassembly-examples.