В прошлом месяце мы поделились здесь в блоге о новости о том, что Mozilla, Fastly, Intel и Red Hat объединились для разработки технологии, которые делают WebAssembly (Если вы хотите узнать больше о новостях, вы можете ознакомиться с ними ссылку) и сейчас через несколько недель после этой новости Консорциум W3C объявил, что технология WebAssembly он стал рекомендуемым стандартом.
Для тех, кто не знаком с WebAssembly они должны знать, что это обеспечивает промежуточное ПО универсальный независимый от браузера низкоуровневый запуск приложений составлен с разных языков программирования. WebAssembly позиционируется как наиболее многообещающая и портативная кроссбраузерная технология для создания высокопроизводительных веб-приложений.
WebAssembly се можно использовать для решения задач, требующих высокой производительности, например, кодирование видео, обработка звука, трехмерная графика и манипуляции, разработка игр, криптографические операции, математические вычисления и создание переносимых реализаций языков программирования.
WebAssembly очень похож на Asm.js, но отличается тем, что это двоичный формат, не связанный с JavaScript. WebAssembly не требует использования сборщика мусора, поскольку используется явное управление памятью.
Отличительная черта модели исполнения приложений, использующих WASЯ запускаю в песочнице для изоляции от основной системы и использования механизма безопасности, основанного на управлении мощностью, для действий с каждым из ресурсов (файлы, каталоги, сокеты, системные вызовы и т. д.)
Включив JIT для WebAssembly, вы можете достичь уровней производительности, близких к нативному коду.. Среди основных задач WebAssembly - обеспечение переносимости, предсказуемости поведения и идентичности выполнения кода на разных платформах.
Недавно WebAssembly также развивается как универсальная платформа. для безопасного запуска кода в любой инфраструктуре, операционной системе и устройстве, не ограничиваясь браузерами.
W3C стандартизировал три спецификации связанные с WebAssembly:
- Ядро WebAssembly- Определяется как виртуальная машина низкого уровня, которая точно имитирует функциональность многих микропроцессоров, на которых она работает. С помощью компиляции или интерпретации Just-In-Time механизм WebAssembly может работать почти со скоростью скомпилированного кода для собственной платформы.
Ресурс .васм аналогичен файлу .класс Java в том смысле, что он содержит статические данные и сегменты кода, которые работают с этими статическими данными. В отличие от Java, WebAssembly обычно создается как цель компиляции для других языков программирования, таких как C / C ++ и Rust. - Веб-API WebAssembly: определяет программный интерфейс, основанный на механизме Promise для запроса и выполнения ресурсов ".wasm". Формат ресурса WebAssembly оптимизирован для запуска выполнения, не дожидаясь полной загрузки файла, что улучшает скорость отклика веб-приложений.
- Интерфейс JavaScript WebAssembly: предоставляет API для интеграции с JavaScript. Позволяет получать значения и передавать параметры функциям WebAssembly. Выполнение WebAssembly соответствует модели безопасности JavaScript, и все взаимодействие с хостом осуществляется аналогично выполнению кода JavaScript.
В будущем планируется подготовить спецификации для функций WebAssembly, таких как:
- Многопоточность с общей памятью и доступом к атомарной памяти.
- Векторные операции на основе SIMD, позволяющие распараллеливать выполнение циклов.
- Типы ссылок для прямых ссылок на объекты в коде WebAssembly.
- Возможность вызывать функции, не тратя лишнее пространство стека.
- Интеграция с модулями ECMAScript: возможность загружать код WebAssembly из JavaScript в виде модулей, соответствующих спецификации ECMAScript 6.
- Способ работы со сборщиком мусора.
- Отладка интерфейсов.
- WASI (WebAssembly System Interface): API для прямого взаимодействия с операционной системой (POSIX API для работы с файлами, сокетами и т. Д.).
Если вы хотите узнать об этом больше, вы можете ознакомиться с исходной записью. По следующей ссылке.