Анонсирован WebAssembly, обеспечивающий запуск скомпилированного кода в браузерах
18 июня 2015 года
Бренден Айк (Brendan Eich), создатель языка JavaScript, представил проект WebAssembly, совместно развиваемый ведущими производителями браузеров под эгидой организации W3C. В рамках проекта планируется подготовить унифицированный низкоуровневый промежуточный код для выполнения в браузере приложений, скомпилированных из различных языков программирования, фокусируясь на начальном этапе в основном на языках С и С++, но не ограничиваясь ими.
По своим задачам WebAssembly во многом напоминает PNaCl (Portable Native Client) и Asm.js. Основное отличие от Asm.js состоит в том, что WebAssembly является бинарным форматом, не завязанным на исходных текстах JavaScript и позволяющим выполнять в браузере низкоуровневый промежуточный код. При этом, в отличие от PNaCl промежуточный код не является машинным кодом и не изолирован в отдельной виртуальной машине, а выполняется с похожим на JavaScript уровнем изоляции и реализован на уровне штатных движков JavaScript (по сути предлагается технология компиляции JavaScript-приложений, с возможностью доступа к объектам JavaScript, DOM и Web API).
Для генерации кода WebAssembly планируется (Архивная копия от 22 августа 2015 на Wayback Machine) подготовить специальный бэкенд к clang/LLVM, который сможет быть использован в том числе для генерации кода уже существующими проектами, такими как Emscripten и PNaCl. Т.е. вместо генерации JavaScript и собственного байткода, Emscripten и PNaCl смогут генерировать универсальный код WebAssembly. В настоящее время для экспериментов предлагаются рабочие прототипы кодировщика и декодировщика. Для изучения кода WebAssembly и отладки предусмотрена возможность преобразования промежуточного бинарного кода в наглядное текстовое представление.
Среди основных задач WebAssembly выделяется обеспечение переносимости между браузерами, предсказуемость поведения и идентичности выполнения кода на разных платформах. Использование WebAssembly также позволит существенно сократить размер приложений, благодаря компактному промежуточному коду, и увеличить скорость декодирования. В частности, текущий прототип WebAssembly демонстрирует в 20 раз более высокую скорость декодирования промежуточного кода по сравнению с JavaScript и генерирует на 45% более компактное представление кода по сравнению с минимизированным кодом Asm.js, сжатым при помощи gzip.
По мере развития проекта, его планируется расширить поддержкой таких возможностей, как динамическое связывание, полное управление памятью (mmap, shared memory), низкоуровневый доступ к структурам сборщика мусора, JIT-компиляция, многопроцессный режим выполнения, SIMD API, асинхронные сигналы, расширенные целочисленные операции и т.п.
WebAssembly позиционируется как совместный проект, развиваемый всеми ведущими производителями браузеров. В основную команду, которая будет развивать WebAssembly, вошли разработчики PNaCl и движка V8 из Google, представители Microsoft и Mozilla, а также разработчики Emscripten и WebKit. Внедрение WebAssembly даст возможность воплотить в жизнь создание новых продуктов, работающих в браузере, в том числе высокопроизводительных игр, систем редактирования видео/звука/изображений, P2P-систем, САПР, средств разработки и коммуникации, в том числе упоминается возможность запуска локального web-сервера в браузере и эффективная упаковка web-фреймворков.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.