Технология WebAssembly признана готовой для включения в браузерах по умолчанию


Рабочая группа по стандартизации технологии WebAssembly, сформированная при организации W3C из представителей проектов Chrome, Edge, Firefox и WebKit, сделала заключение, что бинарный формат и начальный WebAssembly API достигли уровня MVP (минимально жизнеспособный продукт), что даёт разработчикам браузеров зелёный свет на включение WebAssembly по умолчанию. WebAssembly предоставляет не зависящий от браузера универсальный низкоуровневый промежуточный код для выполнения в браузере приложений, скомпилированных из различных языков программирования.

Участники рабочей группы согласились, что архитектура WebAssembly достигла уровня, при котором её дальнейшее развитие невозможно без реального внедрения и начала широкого использования в приложениях. С WebAssembly теперь снята метка "Browser Preview", а все дальнейшие изменения JavaScript API и бинарного формата будут производиться с учётом сохранения обратной совместимости. Следующим шагом станет разработка спецификаций, которые послужат основой для будущего утверждения WebAssembly в качестве web-стандарта. Mozilla планирует включить WebAssembly по умолчанию в выпуске Firefox 52, намеченном на 7 марта. В Chrome включение WebAssembly без привязки к флагу "chrome://flags#enable-webassembly" ожидается в выпуске 57.

Напомним, что по своим задачам WebAssembly во многом напоминает PNaCl (Portable Native Client) и Asm.js. Основное отличие от Asm.js состоит в том, что WebAssembly является бинарным форматом, не завязанным на JavaScript и позволяющим выполнять в браузере низкоуровневый промежуточный код. В отличие от PNaCl, промежуточный код WASM не является машинным кодом и не изолирован в отдельной виртуальной машине, а выполняется с похожим на JavaScript уровнем изоляции. Среди основных задач WebAssembly выделяется обеспечение переносимости между браузерами, предсказуемость поведения и идентичности выполнения кода на разных платформах. Использование WebAssembly также позволит существенно сократить размер приложений, благодаря компактному промежуточному коду, и увеличить скорость декодирования.

Для разработчиков подготовлен работающий инструментарий для компиляции модулей WebAssembly из кода на языках C/C++. Например, для компиляции С/C++/asm.js в WebAssembly можно использовать Emscripten или созданный на его основе специальный компилятор Binaryen. Для преобразования тестового формата в бинарный поставляется транслятор WABT. Для компиляции приложений в WebAssembly может быть использован инструментарий Emscripten.