Wasm up?
39 subscribers
2 photos
26 links
WebAssembly: новости, практика, разборы и многое другое.

Первое русскоязычное сообщество, посвященное WASM.
Download Telegram
Forwarded from Frontend База
🎮 Кармагеддон прямо в браузере

Думал поиграть в старую любимую игру, но возиться с эмуляторами не хочется?

Разбирается портирование Carmageddon на WebAssembly: от эмуляции графики и звука до адаптации управления. Автор показывает, как работать с DOS-защитой, декодировать файлы формата ANI и организовать игровой цикл в браузере.


Интересный пример того, как классику можно оживить с помощью современных веб-технологий 👾

🌐 Перейти на сайт

💻 Frontend База | #WebAssembly #Игры #Разбор
🔥1
Рубрика #wasm_live

Здесь собираем интересные кейсы использования WebAssembly: от Big Tech до небольших, но очень изобретательных проектов.

Сегодня у нас на обзоре SpaceWasm - реализация WASM 1.0 от NASA для запуска WASM-модулей прямо на борту космических аппаратов 🚀 😱

Да-да, все верно: WebAssembly в космосе 🔥 Причем NASA рассматривает WASM не как экспериментальную технологию, а как основу для безопасного выполнения бортовой логики.

Зачем это понадобилось? Исторически сценарии управления космическими аппаратами сильно отличались от миссии к миссии. Каждая команда писала собственные механизмы для выполнения последовательностей команд, что усложняло сопровождение и повторное использование. SpaceWasm предлагает стандартизировать этот уровень через WebAssembly.

Во главу угла ставится безопасность. Вместо того чтобы добавлять новую функциональность непосредственно в бортовую логику (а это означает долгие месяцы верификации и тестирования), можно загрузить WASM-модуль, который будет выполняться в изолированной песочнице с жесткими ограничениями по памяти, времени исполнения и доступу к системным ресурсам. Для индустрии, где цена ошибки может измеряться стоимостью космической миссии, это очень сильный аргумент.

Однако, в данном случае за надежность приходится платить производительностью. По первым бенчмаркам, опубликованным на Reddit, SpaceWasm примерно в 6 раз медленнее самых быстрых интерпретаторов. Но, как вы понимаете, приоритеты совершенно другие: предсказуемость, детерминированность и безопасность важнее максимальной скорости.

WASM улетает в космос. Поздравляю, друзья! 💃

#wasm #webassembly #nasa

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
#wasm_lab

Стек против регистров: почему Polkadot ушел с WASM?


Сегодня у нас на обзоре авторская статья ⌨️

Философия WASM про "собрал один бинарь и запускаешь где угодно в максимальной изоляции". Но, как и в любой технологии, за этим скрываются интересные компромиссы.

В статье я попробовал разобраться:

🔹 Чем стековая модель VM отличается от регистровой и где эта разница реально что-то меняет

🔹 Почему WASM не совсем честная стек-машина

🔹 Что вынужден делать single-pass компилятор WASM

🔹 Как компиляция превращается в вектор атаки

🔹 За что именно WASM платит вне браузера

И главное, где же все таки реалистичная ниша WASM вне вкладки браузера. У меня есть версия, но интересно услышать и вашу 😉

Если вам интересны такие темы — добро пожаловать к прочтению 👇

🔗 https://habr.com/ru/articles/1058984/

#wasm #webassembly

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#wasm_news

Сегодня на обзоре два свежих релиза продуктов, оказывающих заметное влияние на экосистему WASM.


⚙️ Emscripten 6.0 (на самом деле серия 6.0.x) - один из самых значимых релизов компилятора для WASM за последнее время. Помимо большого количества улучшений, он закладывает основу для следующего поколения WASM.

Главные изменения:

- wasm64 становится ближе к реальности. Вместо специфичного -sMEMORY64 теперь используется стандартный флаг -m64, как и в обычном LLVM/Clang. Это важный шаг к полноценной поддержке Memory64 Proposal.

