Webfellesskapet jobber for tiden hardt for å finne løsninger som kan bringe ytelsen til webbaserte applikasjoner opp på et tilsvarende nivå som systemspesifikke applikasjoner. Digi.no har tidligere omtalt blant annet asm.js, en begrenset utgave av JavaScript som kan kompileres før (AOT – Ahead of Time) den kjøres, noe som skal gi betydelige ytelsesforbedringer, og Googles Portable Native Client (PNaCl), som ikke har blitt særlig utbredt.
Omstridt: Google lanserer Portable Native Client
WebAssembly
I går ble en helt ny tilnærming avduket. Den kalles for WebAssembly og har etter alt å dømme allerede fått ganske bred støtte hos de ulike nettleserleverandørene.
Målet er å gjøre WebAssembly til en W3C-standard, men foreløpig har man så vidt kommet forbi idéstadiet.
Microsoft Edge: Får støtte for lynrask JavaScript
Binært
Målet for WebAssembly-arbeidsgruppen er nå å definere en flyttbart binærformat som er optimalisert med tanke på både størrelse og lastetid, og som kan fungere som et kompileringsmål for weben.
Det binære formatet man har i tankene skal kunne dekodes mye raskere enn det JavaScript kan parses – mer enn 20 gangers forbedring har blitt demonstrert. Dette vil være spesielt merkbart på mobile enheter, hvor parsing av store JavaScript-applikasjoner kan ta flere titalls sekunder før appen kan kjøres.
Tanken er ikke at WebAssembly skal erstatte JavaScript i noen særlig grad, men være et supplement i form av for eksempel moduler som limes inn i webplattformen ved hjelp av JavaScript gjennom ES6 Module-grensesnittet.
Kommer i år: Tilpasser weben til virtuell virkelighet
Ikke bare C/C++
I første omgang fokuseres det på at C/C++-utviklere skal kunne kompilere sin kode til weben, men det målet er å støtte også andre språk, inkludert Rust, Go og C#.
Minimumsmålet for standarden er da også å tilby omtrent samme funksjonalitet som asm.js, for deretter å følge opp med mer funksjonalitet etter hver.
Gjør weben til en avansert spillplattform
Polyfill
Dette innebærer blant annet at det utviklet et effektivt polyfill-bibliotek som sørger for at WebAssembly-koden oversettes til JavaScript i klienten, noe som kreves for at WebAssembly skal kunne brukes med eksisterende nettlesere.
Dette vil derimot ikke være nødvendig så snart nettleserne får innebygd støtte for WebAssembly. Dette arbeidet er allerede i gang.
Fram til nå har arbeidet WebAssembly skjedd innenfor en lukket Github-konto. Brendan Eich, oppfinneren av JavaScript, skriver i et blogginnlegg at dette var nødvendig for at de store aktørene skulle kunne komme til enighet og å delta i samarbeidet som nå må gjøres.
Blant de som så langt har bidratt til arbeidet, er PNaCl- og V8-teamene til Google, asm.js- og Emscripten-spesialister hos Mozilla, nøkkelpersoner fra Microsoft og minst én Apple-medarbeider som er tilknyttet JavaScriptCore/WebKit-prosjektene.
Blogginnlegget til Eich er et godt utgangspunkt for å lese mer om WebAssembly.
Kaster gammel kode: Ingen plugin-støtte i Microsoft Edge