Консорциум W3C за предоставянето на технологията WebAssembly статут на препоръчан стандарт. WebAssembly осигурява универсален междинен код с ниско ниво, независим от браузъра, за изпълнение на приложения, компилирани от различни езици за програмиране. WebAssembly се позиционира като по-перспективна и преносима между браузърите технология за създаване на високоефективни уеб приложения. WebAssembly може да се използва за задачи, изискващи висока производителност, например, кодиране на видео, обработка на звук, манипулация с графика и 3D, разработка на игри, криптографски операции, математически изчисления и създаване на преносими реализации на езици за програмиране.
WebAssembly до голяма степен напомня на Asm.js, но се различава с това, че представлява бинарен формат, независищ от JavaScript. В WebAssembly не е необходимо използването на garbage collector, тъй като се прилага явно управление на паметта. Чрез прилагането на 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) — API за директно взаимодействие с операционната система (POSIX API за работа с файлове, сокети и т.н.).
Източник: opennet.ru
