В июне 2015 года изобретатель JavaScript и соучредитель Mozilla Брендан Эйх (Brendan Eich) объявил о чем-то очень интересном для Интернета: WebAssembly.
Эйх объясняет, что JavaScript был назван языком ассемблера в Интернете , с чем он не согласен и продолжает представлять WebAssembly, « новое промежуточное представление для безопасного кода в Интернете », как он его описывает. Google, Microsoft, Mozilla, Apple и некоторые другие люди экспериментировали с ним до объявления Eich.
WebAssembly, для краткости «wasm», суффикс имени файла .wasm, — это новый стандарт, целью которого является определение безопасной, переносимой, эффективной по размеру и времени загрузки двоичного компилятора, которая обеспечивает практически естественную производительность — виртуальный ЦП для Интернета. ,
Зачем нужна WebAssembly? Что ж, asm.js требует, чтобы движки оптимизировались под него, что делает анализатор горячей точкой (буквально — мобильные устройства могут сильно нагреваться). Это связано с необходимостью сжатия транспорта, которое также экономит полосу пропускания, но распаковка его перед анализом может быть болезненной. Кроме того, если браузеры изначально поддерживают формат WebAssembly, JavaScript и wasm могут расходиться, не вводя небезопасные или неуместные функции в JavaScript только для использования компиляторами, использующими несколько радикально различных языков программирования.
Auth0 довольно хорошо объясняет WebAssembly в этом посте , если вам нужен лучший обзор.
WebAssembly — год спустя
WebAssembly разработан с учетом нескольких вариантов использования как внутри, так и вне браузера. Как вы можете догадаться, wasm можно использовать для редактирования изображений / видео, игр AAA в браузере, живого дополнения, виртуальной реальности и многого другого. Практически все, что уже возможно в Интернете, но с потенциалом быть быстрее и эффективнее. Но WebAssembly также может быть полезна вне браузера: приложения на стороне сервера, гибридные нативные приложения, вычисления на стороне сервера ненадежного кода — это лишь некоторые из потенциальных приложений.
Дорожная карта также идет хорошо. За последний год группа сообщества WebAssembly достигла большого прогресса, создав:
- Описание и обоснование начального набора функций и запланированных будущих функций;
- Спецификация и справочный интерпретатор;
- 13 000 строк тестов, используемых для проверки как интерпретатора спецификации, так и браузеров;
- Первый проект двоичного формата.
С такими захватывающими обещаниями поставщики браузеров спешат предложить ранние реализации WebAssembly в своих браузерных движках. Теперь можно создавать демоверсии WebAssembly, которые работают на нескольких экспериментальных реализациях.
Почему экспериментальный? Это связано с тем, что как двоичный формат, так и привязки JavaScript для WebAssembly, вероятно, будут несовместимо изменяться в течение ближайших месяцев, вплоть до первого стабильного выпуска. Ожидается, что реализации пока не будут достаточно зрелыми для проведения стресс-тестов или тестирования производительности и в течение некоторого времени.
Однако это большой шаг вперед, поскольку все браузеры переходят на одну и ту же страницу, что замечательно, если вспомнить, что Internet Explorer делал в прошлом.
Прочитайте статью Mozilla Hacks WebAssembly для получения дополнительной информации.
WebAssembly Демо
Давайте попробуем демо-версию WebAssembly через Firefox Nightly (она также должна работать на Chrome Canary). Убедитесь, что у вас установлена последняя версия Nightly , откройте about:config
javascript.options.wasm
true
Посмотрите экспериментальную демоверсию Angry Bots , игры для Unity, которая была портирована на WebAssembly. Вы можете сражаться с роботами и исследовать 3D космическую станцию в этом шутере сверху вниз. Движение управляется W, A, S, D или клавишами со стрелками, а прицеливание и стрельба — мышью.
Далее
Перед выпуском первой стабильной версии у WebAssembly еще много важных задач:
- Официальный текстовый формат WebAssembly должен быть определен.
- Далее уменьшите размер двоичного формата.
- Перейдите к JavaScript-интерфейсу WebAssembly.
- Более доступная документация для авторов компиляторов, авторов инструментов, хакеров и студентов.
- Дополнительные тесты добавлены в набор тестов.
Веб, Собери!
Если вы хотите принять участие, вы можете присоединиться к группе сообщества на W3C. Фактическая спецификация WebAssembly разрабатывается в репозитории спецификаций на GitHub. Группа предлагает, чтобы обсуждения проекта высокого уровня продолжали проводиться в хранилище проекта , через проблемы и запросы извлечения. Перед тем, как погрузиться, обязательно ознакомьтесь с Кодексом этики и профессионального поведения .
Взволнован еще? Что вы думаете о последних новостях о WebAssembly?