W3C придал WebAssembly статус рекомендованного стандарта

Консорциум W3C объявил о придании технологии WebAssembly статуса рекомендованного стандарта. WebAssembly предоставляет не зависящий от браузера универсальный низкоуровневый промежуточный код для выполнения приложений, скомпилированных из различных языков программирования. WebAssembly позиционируется как более перспективная и переносимая между браузерами технология создания высокопроизводительных web-приложений. WebAssembly может применяться для решения задач, требующих высокой производителости, например, кодирования видео, обработки звука, манипуляции с графикой и 3D, разработки игр, криптографических операций, математических вычислений и создания переносимых реализаций языков программирования.

WebAssembly во многом напоминает Asm.js, но отличается тем, что является бинарным форматом, не завязанным на JavaScript. В WebAssembly не требуется применение сборщика мусора, так как применяется явное управление памятью. Благодаря задействованию JIT для WebAssembly можно добиться уровня производительности близкого к нативному коду. Среди основных задач WebAssembly выделяется обеспечение переносимости, предсказуемость поведения и идентичности выполнения кода на разных платформах. Последнее время WebAssembly также продвигается в качестве в универсальной платформы для безопасного выполнения кода в любых инфраструктурах, операционных системах и устройствах, не ограничиваясь браузерами.

W3C стандартизировал три спецификации, связанные с WebAssembly:

  • WebAssembly Core — описывает низкоуровневую виртуальную машину для выполнения промежуточного кода WebAssembly. Связанные с WebAssembly ресурсы поставляется в формате «.wasm», напоминающий файл «.class» в Java и содержащий статические данные и сегменты кода для работы с этими данными.
  • WebAssembly Web API — определяет программный интерфейс на основе механизма Promise для запроса и выполнения ресурсов «.wasm». Формат ресурсов WebAssembly оптимизирован для начала выполнения не дожидаясь полной загрузки файла, что позволяет повысить отзывчивость web-приложений.
  • WebAssembly JavaScript Interface — предоставляет API для интеграции с JavaScript. Позволяет получать значения и передавать параметры в функции WebAssembly. Выполнение WebAssembly соответствует модели безопасности JavaScript и всё взаимодействие с основной системой производится по аналогии с выполнением JavaScript-кода.

В будущем планируется подготовить спецификации для таких возможностей WebAssembly, как:

  • Многопоточность с разделяемой памятью и атомарным доступом к памяти;
  • Векторные операции на основе SIMD, позволяющие распараллеливать выполнение циклов;
  • Эталонные типы для прямых ссылок на объекты из кода WebAssembly;
  • Возможность вызова функций без расходования дополнительного пространства в стеке;
  • Интеграция с модулями ECMAScript — возможность загрузки кода WebAssembly из JavaScript как модулей, соответствующих спецификации ECMAScript 6;
  • Режим работы со сборщиком мусора;
  • Отладочные интерфейсы;
  • WASI (WebAssembly System Interface) — API для прямого взаимодействия с операционной системой (POSIX API для работы с файлами, сокетами и т.п.).

    Источник: http://www.opennet.ru/opennews/art.shtml?num=51988