- Динамическая линковка теперь "настоящая". Emscripten больше не использует FAKE_DYLIBS по умолчанию. -shared начинает создавать реальные side modules.

- Появилась экспериментальная интеграция с wasm-bindgen. Теперь проекты на Rust и JavaScript становятся значительно ближе друг к другу, а смешанные Rust/C++ проекты проще в сопровождении.

- Продолжается адаптация под современные возможности WASM. В последних патч-релизах появились FMA intrinsics с поддержкой Relaxed SIMD, автоматическая инициализация ES-модулей через top-level await.

---

🚀 Wasmer 7.2.0 - релиз получился не самым громким, но с несколькими важными изменениями для разработчиков рантаймов и серверных WASM-приложений.

Главные изменения:

- Появилась экспериментальная возможность прерывать выполнение WASM. Теперь рантайм может безопасно остановить длительно выполняющийся код. Это важная возможность для серверных платформ и sandbox.

- Cranelift получил поддержку Exception Handling на macOS. Поддержка теперь доступна и на Mach-O, что делает поведение рантайма более единообразным между платформами.

- Компиляция стала лучше масштабироваться по ядрам CPU. Переработана параллельная компиляция для LLVM и Cranelift, поэтому большие модули будут собираться заметно эффективнее на многоядерных машинах.

- Возвращён backend V8. После длительного перерыва движок снова поддерживается и теперь покрывается CI, что расширяет варианты исполнения WebAssembly внутри Wasmer.

- Упрощается экосистема движков. Из Wasmer удалены backend'ы WAMR и Wasmi, а также прекращена поддержка x86_64 macOS, т.к. проект окончательно ориентируется на Apple Silicon.

- Улучшения WASIX и новые команды CLI. Продолжается развитие сетевого стека WASIX, а в CLI появились команды wasmer package search и wasmer package show, упрощающие работу с пакетами.

---

Подписывайтесь, если хотите следить за новостями из волшебного мира WebAssembly 🕺

#wasm #webassembly #wasmer #wasix #cranelift #llvm #emscripten #llvm #wasm64 #simd

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#wasm_live

📰 RightNow AI предлагает превратить LLM-агентов в WASM-бинарники

Появился очень необычный проект Auto от RightNow AI. Идея звучит как "компилятор для агентского поведения". Вместо того чтобы каждый раз отправлять одинаковые запросы в LLM, Auto записывает поведение агента, находит повторяющиеся детерминированные участки и компилирует их в верифицированные WASM-бинарники. Всё, что не удалось свести к детерминированной логике, продолжает выполняться через обычную LLM. Почему это интересно?

Во-первых, WASM здесь используется не просто как переносимый формат, а как безопасный sandbox для исполнения поведения агента.

Во-вторых, авторы заявляют довольно впечатляющие результаты: после "накопления опыта" стоимость выполнения типовых задач снижается примерно с 59 до 2 микродолларов за запрос (на задачу) 🤯

Проще говоря:

- повторяющиеся фрагменты поведения больше не исполняются через frontier-модель. Вместо очередного промпта выполняется WASM-бинарник. Экономим токены

- снижается стоимость инференса

- выполнение WASM занимает микросекунды вместо сотен миллисекунд ожидания ответа модели

😮 По сути, Auto "кэширует" опыт LLM в виде WASM-бинарников. Повторные задачи больше не требуют генерации токенов, они выполняются локально, а к модели система обращается только при появлении новых сценариев

Если подобных проектов станет больше, WASM вполне может занять важное место в инфраструктуре AI-систем, а не только в браузере и серверных рантаймах.

💡 В первую очередь прошу обратить внимание тех, кто строит агентские системы или LLM-пайплайны, а также ML-инженерам.

#wasm #webassembly #ai #agents

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
#wasm_news

Пару дней назад разработчик Hexana представил небольшое, но очень полезное обновление для тех, кто работает с Component Model.

Теперь при открытии бинарника можно сразу просматривать встроенные Core модули в виде WAT, не извлекая их в отдельные файлы. Если внутри компонента несколько модулей, между ними можно переключаться через встроенный селектор.

