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.
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):
- 64-bit adress space
- Multiple memories
- Garbage collection
- Typed references
- Tail calls
- Exception handling
- Relaxed vector instructions
- Deterministic profile
- Custom annotation syntax
- JS string builtins
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.