[ON] Доступен Wasmer 2.0, инструментарий для создания приложений на базе WebAssembly

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6004
ОС: gnu/linux

[ON] Доступен Wasmer 2.0, инструментарий для создания приложений на базе WebAssembly

Сообщение rssbot »

Состоялся второй значительный выпуск проекта Wasmer, развивающего runtime для выполнения модулей WebAssembly, который можно использовать для создания универсальных приложений, способных выполняться в разных операционных системах, а также для изолированного выполнения кода, не заслуживающего доверия. Код проекта написан на языке Rust и распространяется под лицензией MIT.


Переносимость обеспечивается благодаря компиляции кода приложения в низкоуровневый промежуточный код WebAssembly, который может запускаться в любых ОС или встраиваться в программы на других языках программирования. Программы представляют собой легковесные контейнеры, в которых выполняется псевдокод WebAssembly. Данные контейнеры не привязаны к операционной системе и могут включать код, изначально написанный на любом языке программирования. Для компиляции в WebAssembly может использоваться инструментарий Emscripten. Для трансляции WebAssembly в машинный код текущей платформы поддерживается подключение разных бэкендов компиляции (Singlepass, Cranelift, LLVM) и движков (задействование JIT или генерация машинного кода).



Управление доступом и взаимодействие с системой обеспечивается при помощи API WASI (WebAssembly System Interface), предоставляющем программные интерфейсы для работы с файлами, сокетами и другими функциями, предоставляемыми операционной системой. Приложения изолированы от основной системы в sandbox-окружении и имеют доступ только к заявленной функциональности (механизм безопасности на основе управления возможностями - для действий с каждым из ресурсов (файлы, каталоги, сокеты, системные вызовы и т.п.) приложению должны быть даны соответствующие полномочия).


Для запуска WebAssembly-контейнера достаточно установить в системе runtime Wasmer, который поставляется без внешних зависимостей ("curl https://get.wasmer.io -sSfL | sh"), и запустить необходимый файл ("wasmer test.wasm"). Программы распространяются в форме обычных WebAssembly-модулей, для управления которыми можно использовать пакетный менеджер WAPM. Wasmer также доступен в форме библиотеки, которую можно использовать для встраивания кода WebAssembly в программы на языках Rust, С/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir и Java.


Платформа позволяет добиться производительности выполнения приложений, близкой к выполнению родных сборок. При помощи Native Object Engine для WebAssembly-модуля можно сгенерировать машинный код ("wasmer compile --native" для генерации предкомпилированных объектных файлов .so, .dylib и .dll), для запуска которого требуется минимальный runtime, но сохраняются все возможности sandbox-изоляции. Возможна поставка предкомпилированных программ со встроенным Wasmer. Для создания надстроек и дополнений предлагаются Rust API и Wasm-C-API.


Значительная смена номера версии Wasmer связана с внесением нарушающих совместимость изменений во внутренний API, которые, по заверению разработчиков, никак не отразятся на 99% пользователей платформы. Из нарушающих совместимость изменений также отмечается изменение формата сериализированных модулей Wasm (модули, сериализированные в Wasmer 1.0, не смогут использоваться в Wasmer 2.0). Другие изменения:
  • Поддержка инструкций SIMD (Single Instruction, Multiple Data), позволяющих организовать распараллеливание операций над данными. Из областей, в которых применение SIMD может заметно поднять производительность, отмечается машинное обучение, кодирование и декодирование видео, обработки изображений, симуляция физических процессов и манипуляции с графикой.
  • Поддержка ссылочных типов, позволяющих модулям Wasm обращаться к информации в других модулях или в базовом окружении.
  • Проведена значительная оптимизация производительности. Скорость работы LLVM runtime с числами с плавающей запятой увеличена примерно на 50%. Значительно ускорен вызов функций за счёт сокращения ситуаций, требующих обращения к ядру. На 40% увеличена производительность
    генератора кода Cranelift. Сокращено время десериализации данных.
    Изображение
    Изображение
  • Для более точного отражения сути изменены названия движков:
    JIT → Universal, Native → Dylib (Dynamic Library),
    Object File → StaticLib (Static Library).


Источник: https://www.opennet.ru/opennews/art.shtml?num=55350
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 20.06.2021 09:39, всего редактировалось 1 раз.
Причина: Updated upstream
Спасибо сказали: