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.
Земля, возможно, сама произвела свои океаны, а не импортировала их с комет
Десятилетиями ответ звучал так: «воду принесли кометы и астероиды». Новая идея: молодая Земля, покрытая магмой, сделала её сама — водород ранней атмосферы реагировал с кислородом в расплавленной породе под чудовищным давлением.