Консорциум W3C за предоставянето на технологията WebAssembly статус на препоръчан стандарт. WebAssembly предлага независим от браузъра универсален нискоуровнев код за изпълнение на приложения, компилирани от различни езици за програмиране. WebAssembly се позиционира като по-перспективна и преносима между браузърите технология за създаване на високопроизводителни уеб приложения. WebAssembly може да се прилага за решаване на задачи, изискващи висока производителност, например, кодиране на видео, обработка на звук, манипулация с графика и 3D, разработка на игри, криптографски операции, математически изчисления и създаване на преносими реализации на езици за програмиране.
WebAssembly в значителна степен напомня на Asm.js, но се различава по това, че е бинарен формат, независим от JavaScript. В WebAssembly не е необходимо да се използва събирач на боклук, тъй като се прилага явно управление на паметта. Благодарение на използването на JIT за WebAssembly може да се постигне ниво на производителност, близко до родния код. Сред основните задачи на WebAssembly се открояват осигуряване на преносимост, предсказуемост на поведението и идентичността на изпълнението на кода на различни платформи. В последно време WebAssembly също като универсална платформа за безопасно изпълнение на код в всякакви инфраструктури, операционни системи и устройства, без ограничаване до браузъри.
W3C стандартизира три спецификации, свързани с WebAssembly:
- — описва нискоуровнева виртуална машина за изпълнение на междинен код WebAssembly. Свързаните с WebAssembly ресурси се предоставят в формат „.wasm“, напомнящ на файла „.class“ в Java и съдържащ статични данни и сегменти на код за работа с тези данни.
- — определя програмния интерфейс на базата на механизма Promise за заявка и изпълнение на ресурси „.wasm“. Форматът на ресурсите WebAssembly е оптимизиран за начало на изпълнението, без да се чака пълното зареждане на файла, което позволява повишаване на отзивчивостта на уеб приложенията.
- — предоставя API за интеграция с JavaScript. Позволява получаване на стойности и предаване на параметри на функции WebAssembly. Изпълнението на WebAssembly отговаря на модела за сигурност на JavaScript и всичкото взаимодействие с основната система се извършва по аналогия с изпълнението на JavaScript код.
В бъдеще се планира подготовката на спецификации за такива възможности на WebAssembly, като:
- Многопоточност с споделена памет и атомарен достъп до паметта;
- Векторни операции на базата на SIMD, позволяващи разпаралеляване на изпълнението на цикли;
- Еталонни типове за директни връзки с обекти от код на WebAssembly;
- Възможност за извикване на функции без изразходване на допълнително пространство в стека;
- Интеграция с модулите ECMAScript — възможност за зареждане на WebAssembly код от JavaScript като модули, съответстващи на спецификацията ECMAScript 6;
- Режим на работа с боклукосъбирача;
- Отладъчни интерфейси;
- (WebAssembly System Interface) — API за директно взаимодействие с операционната система (POSIX API за работа с файлове, сокети и т.н.).
Източник: opennet.ru