На практике это сильно упрощает анализ компонентов. Почему?

Component Model - это не просто обычный .wasm. Это контейнер, внутри которого находятся полноценные Core модули со своей логикой. Раньше Hexana показывал структуру самого компонента, а для анализа содержимого встроенных модулей их приходилось сначала извлекать. Теперь этот шаг больше не нужен.

Подобные улучшения делают работу с Component Model гораздо приятнее 😉

Продуктивной рабочей недели!

#wasm #webassembly #hexana

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Рубрика #wasm_live

Здесь собираем интересные кейсы использования WebAssembly: от Big Tech до небольших, но очень изобретательных проектов.

🎮 The Simpsons: Hit & Run теперь работает прямо в браузере.

Разработчик портировал оригинальную PC-версию игры на WASM + WebGL. Причем это не стриминг и не эмуляция, игра по настоящему запускается в браузере как нативное приложение.

Интересные инженерные решения, которые пришлось реализовать:

🔊 Игра была написана в расчете на синхронный аудио API, тогда как Web Audio API работает совсем по-другому. Автору пришлось реализовать собственные lock-free структуры в общей памяти и построить механизм обмена данными между основным потоком и AudioWorklet без блокировок.

📦 Вместо скачивания архивов целиком (около 500 МБ) игровые данные подгружаются по мере необходимости через Cloudflare R2 и Worker, который отдает файлы чанками по 1 МБ. В результате игра стартует быстрее, а кэш браузера используется значительно эффективнее.

Кто бы мог подумать, что появится технология, которая сегодня позволит запускать полноценные AAA-игры начала 2000-х в браузере? 🤣
Рекомендую попробовать - игра действительно переносит тебя в 2000-е.

#wasm #webassembly #thesimpsons

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#wasm_news

🥳 Вышел Wasmtime 47.0

Что изменилось:

