EnglishРусский Map

Wasmer

title
Wasmer
type
toolbox
summary
WebAssembly runtime на Rust со сменными бэкендами компилятора и системным интерфейсом WASIX
tags
rust, webassembly, runtime, sandboxing, serverless
language
Rust
license
MIT
created
2026-07-23
updated
2026-07-23
lang
ru
translation_of
wasmer
source_updated
2026-07-23
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

Wasmer - это самостоятельный webassembly runtime: CLI для запуска файлов .wasm, библиотека для встраивания в хост-программу и реестр пакетов, откуда CLI умеет их скачивать. Проект развивается с 2018 года, что делает его одним из старейших runtime'ов вне браузера; он распространяется под лицензией MIT, и за ним стоит компания с инвестициями YC. Коммерческий слой поверх открытого ядра - это платформа для развёртывания Wasm-приложений в edge-сети.

Главная страница wasmer.io почти целиком посвящена рекламе этой платформы - "новые технологии контейнеризации", "масштабируется без усилий", логотипы крупных корпораций - и говорит крайне мало о самом runtime'е. Ниже описан именно runtime.

Как устроен

Главное архитектурное решение - компилятор сделан в виде сменного backend'а, а не жёстко встроен в движок. Singlepass компилирует за один линейный проход ради максимально быстрого запуска и предсказуемого времени компиляции - именно это нужно, когда модуль приходит во время запроса и сразу после этого выбрасывается. Cranelift - промежуточный вариант. LLVM генерирует самый быстрый код ценой гораздо более долгой компиляции - для модулей, которые компилируются один раз и используются повторно. Скомпилированные артефакты можно сериализовать заранее (ahead of time), чтобы перенести затраты на компиляцию с момента загрузки на этап сборки.

Вторая составляющая - системный интерфейс. Стандартный WASI даёт Wasm-модулю урезанное подмножество POSIX - предварительно открытые директории, stdio, часы, генератор случайных чисел - и сознательно не пытается быть полноценной операционной системой. Wasmer поставляет WASIX, собственное расширение поверх WASI, куда добавлены потоки, полноценные сокеты Беркли и вызовы fork/exec. Именно это позволяет компилировать существующий серверный софт в Wasm практически без изменений. Но это нестандартное расширение: код, зависящий от WASIX, работает только в Wasmer и не запустится в runtime'ах, реализующих исключительно WASI.

Встраивание поддерживается для большого списка языков - нативно для Rust, а также для C/C++, Python, Go, JavaScript, PHP, Ruby и других через обвязки над общим C API. За счёт этого к одной и той же песочнице можно обращаться независимо от языка хост-приложения. JavaScript SDK умеет запускать программы WASIX прямо в браузере - именно так работает демо-оболочка wasmer.sh.

# run a module directly
wasmer run ./program.wasm --dir=. -- --flag arg

# run a published package from the registry
wasmer run python/python -- -c "print(1+1)"

# compile ahead of time with a chosen backend
wasmer compile ./program.wasm --llvm -o program.wasmu

Где уместен

По сравнению с wazero компромисс понятен: wazero написан на чистом Go без CGO, поэтому его встраивание не усложняет сборку, но это интерпретатор с простым компилятором без уровня оптимизаций LLVM. Wasmer быстрее на пределе возможностей и поддерживает WASIX, однако его встраивание в Go-программу требует линковки нативной библиотеки и лишает простой кросс-компиляции. В сравнении с Wasmtime (runtime от Bytecode Alliance) отличия Wasmer - это архитектура с несколькими backend'ами, WASIX и широкий выбор языковых биндингов. Wasmtime остаётся более консервативным выбором, если важнее строгое следование стандартам.

Ограничения

Главное из них - WASIX. Он решает реальную проблему (стандартный WASI слишком беден для портирования существующих программ), но делает это в обход процесса стандартизации. Поэтому его использование - это осознанный отказ от переносимости, а не бесплатная возможность. Архитектура со сменными backend'ами также означает, что итоговая производительность зависит от выбранного backend'а и от того, была ли компиляция выполнена заранее, а маркетинговые замеры редко уточняют эти детали.

Runtime распространяется с открытым исходным кодом, тогда как платформа развёртывания, реестр и тарифные планы - это отдельные вещи, границы между которыми сайт пытается размыть. Тем, кто оценивает Wasmer для встраивания, стоит изучать репозиторий, а не сайт.

Репозиторий: github.com/wasmerio/wasmer - ~20 900 звёзд, MIT, Rust.