WebAssembly
Парадигма Expression-oriented
Дата появи 2015[1]
Творці W3C
Розробник W3C, Mozilla[d], Microsoft, Google і Apple
Останній реліз 2.0 (1 червня 2022)[2]
Система типізації статична
Під впливом від asm.jsd і Google Native Clientd
Платформа платформо-незалежна
Ліцензія Apache License
Звичайні розширення файлів .wast або .wasm[3]
Репозиторій вихідного коду github.com/WebAssembly/spec
github.com/WebAssembly/design
Вебсайт webassembly.org

WebAssembly або wasm — незалежний від браузера універсальний низькорівневий проміжний код для виконання в браузері застосунків, скомпільованих з різних мов програмування. Серед основних завдань WebAssembly виділяється забезпечення перенесення між браузерами, передбачуваність поведінки та ідентичності виконання коду на різних платформах. Використання WebAssembly також дозволить істотно скоротити розмір застосунків, завдяки компактному проміжному коду, і збільшити швидкість декодування.

Робоча група зі стандартизації технології WebAssembly сформована при організації W3C з представників проєктів Google Chrome, Microsoft Edge, Firefox і WebKit.[4]

Особливості

З особливостей WebAssembly, що дозволяють домогтися вищої продуктивності, в порівнянні з JavaScript, виділяється:[5]

Відпочатку WebAssembly створювався на основі розробок asm.js[6] та PNaCl[4]. Основна відмінність від Asm.js полягає в тому, що WebAssembly є бінарним форматом, що не зав'язується на JavaScript і дозволяє виконувати в браузері низькорівневий проміжний код. На відміну від PNaCl, проміжний код WASM не є машинним кодом і не ізольований в окремій віртуальній машині, а виконується зі схожим на JavaScript рівнем ізоляції.

Для розробників підготовлено інструментарій для компіляції модулів WebAssembly з коду мовами C/C++. Наприклад, для компіляції С/C++/asm.js в WebAssembly можна використовувати Emscripten або створений на його основі спеціальний компілятор Binaryen. Для перетворення тестового формату в бінарний поставляється транслятор WABT.

Історія

WebAssembly анонсували 17 червня 2015[7], а 15 березня 2016 показали робочий Angry Bots на Unity у Firefox,[8] Chromium, Google Chrome,[9] та Microsoft Edge.[10]

У лютому 2017 робоча група зі стандартизації WebAssembly вирішила[11], що бінарний формат і початковий WebAssembly API досягли рівня MVP (мінімально життєздатний продукт), що дає розробникам браузерів зелене світло на включення WebAssembly за умовчанням.

WebAssembly включений за умовчанням у браузерах Firefox 52[12] та Chrome 57[13] у березні 2017.

Примітки

  1. http://webassembly.org/roadmap/
  2. Release 2.0 — 2022.
  3. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming
  4. а б Bright, Peter (18 червня 2015). The Web is getting its bytecode: WebAssembly. Ars Technica. Condé Nast. Архів оригіналу за 21 листопада 2015. Процитовано 16 березня 2017.
  5. Lin Clark. What makes WebAssembly fast?. Архів оригіналу за 16 березня 2017. Процитовано 16 березня 2017.
  6. WebAssembly: a binary format for the web. ②ality — JavaScript and more. 18 червня 2015. Архів оригіналу за 5 лютого 2016. Процитовано 16 березня 2017.
  7. Launch bug. GitHub / WebAssembly / design. 11 червня 2015. Архів оригіналу за 21 листопада 2021. Процитовано 17 березня 2017.
  8. Wagner, Luke (14 березня 2016). A WebAssembly Milestone: Experimental Support in Multiple Browsers. Mozilla Hacks. Архів оригіналу за 11 серпня 2017. Процитовано 17 березня 2017.
  9. Thompson, Seth (15 березня 2016). Experimental support for WebAssembly in V8. V8 Blog. Архів оригіналу за 31 березня 2017. Процитовано 17 березня 2017.
  10. Zhu, Limin (15 березня 2016). Previewing WebAssembly experiments in Microsoft Edge. Microsoft Edge dev blog. Архів оригіналу за 18 серпня 2021. Процитовано 17 березня 2017.
  11. WebAssembly consensus and end of Browser Preview. Архів оригіналу за 9 березня 2017. Процитовано 16 березня 2017.
  12. Firefox 52: Introducing Web Assembly, CSS Grid and the Grid Inspector. Архів оригіналу за 27 травня 2017. Процитовано 16 березня 2017.
  13. Stable Channel Update for Desktop. Архів оригіналу за 16 березня 2017. Процитовано 16 березня 2017.

Посилання