WebAssembly | |
---|---|
Класс языка | Expression-oriented[англ.] |
Появился в | 2015[2] |
Автор | Консорциум Всемирной паутины |
Разработчик | |
Расширение файлов |
.wast или .wasm [3] |
Выпуск | 2.0.1[1] (24 июля 2023 года) |
Система типов | статическая |
Испытал влияние | Asm.js и Native Client |
Лицензия | Apache License 2.0 |
Сайт | webassembly.org |
Медиафайлы на Викискладе |
WebAssembly (сокращённо wasm) — язык программирования низкого уровня[источник не указан 87 дней], призванный внести программируемость туда, где нужны кроссплатформенность, эффективность и безопасность, в первую очередь на клиентскую сторону Всемирной паутины.
Программирование идёт на обычных статически типизированных языках, таких как Си, C++, C#, Rust, Go. Стековая виртуальная машина, исполняющая инструкции бинарного формата wasm, может быть запущена как в среде браузера, так и в серверной среде. Код на wasm — переносимое абстрактное синтаксическое дерево, что обеспечивает как более быстрый анализ, так и более эффективное выполнение в сравнении с JavaScript.
Проект стартовал 17 июня 2015 года[4], 15 марта 2016 года была продемонстрирована работа игры Angry Bots из набора примеров для Unity в браузере Chromium[5]. Изначально проект основывался на asm.js[6] и PNaCl[7]. В марте 2017 года сообщество разработчиков достигло соглашения о бинарном формате, API для JavaScript и о эталонном интерпретаторе. В конце мая 2017 года команда проекта Chromium объявила о планах по отказу от PNaCl в пользу WebAssembly[8].
По состоянию на 2021 год группа, работающая над WebAssembly, включает разработчиков из Mozilla, Google, Microsoft и Apple, которые представляют на рынке четыре наиболее распространённых браузера — Firefox, Chrome, Microsoft Edge и Safari соответственно[7].
Существует расширение форматов TrueType/OpenType и типографского движка Harfbuzz, позволяющее писать рендеринг текста на WebAssembly[9]. Полученный шрифт меньше по размеру, лучше стандартизован (ожидается меньше расхождений от движка к движку) и обрабатывается быстрее, чем традиционные таблицы OpenType. А некоторые эффекты — многослойный рендеринг цветного шрифта (сначала рисуются все глифы заднего плана, потом все переднего) или качественная сборка стиля арабской вязи «настали́к» — принципиально недостижимы таблицами OpenType[10].