Анонсирован WebAssembly, обеспечивающий запуск скомпилированного кода в браузерах

Четверг, 18 июня 2015 г.

Следите за нами в ВКонтакте, Телеграм'e и Twitter'e

Бренден Айк (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 планируется подготовить специальный бэкенд к 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-фреймворков.

Следите за нами в ВКонтакте, Телеграм'e и Twitter'e


Просмотров: 423
Рубрика: Hi-Tech


Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003