Асинхронность в WebAssembly(WASM)
rudikone 13 минут назад Асинхронность в WebAssembly(WASM) Средний 33 мин 171 Rust * WebAssembly * Java * Обзор WebAssembly (WASM) - это открытый стандарт и компактный бинарный формат байт-кода, созданный для выполнения...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: rudikone 13 минут назад Асинхронность в WebAssembly(WASM) Средний 33 мин 171 Rust * WebAssembly * Java * Обзор WebAssembly (WASM) - это открытый стандарт и компактный бинарный формат байт-кода, созданный для выполнения кода в браузере с околонативной скоростью. Он работает внутри безопасной виртуальной машины и поддерживается всеми популярными браузерами (Chrome, Firefox, Safari, Edge). WASM не является самостоятельным языком программирования.
Это target для C, C++, Rust, Go и других языков. Хоть технология и создавалась для решения проблем веба и браузеров, с выходом WASI WASM шагнул в сторону серверной и IoT-разработки. WASI (WebAssembly System Interface)WASI (WebAssembly System Interface) - это стандартизированный системный интерфейс (API), который позволяет запускать модули WebAssembly вне браузера Кроссплатформенность, околонативная скорость, безопасность и изоляция сильнее, чем у Docker-контейнеров делает эту технологи крайне интересной в серверной разработке (как минимум для экспериментов).
Технические детали
Типичный сервер с бизнес-логикой не обходится исключительно CPU-bound операциями, ему почти всегда нужны данные, за данными необходимо ходить по сети. При выборе WASM из за его скорости было бы странно обойти стороной оптимизацию compute нашего сервера: асинхронный неблокирующий I/O. Давайте попробуем разобраться, какие возможности нам сегодня предоставляет экосистема WASM.
Для начала явно обозначим задачуВажное замечаниеПодразумевается, что у читателя есть некоторые представления об экосистеме WASM - WASI, WIT, Component Model, guest и host, линейная память, proposals и т. - многие абстракции в статье не будут описаны подробны в угоду простоты и читабельности :). Пишите в комментариях, что необходимо раскрыть более подробно.
Зачем нам нужна асинхронностьПредставим сервер с бизнес-логикой, обслуживающий и порождающий HTTP-трафик. При обслуживании внешнего запроса сервер вызывает мастер системы, чтобы обогатиться данными. Данные зачастую независимы, или наоборот - имеют сложные связи, но в любом случае походов во внешние системы много, блокировки и простой воркеров будут приводить к деградации системы.
Отраслевые последствия
WASM-компонент изолирован и сам не делает сетевых вызовов. HTTP, диск, таймеры - все это выполняет хост (Wasmtime). Но именно отсюда и вырастает потребность в асинхронности.
Почему WasmtimeWASM - всего лишь инструкции, которые кто-то должен исполнять, поэтому при выборе WASM вам нужно будет еще и выбирать рантайм для него. Я остановился на Wasmtime по причинам:Единственный зрелый рантайм с полной поддержкой WASIЕсть биндинги есть для многих языков (wasmtime-go, wasmtime-py)Однако, этот вопрос можно обсуждать более подробно, но это не касается темы данной статьи. Когда компонент вызывает импорт wasi:http/outgoing-handler, под капотом компонент передает управление хосту, который инициирует реальный HTTP-запрос, а ответ придет через некоторое время.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





