Консорциум W3C объявил о придании технологии WebAssembly статуса рекомендованного стандарта
Консорциум 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 для работы с файлами, сокетами и т.п.).