← Cloudflare Workers / workers / runtime-apis
WebAssembly (Wasm)
WebAssembly ↗ (сокращённо Wasm) позволяет компилировать код на таких языках, как Rust, Go или C в бинарный формат, который может выполняться в самых разных средах, включая веб-браузеры ↗, Cloudflare Workers и других сред выполнения WebAssembly.
WebAssembly можно использовать для:
-
Пишите код на языках, отличных от JavaScript, через
WebAssembly.instantiate(). -
Напишите весь Cloudflare Worker на Rust, используя привязки, которые делают JavaScript API Workers доступными непосредственно из вашего кода на Rust.
Большинство языков программирования можно скомпилировать в Wasm, хотя уровень поддержки различается в зависимости от языка и компилятора. Руководства доступны для следующих языков:
Поддерживаемые предложения
WebAssembly представляет собой быстро развивающийся набор стандартов, многие предложенные API ↗ которые находятся на разных стадиях разработки. В целом Workers поддерживает тот же набор функций, что доступен в Google Chrome.
SIMD
Workers поддерживают SIMD. Дополнительную информацию об использовании SIMD в WebAssembly см. в Быстрые параллельные приложения с WebAssembly SIMD ↗.
Многопоточность
Многопоточность в Workers невозможна. Каждый Worker выполняется в одном потоке, и Web Worker ↗ API не поддерживается.
Размер двоичного файла
Компиляция в WebAssembly часто требует включения дополнительных зависимостей времени выполнения. Из-за этого Workers, использующие WebAssembly, обычно крупнее эквивалентного Worker, написанного на JavaScript. Чем крупнее ваш Worker, тем дольше может занимать его запуск. См. Время запуска Worker ↗ для дополнительной информации. Рекомендуем использовать такие инструменты, как wasm-opt ↗ чтобы оптимизировать размер вашего двоичного файла Wasm.
WebAssembly System Interface (WASI)
WebAssembly System Interface ↗ (сокращённо WASI): модульный системный интерфейс для WebAssembly, который стандартизирует набор базовых системных вызовов для работы с сетью, файловой системой и другими ресурсами. Приложения могут полагаться на WebAssembly System Interface, чтобы вести себя одинаково в разных средах хостинга и операционных системах.
WASI представляет собой более ранний и быстрее развивающийся набор стандартов, чем Wasm. Поддержка WASI в Cloudflare Workers экспериментальна: реализованы лишь некоторые системные вызовы. См. наш реализация WASI с открытым исходным кодом ↗, а также статья в блоге о WASI в Workers ↗ демонстрирующий его использование.