Об этом проекте
Wasmtime — это автономный рантайм для WebAssembly, разрабатываемый в рамках проекта Bytecode Alliance. Он создан для быстрой, безопасной, настраиваемой и соответствующей стандартам работы, и может использоваться как в качестве инструмента командной строки, так и в качестве встраиваемого рантайма в других приложениях.
Установка
CLI можно установить на Linux и macOS с помощью скрипта, который устанавливает файлы в $WASMTIME_HOME (по умолчанию $HOME/.wasmtime), помещая исполняемый файл в $WASMTIME_HOME/bin. Пользователи Windows и другие могут загрузить установщики и бинарные файлы со страницы релизов GitHub. Дополнительные варианты установки описаны в онлайн-книге.
Пример использования
При установленном компиляторе Rust программу на Rust можно скомпилировать в компонент WebAssembly с помощью цели wasm32-wasip2, а затем выполнить с помощью команды wasmtime. В README показан пример hello-world, который выводит «Hello, world!» при запуске.
Основные возможности
- Быстрый: построен на оптимизирующем генераторе кода Cranelift, который может создавать машинный код как во время выполнения, так и заранее. Он оптимизирован для эффективного создания экземпляров, малозатратных вызовов между встраивающим приложением и wasm, а также масштабирования конкурентных экземпляров.
- Безопасный: разработка делает упор на корректность и безопасность, опираясь на гарантии безопасности времени выполнения Rust. Функции проходят через процесс RFC, непрерывный фаззинг через Google OSS Fuzz, политику релизов и определённую политику безопасности. Проект также включает защиту от таких проблем, как Spectre, и сотрудничает с академическими исследователями по формальной верификации критических частей Wasmtime и Cranelift.
- Настраиваемый: предоставляются разумные значения по умолчанию, но конфигурация позволяет точно контролировать потребление CPU и памяти — от небольших окружений до крупных серверов с множеством конкурентных экземпляров.
- WASI: поддерживает богатый набор API для взаимодействия с хост-средой через стандарт WASI.
- Соответствие стандартам: проходит официальный набор тестов WebAssembly, реализует официальный C API для wasm и реализует будущие предложения WebAssembly. Разработчики участвуют в процессе стандартизации WebAssembly.
Поддержка языков
Wasmtime можно встраивать из многих языков. Языки, поддерживаемые Bytecode Alliance, включают Rust (крейт wasmtime), C (заголовки wasm.h, wasi.h и wasmtime.h, с CMake), C++ (заголовок wasmtime.hh), Python (пакет wasmtime на PyPI), .NET (пакет Wasmtime на NuGet), Go (репозиторий wasmtime-go) и Ruby (гем wasmtime). Языки, поддерживаемые сообществом, включают Elixir (пакет wasmex на Hex) и Perl (модуль Wasm::Wasmtime в пакете Wasm Perl).
Документация
Руководство по Wasmtime — рекомендуемая отправная точка для изучения возможностей Wasmtime, получения ответов на вопросы и участия в проекте.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.