Wasmer — это быстрая и безопасная среда выполнения WebAssembly, которая позволяет запускать сверхлегкие контейнеры где угодно: от настольных компьютеров до облачных, периферийных и IoT-устройств.
Спустя почти 6 месяцев с момента предыдущего выпуска, вышла новая версия Wasmer 3.0, третья основная версия проекта, которая развивается среда выполнения для выполнения модулей WebAssembly которые можно использовать для создания универсальных приложений, которые могут работать в разных операционных системах, а также для ненадежного выполнения кода.
La возможность запускать одно и то же приложение на разных платформах это обеспечивается путем компиляции кода в низкоуровневый промежуточный код WebAssembly, который может работать в любой операционной системе или встраиваться в программы на других языках программирования. Программы — это легкие контейнеры, которые запускают псевдокод WebAssembly.
Эти контейнеры не привязаны к операционной системе и могут содержать код, изначально написанный на любом языке программирования.
Чтобы перевести WebAssembly в машинный код текущей платформы, вам поддерживает подключение различных бэкэндов сборки (Singlepass, Cranelift, LLVM) и двигателей (с использованием JIT или генерации машинного кода). Управление доступом и взаимодействие с системой обеспечивается API WASI (WebAssembly System Interface), который предоставляет программные интерфейсы для работы с файлами, сокетами и другими функциями, предоставляемыми операционной системой.
платформа позволяет достичь производительности выполнения приложений, близкой к производительности нативных сборок.
Основные новинки Wasmer 3.0
В этой новой версии Wasmer 3.0 возможность создавать собственные исполняемые файлы для любой платформы. Команда "wasmer create-exe» был полностью переработан для преобразования файла промежуточного кода WebAssembly в автономные исполняемые файлы для платформ Linux, Windows и macOS, которые можно запускать без установки Wasmer.
Еще одна новинка, которая представлена, заключается в том, что возможность запуска пакетов WAPM находится в каталоге wapm.io с помощью команды «wasmer run». Например, выполнить "васмер запускает питон/питон» загрузит пакет python из репозитория wapm.io и запустит его.
API Wasmer Rust был полностью переработан., изменив способ обработки памяти и обеспечив возможность безопасного хранения объектов Wasm в структуре Store.
В этой новой версии Wasmer 3.0 также выделяется улучшенная реализация WASI API (WebAssembly System Interface), помимо исправления проблем в WASI API для работы с файловой системой. Внутренние типы были переработаны с использованием WAI (интерфейсов WebAssembly), что позволит в будущем реализовать ряд новых функций.
Вдобавок к этому упростились и движки, так как вместо отдельных движков для JIT используется динамическая и статическая привязка (Universal, Dylib, StaticLib), теперь предлагает общий движок и загружает и сохраняет код который управляется на уровне настройки параметров.
Для десериализации артефактов используется фреймворк rkyv, который обеспечивает операцию нулевого копирования, т. е. не требует дополнительного выделения памяти и выполняет десериализацию, используя только изначально предоставленный буфер.
Из другие изменения которые выделяются из этой новой версии:
- Использование rkyv значительно увеличило скорость запуска.
- Компилятор Singlepass был улучшен для поддержки многозначных функций, повышения надежности и добавления поддержки платформ обработки исключений.
- Набор компонентов wasmer-js был реализован для запуска Wasmer в веб-браузере и взаимодействия с ним из JavaScript с использованием библиотеки wasm-bindgen.
- Была предложена новая структура. ПамятьView который позволяет читать и записывать данные в линейную область памяти.
Наконец, следует упомянуть, что программы распространяются в виде обычных модулей WebAssembly, которыми можно управлять с помощью менеджера пакетов WAPM. Wasmer также доступен в виде библиотеки, которую можно использовать для встраивания кода WebAssembly в программы Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir и Java.
Код проекта написан на Rust и распространяется под лицензией MIT, подробнее об этом можно узнать, По следующей ссылке.
Будьте первым, чтобы комментировать