Что такое WebAssembly

Ответ

WebAssembly (Wasm) — это бинарный формат кода, выполняемый в браузере с почти нативной скоростью. Позволяет запускать код, написанный на C, C++, Rust и других языках, в веб-среде.

Особенности:

  • Работает в песочнице браузера, как JavaScript, но быстрее
  • Поддерживается всеми современными браузерами
  • Может взаимодействовать с JS через API

Пример использования (C → Wasm):

// hello.c
int add(int a, int b) {
    return a + b;
}

Компиляция:

emcc hello.c -o hello.wasm -s WASM=1

Вызов из JS:

WebAssembly.instantiateStreaming(fetch('hello.wasm'))
  .then(obj => {
    console.log(obj.instance.exports.add(2, 3)); // 5
  });

Используется для сложных вычислений, игр, CAD-приложений и т.д.

Ответ 18+ 🔞

Да ты послушай, что эти умники придумали, блядь! WebAssembly, или попросту Wasm — это типа бинарный формат, который в браузере гоняет код с такой скоростью, что мама не горюй, почти как нативное железо! Представь: пишешь ты на C, C++, Rust, да хоть на чёрте лысом, а эта штука превращает это всё в такую дичь, которая в вебе летает.

Чем оно, сука, примечательно:

  • В браузере в песочнице тусуется, как JS, но, блядь, в разы шустрее — небо и земля!
  • Все современные браузеры его уже заглотили, проблем нет.
  • С JS через свои API общается, как родной.

Смотри, как это выглядит, на примере (C → Wasm):

// hello.c
int add(int a, int b) {
    return a + b;
}

Компилируем, мать его:

emcc hello.c -o hello.wasm -s WASM=1

А потом из JS вызываем, ебать:

WebAssembly.instantiateStreaming(fetch('hello.wasm'))
  .then(obj => {
    console.log(obj.instance.exports.add(2, 3)); // 5
  });

И где это, спрашивается, применяется? Да везде, где мозг сломать можно: тяжёлые вычисления, игры, CAD-системы — в общем, там, где обычный JS бы просто лёг и умер, блядь. Ёперный театр, вот что!