WASI 0.3 превью теперь в Wasmtime 37+: нативный асинхронный код для компонентов WebAssembly

ReactNode.jsDevOps

WASI 0.3 превью — релиз, который основывает WASI на модели компонентов WebAssembly для предоставления нативных асинхронных примитивов (future, stream) — теперь доступны для тестирования в Wasmtime 37 и позже. Это знаменует собой первое широко доступное реализация среды выполнения, которая предоставляет разработчикам необходимую инфраструктуру 0.3 превью для написания по-настоящему асинхронных, композируемых компонентов WebAssembly на разных языках. (wasi.dev)

Что изменилось (кратко)

  • WASI 0.3 вводит нативный асинхронный код на уровне ABI компонентов (типы future/stream и сигнатуры асинхронных функций), позволяя компонентам ожидать ввода-вывода от хоста без неудобных ручных конечных автоматов. Это основывает многие интерфейсы 0.2 на асинхронных примитивах. (wasi.dev)
  • Wasmtime (37+) предоставляет поддержку асинхронного кода модели компонентов за счет флагов функций, так что среды выполнения и инструментальные цепочки могут начать использовать реальные сценарии асинхронных компонентов уже сегодня. (docs.rs)

Почему полностековые команды должны обратить на это внимание

  • Серверный WebAssembly становится практичным для сетевых сервисов: асинхронный ввод-вывод в первую очередь снижает необходимость в обходных путях для хоста и упрощает и делает более эффективными долгосрочные или высококонкурентные паттерны для микросервисов и функций на краю, основанных на Wasm. (wasi.dev)
  • Реальная многопоточная композиция: инструментальные цепочки языков, которые компилируются в компоненты Wasm (Rust, AssemblyScript, .NET и т.д.), могут взаимодействовать по асинхронным контрактам без специального кода, улучшая повторное использование и безопасность на уровнях бэкенда и края. (wasi.dev)
  • Инструменты и цепочки сборки будут меняться: ожидайте обновлений в компиляторах, генераторах привязок и флагах среды выполнения (особенно для wasm-целей и rustc/wasi-целей), поскольку экосистемы принимают форму 0.3. Флаги функций Wasmtime позволяют тестировать эти интеграции уже сейчас. (docs.rs)

Непосредственные практические последствия

  • Параллельность доказательства концепции: команды, оценивающие Wasm для серверных или краевых нагрузок, должны запускать интеграционные доказательства на Wasmtime 37+, чтобы подтвердить асинхронное поведение и семантику потоков перед тем, как делать предположения о кросс-средах выполнения. (wasi.dev)
  • Мониторинг инструментальных цепочек: следите за обновлениями языковых целей (например, wasm32-* цели в Rust/инструментальных цепочках), компонентно-осведомленными бандлерами и CI-сборщиками, которые должны упаковывать компоненты, а не основные модули. (wasi.dev)
  • Тестирование совместимости: добавьте интеграционные тесты на уровне компонентов, которые утверждают семантику жизненного цикла асинхронного кода и отмены (где реализовано) — различия между представлениями 0.2 и 0.3 намеренно не тривиальны и должны быть проверены в вашем конвейере. (wasi.dev)

Итог Нативный асинхронный код WASI 0.3, появляющийся в Wasmtime 37+, является самым значительным изменением на уровне платформы для серверного WebAssembly на сегодняшний день: он превращает ранее неудобную асинхронную историю в первоклассный примитив, открывая более простой асинхронный ввод-вывод, потоковую передачу и композируемые многопоточные компоненты. Команды, работающие на основе Wasm, должны начать интеграционное тестирование уже сейчас и внимательно следить за обновлениями инструментальных цепочек и сред выполнения по мере того, как превью 0.3 развивается к официальным релизам. (wasi.dev)

Источник:

Источник

Читать дальше