Крупнейшие производители браузеров Google, Microsoft, Mozilla и разработчики движка WebKit объединились в работе над проектом WebAssembly, который позволит увеличить скорость загрузки интернет-страниц в десятки раз. WebAssembly позволит программистам компилировать код непосредственно для браузера, который будет затем исполняться на Javascript-движке. На первоначальном этапе в WebAssembly планируется добавить поддержку языков C/C++.
Авторы также планируют выпустить библиотеку polyfill, которая позволит конвертировать код WebAssembly в код JavaScript. Это позволит запускать его в любых браузерах, включая те, которые не обладают встроенной поддержкой нового стандарта. Со временем разработчикам планируется предоставить большее количество инструментов, включая компиляторы и отладчики, а также добавить поддержку новых языков программирования. Бинарный формат WebAssembly позволяет делать исполняемый код более компактным по сравнению с Javascript, и, следовательно, он будет быстрее передаваться по Интернету.
Нынешние браузеры работают с изобретенными несколько десятилетий назад языками HTML и JavaScript, которые изрядно устарели. Несмотря на старания программистов, они плохо подходят для создания сложного контента, что особенно заметно в мобильных браузерах.
Сейчас программы на JavaScript представляют собой простые текстовые файлы, которые при открытии страницы загружаются с веб-сервера на компьютер пользователя, после чего JavaScript-движок браузера выполняет интерпретацию их команд. Этот процесс занимает много времени, и поэтому некоторые разработчики придумали способы его оптимизации — Mozilla анонсировала проект Asm.js, а Google — Native Client. Оба проекта призваны реализовать возможность запуска исполняемого кода в веб-браузере, но они медленно развиваются. Не исключено, что WebAssembly первым придет к финишу, считает TechCrunch. Разработчики не хотят полностью заменить JavaScript, а скорее дополнить его. Целью является более эффективная трансляция большего числа языков программирования. Можно будет разделять обязанности: WebAssembly будет использоваться для анимации, JavaScript для пользовательского интерфейса.