WebAssembly: начало новой эры
Google, Microsoft, Mozilla, а также несколько независимых специалистов работают над новым проектом в W3C WebAssembly Community Group, и то, над чем они работают, совсем не маленькая вещь.
WebAssembly — это:
- Улучшение JavaScript: Реализуйте все критичные вещи на wasm (сокращение от WebAssembly — прим. переводчика) и импортируйте его как стандартный JavaScript модуль.
- Новый язык программирования: WebAssembly определяет абстрактное синтаксическое дерево (как и JavaScript) в бинарном формате. Вы можете писать код и чистить его от ошибок в текстовом формате. WebAssembly легко читаем.
- Улучшение для браузеров: Браузеры будут понимать бинарный формат, а это значит, что разработчики смогут компилировать бинарники, которые можно сжать гораздо больше, чем используемые сегодня текстовые файлы с JavaScript. Чем меньше файл, тем быстрее загрузка. В зависимости от возможностей оптимизации времени компиляции, код на WebAssembly может передаваться и запускаться быстрее, чем на JavaScript!
- Целевая компиляций: Возможность другим языкам, получить первоклассную двоичную поддержку через весь стек веб-платформы.
Мы нуждаемся в WebAssembly потому, что при всей гибкости JavaScript, все еще сложно представить много вещей, которые мы бы хотели в нем видеть, и особенности языка, которые нам нужно туда добавить, только усложнят язык, что уже смущает пользователей.
WebAssembly позволяет нам работать с простыми, низкоуровневыми блоками кода, которые можно использовать для программирования чего угодно.
Чем он отличается от JavaScript? Ключевое слово — “низкоуровневый”. Он определяет примитивы, включая ряд типов и операций над этими типами, литералы для них, control-flow, вызовы, кучи и т.д.
Это очень простые примитивы. Ничего сложного. Нет сложной объектной системы (прототипной или какой-то другой). Нет встроенной, автоматической “сборки мусора” следующей за Вами и периодически Вас останавливающей, когда ей нужно собрать мусор.
На самом деле, это будет полезным, чтобы не думать о WebAssembly как о языке вообще. Это больше похоже на машину, немного похожую на машину Тьюринга...