24-02-2020

W3C brengt compilatie naar het web met WebAssembly Interface

Deel dit bericht

Het World Wide Web Consortium (W3C) heeft aangekondigd dat de WebAssembly Core Specification nu een officiële webstandaard is en een krachtige nieuwe taal voor het web lanceert. WebAssembly is een veilig, portable, low-level formaat dat is ontworpen voor efficiënte uitvoering en compacte weergave van code op moderne processors, inclusief in een webbrowser.

WebAssembly (Wasm) is in de kern een virtuele instructieset-architectuur die krachtige toepassingen op het web mogelijk maakt en in veel andere omgevingen kan worden gebruikt. Er zijn meerdere implementaties van WebAssembly, waaronder browsers en zelfstandige systemen. WebAssembly kan worden gebruikt voor toepassingen zoals video- en audiocodecs, grafische afbeeldingen en 3D, multimedia en games, cryptografische berekeningen of draagbare taalimplementaties.
In 2017 bracht Mozilla een WebAssembly preview uit als minimum viable product, waarna in datzelfde jaar alle belangrijke browsers WebAssembly besloten te ondersteunen. WebAssembly sluit zich aan bij de vele W3C-normen die een Open Web Platform definiëren voor applicatie-ontwikkeling om ontwikkelaars in staat te stellen krachtige, interactieve ervaringen op te bouwen die op elk apparaat beschikbaar zijn. Recent heeft het World Wide Web Consortium drie nieuwe specificaties vrijgegeven: WebAssembly Core Specification; WebAssembly Web API; WebAssembly JavaScript Interface.

Verbeterde webprestaties
WebAssembly verbetert webprestaties en stroomverbruik omdat het als virtuele machine en uitvoeringsomgeving geladen pagina's kan uitvoeren als native gecompileerde code. WebAssembly maakt bijna-native prestaties mogelijk, geoptimaliseerde laadtijd en misschien nog belangrijker, een compilatiedoel voor bestaande codebases. WebAssembly is een low-level bytecode format dat net als JavaScript in de browser wordt uitgevoerd. Het is ontworpen om sneller te kunnen parsen dan JavaScript, en sneller om uit te voeren, waardoor het een geschikt compilatiedoel is voor nieuwe en bestaande talen. Programmeurs kunnen dan in hun eigen bekende talen zoals C, C++, C#, Rust blijven werken. Op GitHub is een lijst te vinden van alle programmeertalen die direct zijn te compileren of door een Virtual Machine worden ondersteund in WebAssembly.

Ondanks een klein aantal native typen, is een groot deel van de prestatieverbetering ten opzichte van JavaScript het gevolg van het gebruik van consistent typen. WebAssembly maakt gebruik van tientallen jaren optimalisatie voor gecompileerde talen en de bytecode is geoptimaliseerd voor compactheid en streaming. Een webpagina kan worden uitgevoerd terwijl de rest van de code wordt gedownload. Netwerk- en API-toegang vindt plaats via bijbehorende JavaScript-bibliotheken. Het beveiligingsmodel is identiek aan dat van JavaScript.

Toekomstige versies in de maak
De WebAssembly Working Group en de bijbehorende Community Group, waar het verzamelen van vereisten en taalontwikkeling plaatsvindt, werken al aan een reeks functies voor toekomstige versies van de standaard, waaronder Threading, Fixed-width SIMD, Reference types, Tail calls en ECMAScript module integratie. Er zijn veel andere projecten op langere termijn, waaronder een aantal gericht op het verbeteren van de bruikbaarheid en beschikbaarheid van WebAssembly. Bijvoorbeeld garbage collection, debugging interfaces en WebAssembly System Interface (WASI), een set modules voor systeemfunctionaliteit op laag niveau zoals bestands- en netwerktoegang.

Meer informatie: WebAssembly Working Group

Partners