🔥

Тред (Андрей Нагих)


Итак, WebAssembly. Как мы видим из опроса, очень мало людей используют его в продакшене. Это не удивительно, т.к. технология относительно новая (поддержка в браузерах появилась в 2017 году) и довольно специфичная.Меня радует, что есть люди, которые сейчас экспериментируют с Wasm.

Если посмотреть в корень, то Wasm это двоичный формат файла, в котором мы можем сохранить байткод для выполнения на виртуальной машине JavaScript в браузере.

Что это нам даёт? Мы можем генерировать этот байткод из языков системного программирования (С, C++, Rust). При запуске браузеру не нужно парсить тонну текста JS (как было с asm.js). Wasm это двоичный формат, и оптимизирован для быстрого запуска.

Два слова об asm.js. Это прародитель Wasm, эксперимент компании Mozilla, целью которого было получить возможность затащить C++ в браузер. В основном это нужно было для портирования игрушек.

Этот проект выстрелил, у него даже появилась неплохая поддержка в браузерах caniuse.com/#search=asm.js. Но стали очевидны проблемы производительности.

Организуя проект WebAssembly Mozilla изначально привлекла к написанию спецификации всех основных вендоров браузеров. И поставила целью сделать решение подходящее для промышленного использования (эффективное, быстрое, безопасное, открытое, отлаживаемое, интегрированное с web api).

Примечательно, что весь процесс написания спецификации шёл открыто на GitHub, и любой мог наблюдать за ним или поучаствовать. github.com/WebAssembly/de…

Сейчас работа продолжается так же на GitHub. В 2017 году в браузеры зарелизили MVP. Около года собиралась обратная связь. Сейчас идет активное развитие технологии. Процесс похож на JS: подаются proposals, идет обсуждение, принятие и реализация.

Браузеры очень быстро реализовали поддержку, а сейчас она просто великолепна: caniuse.com/#search=webass… Мы начали реализацию своего проекта осенью 2017 года, когда поддержка доехала в Safari и Edge. Chrome и FF уже имели её с весны.