WebAssembly 3.0 er klar, etter åtte års arbeid

Nye funksjoner i Wasm 3.0 gjør det enklere å kompilere til Webassembly fra enda flere språk enn før.

WebAssembly 3.0 har en masse nytt som forbedrer støtten for å kompilere fra høynivåspråk.
Publisert

Versjon 3.0 av WebAssembly (Wasm) er endelig ferdig – tre år etter at 2.0 kom.

– Dette er en vesentlig større oppdatering: Vi er endelig i mål med mange nye funksjoner, noen av dem har det vært jobbet med i seks til åtte år, skriver utvikleren Andreas Rossberg i et blogginnlegg på webassembly.org.

Blant de største nyhetene denne gangen er ny funksjonalitet som gir bedre støtte for kompilering fra høynivåspråk som Java, Kotlin, Scala og Dart.

Masse nytt

Dette er de viktigste nyhetene i Wasm 3.0 (klikk på lenkene for å lese flere detaljer):

💡 WebAssembly

  • WebAssembly (Wasm) er et binært instruksjonsformat som kan kjøre i moderne nettlesere. Det er et lavnivåspråk som ligner på assemblerkode, og kjører med nesten "native ytelse". 
  • Wasm er laget for å kjøre side om side med JavaScript. Ved å bruke WebAssemblys JavaScript-API-er kan du laste inn Wasm-moduler i en JavaScript-app og dele funksjonalitet mellom de to.
  • Du skriver vanligvis ikke Wasm-kode direkte, men koder i for eksempel Rust eller C++, og setter Wasm som kompileringsmål.

 Les mer om Wasm på MDN og webassembly.org

Garbage Collection

Ett eksempel på noe som bidrar til bedre støtte for høynivåspråk, er den nye Garbage Collection-utvidelsen:

Kort fortalt kan en kompilator som har wasm som kompileringsmål deklarere minneoppsettet for datastrukturene (for eksempel structs og arrays) som brukes i kjøretidsmiljøet, og så vil dette deretter håndteres av wasm. 

I tillegg har Wasm 3.0 fått støtte for unntakshåndtering (exception handling – håndtering av feilsituasjoner). Tidligere var det ingen effektiv måte å kompilere unntakshåndtering til wasm, så kompilatorer måtte typisk håndtere dette ved å "rømme" til vertsspråket (for eksempel JavaScript), som så måtte håndtere feilene. Dette var ikke effektivt.

– Med disse nye funksjonene, har Wasm mye bedre støtte for kompilering fra høynivåspråk, skriver Rossberg.

Wasm 3.0 er allerede tilgjengelig i de fleste store nettlesere, og støtten i frittstående motorer som Wasmtime er også snart ferdigstilt.

Støttes allerede i nettlesere

Wasm brukes typisk i tilfeller der man trenger ekstra ytelse. For eksempel er både applikasjoner som Figma og web-versjonen av Photoshop laget med Webassembly. 

Med Wasm 3.0 blir altså Wasm litt mer tilgjengelig for den gjengse utvikler, med bedre støtte i enda flere høynivåspråk – som for eksempel Kotlin og Java.

– Wasm 3.0 er allerede tilgjengelig i de fleste store nettlesere, og støtten i frittstående motorer som Wasmtime er også snart ferdigstilt, skriver Rossberg.

Powered by Labrador CMS