Obsah

WebAssembly (Wasm)

WebAssembly představuje čtvrtý pilíř webu (vedle HTML, CSS a JavaScriptu). Není to jazyk, který by lidé psali ručně, ale nízkoúrovňový binární formát, který prohlížeče dokáží zpracovat extrémní rychlostí. Je to otevřený standard vyvíjený pod hlavičkou W3C.

1. Proč WebAssembly vzniklo?

Tradiční webové aplikace spoléhají na JavaScript. Ten je sice výkonný díky JIT kompilaci v enginech jako V8, ale má své limity:

Wasm řeší tyto problémy tím, že nabízí binární kód, který je již optimalizován a připraven k okamžitému provedení.

2. Jak WebAssembly funguje?

Wasm neběží místo JavaScriptu, ale v úzké spolupráci s ním. Oba sdílejí stejné bezpečnostní „pískoviště“ (sandbox) prohlížeče.

Proces nasazení:

1. **Kompilace:** Programátor napíše kód v [[Rust]]u nebo [[C++]] a pomocí [[LLVM]] jej zkompiluje do souboru ''.wasm''.
2. **Načtení:** Prohlížeč stáhne binární soubor.
3. **Validace a JIT:** Prohlížeč bleskově ověří bezpečnost kódu a přeloží jej do strojového kódu daného procesoru ([[CPU|x86]] nebo [[CPU|ARM]]).
4. **Běh:** Kód běží v izolovaném paměťovém prostoru.

3. Klíčové vlastnosti

4. Architektura: Stack Machine

Wasm je navržen jako virtuální zásobníkový stroj (stack machine). Instrukce berou hodnoty ze zásobníku a výsledky na něj vrací. To zjednodušuje verifikaci kódu a umožňuje velmi rychlou kompilaci do strojového kódu.

Formáty:

(module
  (func $add (param $a i32) (param $b i32) (result i32)
    local.get $a
    local.get $b
    i32.add)
  (export "add" (func $add))
)

5. WebAssembly mimo prohlížeč (WASI)

Wasm se díky své izolaci a přenositelnosti začíná prosazovat i na serverech a v edge computingu. K tomu slouží rozhraní WASI (WebAssembly System Interface).

6. Slavné případy užití

Vztah k ostatním technologiím: Zatímco Qt poskytuje nástroje pro tvorbu UI, WebAssembly umožňuje toto UI a jeho logiku spustit kdekoli. Spojení Rust + WebAssembly je dnes považováno za „zlatý standard“ pro bezpečný a rychlý webový vývoj.

Související: Rust, C++, JavaScript, LLVM, frontend