В конце октября 2024 года состоялся релиз проекта Wasmer 5.0. Это открытый инструментарий для создания приложений на базе WebAssembly, который можно использовать для создания универсальных приложений, способных выполняться в разных операционных системах. Wasmer можно использовать для изолированного выполнения не заслуживающих доверия блоков кода в составе обычных приложений. Исходный код проекта написан на языке Rust и опубликован на GitHub под лицензией MIT.
По данным OpenNET, возможность запуска одного приложения с помощью Wasmer на разных платформах реализована через компиляцию в низкоуровневый промежуточный код WebAssembly, который может запускаться в любых ОС или встраиваться в программы на других языках программирования. Программы в Wasmer представляют собой легковесные контейнеры, в которых выполняется псевдокод WebAssembly. Данные контейнеры не привязаны к операционной системе и могут включать код, изначально написанный на любом языке программирования.
Для для выполнения промежуточного кода WebAssembly или его трансляции в машинный код целевой платформы в Wasmer предлагаются различные бэкенды: на базе компилятора Singlepass, на базе генератора кода Cranelift, на базе компилятора LLVM, для запуска в веб-браузере, на базе JavaScript-движка JavascriptCore, на базе JavaScript-движка V8, а базе интерпретатора Wasmi и на базе runtime WAMR.
Для запуска 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.
Основные изменения и дополнения в Wasmer 5.0:
• реализована возможность использования интерпретаторов WebAssembly;
• добавлен экспериментальный бэкенд на базе легковесного интерпретатора Wasmi, позволяющего выполнять промежуточный код WebAssembly в окружениях с ограниченными ресурсами;
• добавлен экспериментальный бэкенд на базе WebAssembly runtime WAMR (WebAssembly Micro Runtime), оптимизированного для минимального потребления ресурсов и пригодного для применения на устройствах с небольшим объёмом оперативной памяти;
• добавлен экспериментальный бэкенд на базе JavaScript-движка v8, используемого в браузерах на кодовой базе Chromium. Основным достоинством применения бэкенда на базе V8 называется возможность использования встроенного в данный движок отладчика и инструментария для web-разработчиков, а также доступность в V8 расширенной функциональности WebAssembly, такой как обработка исключений и сборка мусора;
• в бэкенд, использующий LLVM, добавлена экспериментальная поддержка архитектуры Loongarch64;
• добавлена поддержка платформы iOS, доступная при использовании бэкендов WAMR, Wasmi и V8;
• прекращена поддержка компилятора Emscripten;
• обновлены зависимости, среди которых LLVM 18, генератор кода Cranelift 27 и фреймворк rkyv 0.8;
• проведена оптимизация производительности. Например, при выполнении операций десериализации модулей наблюдается прирост производительности до 50%.
ссылка на оригинал статьи https://habr.com/ru/articles/854642/
Добавить комментарий