Webassembly kan blive webbets næste revolution og sætte Javascript på porten

Illustration: Bigstock/Iunewind
Bytekode til browsere er nu inkluderet i alle de fire store browsere. Det giver bedre hastighed, kompilering på forhånd, understøttelse af moduler og mulighed for nye sprog på første klasse.

I løbet af de seneste uger har webbet undergået en stille revolution i al ubemærkethed.

Apple og Microsoft har nemlig udsendt nye udgaver af browserne Safari og Edge, med understøttelse af Webassembly. Det fremgår af et indlæg på Firefox-firmaet Mozillas blog.

Dermed er alle de fire store browsere med på vognen, der kan give helt nye muligheder for webudviklere og webapplikationer.

Webassembly er en ny standard for bytekode og en tilhørende virtuel maskine, som kan afvikles lige godt i alle de fire store browsere. Udviklingsarbejdet blev igangsat i 2015 og byggede videre på ideerne i Asm.js.

Den teknologi var en delmængde af Javascript, som browseren var finjusteret til at afvikle med høj ydelse. Asm.js blev anvendt som et slags ‘Javascript-assembler,’ der gav mulighed for nemmere krydskompilering af andre sprog til brug i webapplikationer.

Webassembly går skridtet videre og implementerer en standard for bytekoder, som det kendes fra Javas JVM og .Net-miljøet.

Ydelse en størrelsesorden hurtigere

Det giver en lang række fordele. Ifølge Mozilla kan indlæsning og udførelse af kode ende med at være en størrelsesorden hurtigere, end dagens Javascript, der skrives som kildekode og sendes over nettet, for så at blive fortolket i browseren.

Indtil videre er det C og C++, der tilbydes, og Rust er på vej. Garbage collection ligger umiddelbart i Webassemblys fremtid og vil give mulighed for understøttelse af sprog som Java, C# og mange flere. Det betyder også, at Javascript kan få nogle skrappe konkurrenter, der har klaret sig godt i andre sammenhænge

Det er blandt andet spilmiljøet, der har bakket omkring de nye muligheder.

»Asm.js og Webassembly var ret oplagt for spil-industrien, fordi de havde kæmpe investeringer i programmer skrevet i C++, som de ikke havde lyst til at skrive en gang til for webbet,« forklarer Mozilla-udvikleren Luke Wagner, der i sin tid opfandt Asm.js.

»Nu ser vi, at folk bruger Webassembly til alle slags projekter. Så nu er der et ægte løfte om at det en dag bliver muligt at køre stort set alle programmer på webbet og få en ydelse, ligesom hvis det kørte lokalt på din pc.«

Standard på vej

Det er meningen at Webassembly skal blive en vaskeægte standard, og der er nedsat en såkaldt ‘Community Group’ under W3-konsortiet med det formål for øje.

Koden kompileres til bytekode-formatet 'Wasm.' Webassembly har også fået sit eget 'dekompiler'-sprog, der oversætter de numeriske bytekoder til noget, der er nemmere at læse og forstå. Formatet benytter såkaldte S-expressions, som det kendes fra sprog i Lisp-familien.

Hvis et program importerer en funktion med navnet imported_func fra et modul der hedder imports, og eksporterer en funktion exported_func, kan det se sådan ud i Webassembly text format:

(module
  (func $i (import "imports" "imported_func") (param i32))
  (func (export "exported_func")
    i32.const 42
    call $i
  )
)

Det er ideen, at dette er hvad der vises, hvis brugeren vælger 'vis kode' i en webapp, som bygger på Webassembly.

Eksemplet her stammer fra Mozilla.

Der er mere information om projektet på dets hjemmeside.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (1)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere