Forwarded from Frontend База
🎮 Кармагеддон прямо в браузере
Думал поиграть в старую любимую игру, но возиться с эмуляторами не хочется?
Интересный пример того, как классику можно оживить с помощью современных веб-технологий 👾
🌐 Перейти на сайт
💻 Frontend База | #WebAssembly #Игры #Разбор
Думал поиграть в старую любимую игру, но возиться с эмуляторами не хочется?
Разбирается портирование 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
Здесь собираем интересные кейсы использования 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
GitHub
GitHub - nasa/spacewasm: A flight-compliant WebAssembly interpreter.
A flight-compliant WebAssembly interpreter. Contribute to nasa/spacewasm development by creating an account on GitHub.
🔥3
#wasm_lab
Стек против регистров: почемуPolkadot ушел с WASM?
Сегодня у нас на обзоре авторская статья⌨️
Философия WASM про "собрал один бинарь и запускаешь где угодно в максимальной изоляции". Но, как и в любой технологии, за этим скрываются интересные компромиссы.
В статье я попробовал разобраться:
🔹 Чем стековая модель VM отличается от регистровой и где эта разница реально что-то меняет
🔹 Почему WASM не совсем честная стек-машина
🔹 Что вынужден делать single-pass компилятор WASM
🔹 Как компиляция превращается в вектор атаки
🔹 За что именно WASM платит вне браузера
И главное, где же все таки реалистичная ниша WASM вне вкладки браузера. У меня есть версия, но интересно услышать и вашу 😉
Если вам интересны такие темы — добро пожаловать к прочтению 👇
🔗 https://habr.com/ru/articles/1058984/
#wasm #webassembly
@prowasm
Стек против регистров: почему
Сегодня у нас на обзоре авторская статья
Философия 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 становится ближе к реальности. Вместо специфичного
- Динамическая линковка теперь "настоящая". Emscripten больше не использует FAKE_DYLIBS по умолчанию.
- Появилась экспериментальная интеграция с wasm-bindgen. Теперь проекты на Rust и JavaScript становятся значительно ближе друг к другу, а смешанные Rust/C++ проекты проще в сопровождении.
- Продолжается адаптация под современные возможности WASM. В последних патч-релизах появились FMA intrinsics с поддержкой Relaxed SIMD, автоматическая инициализация ES-модулей через top-level
---
🚀 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 появились команды
---
Подписывайтесь, если хотите следить за новостями из волшебного мира WebAssembly🕺
#wasm #webassembly #wasmer #wasix #cranelift #llvm #emscripten #llvm #wasm64 #simd
@prowasm
Сегодня на обзоре два свежих релиза продуктов, оказывающих заметное влияние на экосистему 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
GitHub
Release 6.0.3 · emscripten-core/emscripten
What's Changed
Fixed UTF8ToString with GROWABLE_ARRAYBUFFERS set. String decoding now
copies the data when the heap buffer is resizable, just like it does in
the shared memory case. (#27242)
A...
Fixed UTF8ToString with GROWABLE_ARRAYBUFFERS set. String decoding now
copies the data when the heap buffer is resizable, just like it does in
the shared memory case. (#27242)
A...
👍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
📰 RightNow AI предлагает превратить LLM-агентов в WASM-бинарники
Появился очень необычный проект Auto от RightNow AI. Идея звучит как "компилятор для агентского поведения". Вместо того чтобы каждый раз отправлять одинаковые запросы в LLM, Auto записывает поведение агента, находит повторяющиеся детерминированные участки и компилирует их в верифицированные WASM-бинарники. Всё, что не удалось свести к детерминированной логике, продолжает выполняться через обычную LLM. Почему это интересно?
Во-первых, WASM здесь используется не просто как переносимый формат, а как безопасный sandbox для исполнения поведения агента.
Во-вторых, авторы заявляют довольно впечатляющие результаты: после "накопления опыта" стоимость выполнения типовых задач снижается примерно с 59 до 2 микродолларов за запрос (на задачу) 🤯
Проще говоря:
- повторяющиеся фрагменты поведения больше не исполняются через frontier-модель. Вместо очередного промпта выполняется WASM-бинарник. Экономим токены
- снижается стоимость инференса
- выполнение WASM занимает микросекунды вместо сотен миллисекунд ожидания ответа модели
Если подобных проектов станет больше, WASM вполне может занять важное место в инфраструктуре AI-систем, а не только в браузере и серверных рантаймах.
💡 В первую очередь прошу обратить внимание тех, кто строит агентские системы или LLM-пайплайны, а также ML-инженерам.
#wasm #webassembly #ai #agents
@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - RightNow-AI/auto: the agi compiler: records llm agent behavior, proves what repeats, and compiles it into verified, sandboxed…
the agi compiler: records llm agent behavior, proves what repeats, and compiles it into verified, sandboxed wasm binaries that run for microdollars. nothing figured out twice, paper: https://arxiv....
🔥3👍2
#wasm_news
Пару дней назад разработчик Hexana представил небольшое, но очень полезное обновление для тех, кто работает с Component Model.
Теперь при открытии бинарника можно сразу просматривать встроенные Core модули в виде WAT, не извлекая их в отдельные файлы. Если внутри компонента несколько модулей, между ними можно переключаться через встроенный селектор.
На практике это сильно упрощает анализ компонентов. Почему?
Component Model - это не просто обычный
Подобные улучшения делают работу с Component Model гораздо приятнее😉
Продуктивной рабочей недели!
#wasm #webassembly #hexana
@prowasm
Пару дней назад разработчик 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
Reddit
From the WebAssembly community on Reddit: Component Model binaries embed whole core modules — we now render each one as WAT in…
Posted by minamoto108 - 2 votes and 0 comments
👍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
Здесь собираем интересные кейсы использования 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 также включен по умолчанию. Это упрощает перенос языков с привычной моделью
- Продолжается развитие Component Model. Появились новые API, улучшена работа с
- 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
🥳 Вышел 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
GitHub
Release v47.0.0: Release Wasmtime 47.0.0 (#13898) · bytecodealliance/wasmtime
47.0.0
Released 2026-07-20.
Added
Wasmtime now has the WebAssembly GC proposal enabled by default.
#13594
Wasmtime now has the WebAssembly exception-handling proposal enabled by
default.
#13603...
Released 2026-07-20.
Added
Wasmtime now has the WebAssembly GC proposal enabled by default.
#13594
Wasmtime now has the WebAssembly exception-handling proposal enabled by
default.
#13603...
🔥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
Неожиданная новость - 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
Bytecode Alliance
An Update on WAMR and the Bytecode Alliance
We’re writing to share some news about the future of the Bytecode Alliance and the WebAssembly Micro Runtime (WAMR).
🔥3
#wasm_lab
Сегодня у нас на обзоре статья "Dynamic linking in WebAssembly with WASIX" от команды Wasmer.
Главная идея очень простая - Python в WASIX наконец-то научился работать не только с "чистыми" Python-пакетами, но и с библиотеками, которые содержат нативный код. Это стало возможным благодаря поддержке Dynamic Linking.
Но реализовать это в WASM оказалось совсем не так просто.
В статье авторы показывают, какие проблемы пришлось решить:
🔹 Как заставить несколько WASM-модулей безопасно разделять одну область памяти.
🔹 Что такое PIC (Position Independent Code) - код, который можно загрузить в любое место памяти без перекомпиляции, и почему без него Dynamic Linking невозможен.
🔹 Как работают
🔹 Почему ради всего этого команде даже пришлось дорабатывать LLVM и собственный рантайм.
Отличная статья, которая показывает, сколько фундаментальных ограничений WASM приходится обходить, чтобы привычные механизмы из мира Linux начали работать и здесь.
#wasm #webassembly #python #wasix
@prowasm
Сегодня у нас на обзоре статья "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
wasmer.io
Dynamic linking in WebAssembly with WASIX · Blog · Wasmer
At Wasmer, we've had a [WASIX](<https://wasix.org/>) build of Python for a long time now. It works too; you can run scripts, get a REPL, and even pull i...
👍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
Недавно публиковал статью 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
Хабр
WebAssembly (WASM) — не серебряная пуля
WebAssembly появился для браузерных задач как способ исполнять тяжелый код быстрее, чем это делает JavaScript. Но за последние годы он начал выходить далеко (иногда буквально...
❤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
📰 Несколько дней назад был представлен 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
GitHub
GitHub - samyfodil/wazy: Fastest WebAssembly runtime for Go. Supports Component Model & Async. Zero dependencies, no CGO, pure…
Fastest WebAssembly runtime for Go. Supports Component Model & Async. Zero dependencies, no CGO, pure Go. - samyfodil/wazy
❤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
Здесь собираем интересные кейсы использования 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
huggingface.co
celsowm/lfm2.5-350m-wasm-q4_0 · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
❤4
#wasm_lab
Why Do We Need the Relooper Algorithm, Again?
На первый взгляд кажется, что отсутствие
Но есть проблема, и она совсем не связана со стилем.
Практически любой современный компилятор (LLVM, GCC и другие) внутри работает не со структурированными
Но когда компилятор собирает WASM, ему приходится превратить произвольный CFG в ограниченный набор конструкций WASM. Если граф оказывается слишком сложным, в дело вступает Relooper.
По сути, Relooper пытается "натянуть" сложный граф на
Получается довольно странная цепочка:
CFG - WASM - снова CFG - машинный код.
Автор статьи называет это "lossy conversion". Мы теряем информацию о структуре управления, а затем тратим ресурсы, чтобы её восстановить.
Именно поэтому Relooper долгое время считался одной из самых болезненных частей компиляции в WASM. Не из-за производительности самого алгоритма, а потому что он компенсирует ограничения формата.
💬 Интересно, что предложения, которые автор называл необходимыми (multiple returns, block arguments и другие), позже действительно появились в экосистеме. Proposal Multi-Value принят и поддерживается всеми основными движками.
Однако идея произвольного CFG в самом формате так и не была принята, поэтому алгоритм Relooper остается актуальным и сегодня.
#wasm #webassembly
@prowasm
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
troubles.md
WebAssembly Troubles part 2: Why Do We Need the Relooper Algorithm, Again?
🔥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
📰 Группой инженеров в открытом письме представлен 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
arXiv.org
WASP: A Configurable Framework for Portable Stateful Serverless...
WebAssembly (WASM) is emerging as a lightweight alternative to containers for Function-as-a-Service (FaaS) across the edge-cloud continuum. However, existing WASM-based serverless platforms are...
🔥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, который превращает
#wasm #webassembly #borrow #bun
@prowasm
Здесь собираем интересные кейсы использования WebAssembly: от Big Tech до небольших, но очень изобретательных проектов.
Внутри страницы работают:
- настоящий 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
GitHub
GitHub - Dhravya/burrow: a whole dev machine in a browser tab - bun.wasm, shell, git, and local AI. phones home to nobody.
a whole dev machine in a browser tab - bun.wasm, shell, git, and local AI. phones home to nobody. - Dhravya/burrow
👍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
🔥 Сегодня у нас на обзоре необычный тренд на стыке технологий - целый стек новых экспериментальных языков программирования, созданных специально для написания кода AI-агентами (LLM), а не людьми, где WASM стал главным фундаментом.
Все они собраны в каталоге на agentlanguages.dev.
Если вы думали, что WASM нужен только для переноса тяжелого кода в браузер, то эта экосистема доказывает обратное. Для AI-агентов WASM оказался идеальной, изолированной (sandboxed) и кроссплатформенной средой исполнения.
Почему это важно для нашей индустрии? Во-первых такие языки как Lumen, Intent, Vera и Zero компилируются напрямую в WASM, минуя тяжеловесный LLVM. Во-вторых, они меняют саму модель взаимодействия с компилятором. Например, Zero вместо привычного текстового лога ошибок отдает агенту структурированный JSON-план по исправлению кода, а Vera проектирует ошибки компиляции как явные подсказки для LLM.
Но самое любопытное это упор на верификацию. AI-агент пишет код, компилятор математически доказывает его корректность (инварианты, пред- и пост-условия), а на выходе получается гарантированно безопасный WASM-модуль. Это решает главную проблему AI - галлюцинации и хрупкость логики.
☠ Возможно связка агентов и WASM станет новым стандартом индустрии.
#wasm #webassembly #ai
@prowasm
Please open Telegram to view this post
VIEW IN TELEGRAM
agentlanguages.dev
Lumen — agentlanguages.dev
Markdown-native source (.lm.md). Algebraic effects, grants for tool and model calls, @deterministic compile-time enforcement, and pipeline / machine / memory process kinds. A language for humans authoring agent workflows.
😱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
Здесь собираем интересные кейсы использования 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
Simon Willison’s Weblog
About me
Here's my most recent conference bio:
👍2
#wasm_lab
WASM сегодня кажется чем-то уже устоявшимся: стандарт, десятки рантаймов, WASI, Component Model, поддержка GC. Но если копнуть глубже, окажется, что внутри до сих пор живут решения, принятые еще на старте проекта.
В 2019 году разработчик Mozilla и автор JIT-компилятора Lightbeam предложил любопытную идею - Microwasm. Это внутреннее представление WASM, которое должно было упростить жизнь рантаймам и компиляторам.
Идея была довольно радикальной:
- отказаться от локальных переменных как отдельной сущности и работать только со стеком
- заменить структурированные
- сделать потоковую трансляцию 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
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
troubles.md
WebAssembly Troubles part 4: Microwasm
🔥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
〰 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
arXiv.org
Epico: Long-Lived WebAssembly Components for High-Performance...
While serverless computing is popular, its dominant Function-as-a-Service (FaaS) model is ill-suited for stream processing because its stateless, centrally orchestrated functions cannot...