Об этом проекте

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, получения ответов на вопросы и участия в проекте.