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

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

WebAssembly багато в чому нагадує Asm.js, але відрізняється тим, що є бінарним форматом, не зав'язаним JavaScript. У WebAssembly не потрібне застосування збирача сміття, оскільки застосовується явне керування пам'яттю. Завдяки використанню JIT для WebAssembly можна досягти рівня продуктивності близького до нативного коду. Серед основних завдань WebAssembly виділяється забезпечення переносимості, передбачуваність поведінки та ідентичності виконання коду на різних платформах. Останнім часом WebAssembly також просувається як універсальна платформа для безпечного виконання коду в будь-яких інфраструктурах, операційних системах і пристроях, не обмежуючись браузерами.

W3C стандартизував три специфікації, пов'язані з WebAssembly:

  • Ядро WebAssembly - Описує низькорівневу віртуальну машину для виконання проміжного коду 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;
  • Режим роботи зі збирачем сміття;
  • Налагоджувальні інтерфейси;
  • ВАСИ (WebAssembly System Interface) - API для прямої взаємодії з операційною системою (POSIX API для роботи з файлами, сокетами тощо).

    Джерело: opennet.ru

Додати коментар або відгук