- WasmGC теперь включен по умолчанию. Это важный шаг для языков с автоматической сборкой мусора (Java, Kotlin, C#, Dart и др.) и всей экосистемы Component Model. Теперь GC не нужно отдельно включать в конфигурации движка.

- Exception Handling Proposal также включен по умолчанию. Это упрощает перенос языков с привычной моделью try/catch в WASM.

- Продолжается развитие Component Model. Появились новые API, улучшена работа с ArrayRef, оптимизированы адаптеры между компонентами и добавлены механизмы для более эффективного управления конкурентными вызовами.

- Cranelift получил очередную порцию оптимизаций. Среди них поддержка Compact Unwind на macOS, новые возможности для RISC-V и дополнительные оптимизации генерации машинного кода.

- Из Wasmtime окончательно убрали wasi-common и поддержку wasi-threads. Проект продолжает переход на современный стек WASI 0.3, поэтому старые механизмы постепенно уходят из экосистемы.

Изменения довольно фундаментальные. Благодаря включению WasmGC и Exception Handling по умолчанию WASM становится гораздо более привлекательной целевой платформой для managed-языков. Релиз настолько важен, что ему посвящена статья в блоге Bytecode Alliance.

#wasm #webassembly #wasmtime

@prowasm
🔥3
#wasm_news

Неожиданная новость - WAMR покидает Bytecode Alliance

WebAssembly Micro Runtime (WAMR) больше не будет развиваться как проект Bytecode Alliance. Команды объявили, что дальнейшая разработка продолжится уже как независимый open-source проект.

Это не закрытие проекта и не прекращение разработки. WAMR продолжит развиваться, просто с собственной моделью управления.

В Bytecode Alliance объясняют решение тем, что со временем у организации и WAMR сформировались разные приоритеты. Разделение должно позволить каждой стороне быстрее двигаться в своем направлении.

При этом сам Bytecode Alliance остается сосредоточен на развитии Wasmtime, WASI, Component Model и других фундаментальных технологий экосистемы.

WAMR уже давно занял свою нишу как один из самых популярных рантаймов для Embedded, IoT и Edge-устройств. Теперь будет интересно посмотреть, изменится ли темп развития проекта и появятся ли новые стратегические партнерства.

#wasm #webassembly #wasmtime #wamr

@prowasm
🔥3
#wasm_lab

Сегодня у нас на обзоре статья "Dynamic linking in WebAssembly with WASIX" от команды Wasmer.

Главная идея очень простая - Python в WASIX наконец-то научился работать не только с "чистыми" Python-пакетами, но и с библиотеками, которые содержат нативный код. Это стало возможным благодаря поддержке Dynamic Linking.

Но реализовать это в WASM оказалось совсем не так просто.

В статье авторы показывают, какие проблемы пришлось решить:

🔹 Как заставить несколько WASM-модулей безопасно разделять одну область памяти.

🔹 Что такое PIC (Position Independent Code) - код, который можно загрузить в любое место памяти без перекомпиляции, и почему без него Dynamic Linking невозможен.

🔹 Как работают dlopen() (загрузка внешней библиотеки во время работы программы) и dlsym() (поиск нужной функции внутри этой библиотеки), если под капотом у вас WASM а не обычная ОС.

🔹 Почему ради всего этого команде даже пришлось дорабатывать LLVM и собственный рантайм.

Отличная статья, которая показывает, сколько фундаментальных ограничений WASM приходится обходить, чтобы привычные механизмы из мира Linux начали работать и здесь.

#wasm #webassembly #python #wasix

@prowasm
👍4
#wasm_lab

Недавно публиковал статью WebAssembly (WASM) — не серебряная пуля, и в комментариях мне ответил один из пользователей (а по совместительству автор на Хабр): "Мы проверяли на собственном большом проекте где важна производительность и получили аналогичные результаты. Кому интересно можно почитать наше расследование".

Конечно же нам интересно 🥰

Статья называется "Блеск и нищета WebAssembly" и опубликована она в сентябре 2024 года. Она посвящена R&D процесса в экспериментах с WASM, а также, по моему мнению, является хорошей входной точкой для изучения новой технологии (с максимальной актуальностью на момент написания).

Автор прошел серьезный путь:

- выбрал WAMR как runtime
- портировал C++-библиотеки в WASM
- столкнулся с ограничениями wasm32, ABI, отладкой и SIMD
- провел серьезную работу по профилированию и оптимизации

Главный вывод статьи тогда: технология очень перспективная, но еще сырая для крупных production-проектов.

Очень любопытно смотреть уже из 2026 года. Многие проблемы, о которых писал автор, действительно начали решаться. Появился WASM 3.0, активно развивается Component Model, появился WASI 0.3 с нативной async-моделью. Исключения, GC, SIMD и многие proposals уже перестали быть экзотикой и получили поддержку в современных рантаймах.

Но некоторые выводы статьи по-прежнему актуальны.

Если вы переносите большой C/C++-проект в WASM, архитектурные компромиссы никуда не делись. Стоимость копирования данных между host и sandbox, особенности ABI, выбор runtime и вопросы производительности по-прежнему оказывают куда большее влияние, чем сама спецификация.

Отдельно интересно, что автор называл wasm64 слишком экспериментальным. В 2026 ситуация заметно лучше: memory64 уже вошла в экосистему, однако полноценная поддержка во всех движках и браузерах все еще на подходе.

Статья отлично показывает, как выглядело состояние WASM в 2024 году. И именно поэтому ее полезно читать сегодня. Можно оценить, какие прогнозы оказались верными, какие проблемы уже решены, а какие до сих пор сопровождают любой серьезный проект.

Приятного чтения! 😭


#wasm #webassembly

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
4
#wasm_news

📰 Несколько дней назад был представлен wazy - новый рантайм для Go, который выглядит очень амбициозно.

Главная идея проекта - чистый Go Runtime без CGO и производительность на уровне Wasmtime. Звучит смело, однако автор подкрепляет заявления подробными бенчмарками и открыто сравнивает wazy с wazero (в сравнениях выигрывает первый, ествественно).

И ставка сделана не только на скорость 😊

wazy уже поддерживает Component Model и даже WASI 0.3 Async ABI, тогда как большинство Go-рантаймов пока ограничиваются классическими WASM-модулями. Это означает, что гоферы уже сегодня могут экспериментировать с современным стеком WASM ❤️‍🔥

Конечно, к заявлениям о производительности всегда стоит относиться осторожно, независимых сравнений пока нет. Но сам факт появления еще одного рантайма с фокусом на Component Model - хорошая новость для всей экосистемы (наконец то начинаем догонять Rust Toolchain по возможностям)

#wasm #webassembly #wazero #wazy #golang

@prowasm
4
Рубрика #wasm_live

Здесь собираем интересные кейсы использования WebAssembly: от Big Tech до небольших, но очень изобретательных проектов.

🤖 LLM прямо в браузере. Без GPU. Без WebGPU. Без сервера. Только WebAssembly.

Разработчик запустил модель LiquidAI LFM 2.5-350M полностью в браузере, используя чистый WASM. Никакого бэкенда и сетевых запросов во время инференса, после загрузки модели все работает локально на CPU.

Что особенно интересно с технической точки зрения?

Во-первых, автор не использует готовые библиотеки линейной алгебры. Практически вся математика написана вручную: SIMD-ядра для GEMM/GEMV, GQA Attention, RoPE и других операций. Это очень хороший пример использования WASM SIMD.

Во-вторых, модель квантована до 4 бит (Q4_0), благодаря чему удалось уместить веса примерно в 285 МБ. После первой загрузки инференс полностью выполняется локально, что одновременно запускает приватность в космос и устраняет зависимость от сервера.

Конечно, это не конкурент большим облачным моделям. Но тем не менее, шикарная демонстрация возможностей WASM. 👍

Исходный код открыт на GitHub.

Проект в первую очередь интересен тем, кто занимается локальным AI, Edge AI и браузерными ML.

#wasm #webassembly

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
4
#wasm_lab

Why Do We Need the Relooper Algorithm, Again?

На первый взгляд кажется, что отсутствие goto в WASM это просто эталон хорошего стиля программирования. Вместо него есть block, loop, if, br и другие структурированные конструкции.

Но есть проблема, и она совсем не связана со стилем.

Практически любой современный компилятор (LLVM, GCC и другие) внутри работает не со структурированными if и while, а с Control Flow Graph (CFG) - графом потока управления. Именно в таком виде удобнее всего оптимизировать код.

Но когда компилятор собирает WASM, ему приходится превратить произвольный CFG в ограниченный набор конструкций WASM. Если граф оказывается слишком сложным, в дело вступает Relooper.

По сути, Relooper пытается "натянуть" сложный граф на loop + block + if. Иногда это получается красиво. Иногда приходится генерировать конструкции, напоминающие цикл со switch, которые затем уже движок снова пытается восстановить обратно в CFG.

Получается довольно странная цепочка:

CFG - WASM - снова CFG - машинный код.

Автор статьи называет это "lossy conversion". Мы теряем информацию о структуре управления, а затем тратим ресурсы, чтобы её восстановить.

Именно поэтому Relooper долгое время считался одной из самых болезненных частей компиляции в WASM. Не из-за производительности самого алгоритма, а потому что он компенсирует ограничения формата.

💬 Интересно, что предложения, которые автор называл необходимыми (multiple returns, block arguments и другие), позже действительно появились в экосистеме. Proposal Multi-Value принят и поддерживается всеми основными движками.

Однако идея произвольного CFG в самом формате так и не была принята, поэтому алгоритм Relooper остается актуальным и сегодня.

#wasm #webassembly

@prowasm
🔥1
#wasm_news

📰 Группой инженеров в открытом письме представлен WASP - новый фреймворк для stateful serverless-приложений.

На мой взгляд, работа команды бьет точно в больную точку современного WASM-serverless.

В чём проблема? WASM уверенно чувствует себя как легковесная альтернатива контейнерам для Function-as-a-Service. Но существующие платформы намертво привязаны к конкретному движку и заточены в основном под stateless-нагрузки (например, wasmCloud). А edge - это зоопарк железа и сценариев, где stateful-приложения тоже нужны.

Что предлагает WASP? Отказ от монолита в пользу строго независимых, подключаемых компонентов. Можно менять рантайм и datastore под доступные ресурсы и требования приложения без изменения кода самого приложения. Сверху навесили конфигурируемые политики жизненного цикла и кэширования.

И самое интересное - цифры. WASP вносит пренебрежимо малый оверхед, а за счёт замены рантаймов выдаtт радикально разные профили по памяти и latency. То есть реально подстраивается под разные ограничения edge-cloud платформ.

Посмотрим, дойдёт ли WASP до продакшена. Но сама идея pluggable-архитектуры без vendor lock выглядит невероятно.

Всю спецификацию можно изучить здесь.

#wasm #webassembly #wasp

@prowasm
🔥2👍1
#wasm_live

Здесь собираем интересные кейсы использования WebAssembly: от Big Tech до небольших, но очень изобретательных проектов.

🐰 На обзоре у нас Burrow - полноценная IDE прямо во вкладке браузера.

Внутри страницы работают:

- настоящий Bun (с его оригинальным транспайлером, собранным в WebAssembly)
- интерактивный shell
- git
- локальный сервер с live preview
- AI-агент, который запускается прямо на вашем устройстве через WebGPU и умеет читать, редактировать код и выполнять команды.

Но самое интересное, что ничего не уходит на сервер. Нет удаленной песочницы, нет бэкенда. Файловая система, процессы, git и AI работают локально в браузере.

🔥 Особенно впечатляет архитектура! Виртуальная файловая система, shell и git, Web Workers вместо процессов, Service Worker, который превращает Bun.serve() в настоящий HTTP-сервер внутри браузера, локальная LLM. Все это вместе создает ощущение полноценного рабочего места, хотя открыта всего одна вкладка браузера.

#wasm #webassembly #borrow #bun

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#wasm_news

🔥 Сегодня у нас на обзоре необычный тренд на стыке технологий - целый стек новых экспериментальных языков программирования, созданных специально для написания кода AI-агентами (LLM), а не людьми, где WASM стал главным фундаментом.

Все они собраны в каталоге на agentlanguages.dev.

Если вы думали, что WASM нужен только для переноса тяжелого кода в браузер, то эта экосистема доказывает обратное. Для AI-агентов WASM оказался идеальной, изолированной (sandboxed) и кроссплатформенной средой исполнения.

Почему это важно для нашей индустрии? Во-первых такие языки как Lumen, Intent, Vera и Zero компилируются напрямую в WASM, минуя тяжеловесный LLVM. Во-вторых, они меняют саму модель взаимодействия с компилятором. Например, Zero вместо привычного текстового лога ошибок отдает агенту структурированный JSON-план по исправлению кода, а Vera проектирует ошибки компиляции как явные подсказки для LLM.

Но самое любопытное это упор на верификацию. AI-агент пишет код, компилятор математически доказывает его корректность (инварианты, пред- и пост-условия), а на выходе получается гарантированно безопасный WASM-модуль. Это решает главную проблему AI - галлюцинации и хрупкость логики.

Возможно связка агентов и WASM станет новым стандартом индустрии.

😱 Если вы строите автономные системы, которым нужно давать право писать и исполнять код "на лету", этот стек показывает, как уйти от небезопасных Python-песочниц к математически верифицированному коду (магия агентов сливается с магией компиляторов). Также это отличный маркер, показывающий, куда движутся компиляторы и дизайн языков программирования в эпоху вайбкодинга

#wasm #webassembly #ai

@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
😱2
#wasm_live

Здесь собираем интересные кейсы использования WebAssembly: от Big Tech до небольших, но очень изобретательных проектов.

🪄 Mermaid to Unicode box art via WebAssembly

Simon Willison взял Rust-модуль из открытого Grok CLI, который умеет превращать Mermaid-диаграммы в Unicode-графику для терминала, скомпилировал его в WASM и получил полностью браузерный инструмент.

В результате достаточно вставить Mermaid-код, и браузер мгновенно отрисует диаграмму символами Unicode. Выполняется исходный Rust-код, только внутри WASM.

Для документации, логов, README-файлов и любых текстовых интерфейсов это очень практичная вещь (я уже пользуюсь). Диаграммы можно отображать без SVG, PNG и внешних зависимостей. Можно использовать в терминале при промптинге и т.д.

💡 Будет интересно, если разрабатываете инструменты для документации или, например, Browser DevTools.

#wasm #webassembly #mermaid

@prowasm
👍2
#wasm_lab

WASM сегодня кажется чем-то уже устоявшимся: стандарт, десятки рантаймов, WASI, Component Model, поддержка GC. Но если копнуть глубже, окажется, что внутри до сих пор живут решения, принятые еще на старте проекта.

В 2019 году разработчик Mozilla и автор JIT-компилятора Lightbeam предложил любопытную идею - Microwasm. Это внутреннее представление WASM, которое должно было упростить жизнь рантаймам и компиляторам.

Идея была довольно радикальной:

- отказаться от локальных переменных как отдельной сущности и работать только со стеком
- заменить структурированные block/loop/if на обычный CFG (Control Flow Graph)
- сделать потоковую трансляцию Wasm - Microwasm - native без потери производительности;
- передавать компилятору и рантайму больше информации для оптимизации.

По сути, Microwasm пытался ответить на вопрос: "можно ли сохранить совместимость, но сделать внутреннюю модель выполнения намного проще?"

И это интересно даже сегодня.

Если посмотреть на современные рантаймы (Wasmtime, WasmEdge, WAMR, V8) - почти все они уже используют собственные IR/MIR между WASM и машинным кодом. В каком-то смысле идеи Microwasm победили, просто не как отдельный стандарт, а как внутренняя архитектура рантаймов.

Что изменилось с 2019 по 2026 год?

Тогда обсуждение крутилось вокруг структуры байткода и кодогенерации. А сегодня главные темы уже другие: WasmGC, Component Model и WASI. Экосистема ушла далеко за пределы браузера (плагины, edge, AI-sandboxing, server side).

При этом базовый формат WASM остался довольно консервативным. V8 и другие движки по-прежнему сильно влияют на эволюцию стандарта, поэтому многие радикальные идеи так и остаются экспериментами.

P.S. Если вы работаете с компиляторами, LLVM, JIT/AOT-компиляцией или проектируете собственные DSL и sandbox-системы, то это отличный пример того, почему внутреннее представление кода иногда важнее самого стандарта.

#wasm #webassembly #microwasm

@prowasm
🔥3
#wasm_news

Epico: WASM компоненты для serverless stream processing.

Классический FaaS плохо подходит для непрерывных потоков событий. Функции stateless, постоянно запускаются заново, а центральный оркестратор оказывается узким местом.

Авторы Epico предлагают другой подход. Вместо короткоживущих функций pipeline stage запускаются как long-lived WASM компоненты.

Каждый этап может независимо масштабироваться от нуля в зависимости от глубины очереди. При этом данные передаются напрямую между stages через broker-free ZeroMQ, без центрального оркестратора в data path.

Отдельно интересен паттерн credit-based sliding window. Он позволяет отправлять несколько событий без ожидания ответа на каждое из них и тем самым уменьшает стоимость IPC (взаимодействие между процессами\сервисами). В экспериментах это дало до 4.3x прироста throughput на одном воркере.

🧨 AOT-компиляция WASM позволила сократить cold start с десятков/сотен миллисекунд до суб-миллисекунд.

WASM здесь используется не просто как лёгкий sandbox для serverless-функций, а как основа для долгоживущих, независимо масштабируемых компонентов stream-processing pipeline.

💡 В первую очередь работа интересна разработчикам serverless-платформ, stream processing и HPC. Особенно тем, кто работает с Kafka/Flink/Spark-подобными pipeline и хочет уменьшить orchestration overhead, cold starts и стоимость изоляции.

#wasm #webassembly #epico

@prowasm