WASI 0.3 приносит нативный async — и в единственном рантайме, без браузера, снова ломает старый WASI

После двух почти безмолвных лет WASI 0.3 вышел 11 июня 2026 года с полноценным async, встроенным в Component Model. Теперь хост владеет одним общим циклом событий. Гендиректор Wasmer пришёл отметить, что он работает ровно в одном серверном рантайме и по-прежнему ломает оригинальный WASI.

Вкратце

WASI 0.3, ратифицированный 11 июня, заменяет старые примитивы опроса полноценными stream<T>, future<T> и async-функциями, переходя на планирование по завершению, как в io_uring. Один цикл событий, управляемый хостом, делят все компоненты.

Отрезвляющая реплика гендиректора Wasmer в треде: он работает в одном серверном рантайме, браузеры не поддерживают, и он снова ломает совместимость с оригинальным WASI. А спустя десятилетие скептики всё ещё спрашивают, случился ли у WebAssembly прорыв.

WASI наконец получает async — отдав цикл событий хосту

Анонс Bytecode Alliance фиксирует ратификацию WASI 0.3 11 июня 2026 года. Главное изменение — нативная асинхронность, вложенная прямо в WebAssembly Component Model. Если WASI 0.2 заставлял каждый компонент жонглировать собственным циклом событий, то теперь «именно хост отвечает за управление единственным циклом событий, который делят все компоненты».

Конкретно: старые примитивы на основе ресурсов заменены полноценными конструкциями:

WASI 0.2 WASI 0.3
resource pollable future<T>
resource input-stream stream<u8>
start-foo / finish-foo foo: async func(...)

Планирование переходит от опроса по готовности к модели по завершению, той же формы, что и Linux io_uring. Rust использует async fn; Go паркует горутины на границах ABI. Автор подтвердил трактовку в треде, отметив, что именно в посте-анонсе, а не только в release notes, лежат примеры и дифф 0.2 против 0.3.

Отрезвляющая реплика гендиректора Wasmer

Самый отрезвляющий комментарий пришёл от вендора, у которого в игре свои ставки:

«WASI 0.3.0 — это WASI-предложение на основе Component Model… сегодня запускается лишь в одном серверном Wasm-рантайме (браузеры нативно его не поддерживают). К сожалению, оно по-прежнему ломает совместимость с оригинальным WASI-предложением… Если ваша цель — скомпилировать существующие, немодифицированные программы и библиотеки на C/C++ в WebAssembly, WASIX сегодня может оказаться более практичным вариантом». — основатель и гендиректор Wasmer

Этот разрыв совместимости — постоянная больная точка. Один читатель доказывал, что проект отошёл от своей изначальной идеи:

«WASI должен быть простым и стабильным. Поначалу он строился вокруг простой Unix-подобной модели API и был близок к идеалу. Теперь есть навязчивая компонентная модель — лишнее переусложнение… Не понимаю, почему комитет WebAssembly считает, что впихивание CORBA-подобного монстра — вообще приемлемая идея». — разработчик в треде

Вопрос десятилетней давности, всё ещё без ответа

Саймон Уиллисон отметил, что файлы интерфейсов .wit можно смотреть прямо на GitHub, не скачивая тарбол релиза. Но тред всё возвращался к вопросу принятия.

«Совершит ли WebAssembly когда-нибудь настоящий прорыв? Прошло почти 10 лет с его появления… WebAssembly до сих пор не там; им пользуются лишь очень немногие люди или компании». — давний комментатор о прорыве, который не случился

Аргумент Component Model реален: «прямая композиция» сервисов, снижающая задержку между компонентами с миллисекунд к наносекундам. Подвох столь же реален: сегодня он работает в Wasmtime, а не в браузерах, и каждая ревизия WASI снова просит экосистему мигрировать. Async — та возможность, которую боевые пользователи WASM хотели годами. Смогут ли они ею воспользоваться, зависит от инструментов: таргеты jco, Rust, Go, Python и C# всё ещё раскатывают поддержку 0.3.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 12 из 20 Читать дальше
🌍Other

Земля, возможно, сама произвела свои океаны, а не импортировала их с комет

Десятилетиями ответ звучал так: «воду принесли кометы и астероиды». Новая идея: молодая Земля, покрытая магмой, сделала её сама — водород ранней атмосферы реагировал с кислородом в расплавленной породе под чудовищным давлением.

★ 126 · 💬 63 · quantamagazine.org · 4 мин