WebAssembly во Frontende
С каждым днем появляется какая-то новая технология, в чем-то лучше других, и так же быстро, как она появилась, так же и исчезает. Но есть действительно годные штуки, которые хочется как минимум попробовать. Одна из таких - это WebAssembly.
WebAssembly (Wasm) — это новый открытый формат байт-кода, исполняемого современными браузерами. Сейчас он поддерживается во всех браузерах.
Wasm позволяет переносить код, написанный на языках C, C++, C#, Rust и других для использования в браузерной среде с производительностью, близкой к нативной. Важно понимать, максимальная производительность WebAssembly равна максимальной производительности JavaScript, но написать оптимизированный по памяти код иногда проще на WebAssembly.
Язык WebAssembly предназначен для дополнения и работы вместе с JavaScript, что позволяет веб-разработчикам использовать преимущества обоих языков:
-
JavaScript — это язык высокого уровня, гибкий и достаточно выразительный для написания веб-приложений. У него много преимуществ: он динамически типизирован, не требует компиляции и обладает огромной экосистемой, которая предоставляет мощные фреймворки, библиотеки и другие инструменты.
-
WebAssembly — это низкоуровневый язык, похожий на ассемблер, с компактным двоичным форматом, который работает с почти естественной производительностью и предоставляет низкоуровневые модели памяти для таких языков как C++ и Rust, чтобы компилировать их для работы в интернете. Обратите внимание, что у WebAssembly на будущее есть высокоуровневая цель по поддержке языков со сборщиками мусора в модели памяти.
Сейчас во всех браузерах уже есть поддержка WebAssembly: его код исполняется в специальной виртуальной машине. Выглядит это так. Код на низкоуровневом языке компилируется с помощью мощных компиляторов (например, LLVM ) или набора инструментов таких как Emscripten и превращается в бинарный формат.
Кажется, что всё довольно просто. Благодаря всей этой магии открылась возможность запускать десктопные приложения в браузере или использовать код на низкоуровневых языках.
· 24.07.2025
Можешь написать пример, как взаимодействовать с этим кодом из js? Скажем, написал я это на Go, как мне принять там данные, куда их отдать? Нужно делать, условно, библиотеку или программу с main()? И что в него выносить? В типичном интернет-магазине даже нкт ничего, чтобы стоило так заморачиваться. Может, в графическом редакторе можно вынести математику в wasm, или в чём-то таком.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 24.07.2025
Пишется функция на go или другом языке в отдельном файле, потом компилим а wasm байт код и запускаем в html через const go = new Go(); WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => { go.run(result.instance);});
Есть статья на этот счет, если захочется углубиться
https://habr.com/ru/companies/otus/articles/666004/
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён