Blogg
Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på LinkedIn
Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på LinkedIn
WebAssembly - WASM - är en ny teknologi för att köra applikationer skrivna andra språk än Javascript direkt i webbrowsern. Det är designat för ge “near native” prestanda och korta nedladdningstider. Till att börja med finns stöd för C & C++, men flera andra språk är på gång: Kotlin, Rust, Go, Haskel m.fl.
Användningsområdet är inte bara att kunna köra C/C++-applikationer i browsern. Även Javascript-utvecklare kan genom direkta anropsmöjligheter dra nytta av det stora utbud av C/C++-bibliotek som finns tillgängligt.
Några av de egenskaper som gör WebAssembly intressant är:
“The desktop is dying, and the JDK is dying with it” - Brian Sletten, ArchConf 2017
I grunden bygger WebAssembly på LLVM - en kompilatorinfrastruktur som används för ett stort antal språk, C, C++, Python, Swift för att bara nämna några. WebAssembly kompilerar LLVM IR (Intermediate Representation) till ett binärt format som kan köras i browserns Javascript-motor. Användningen av LLVM ger en robust utgångspunkt och bidrar till en hög optimeringsgrad på genererad kod.
Vad är det då som gör att WebAssembly ser lovande ut, trots att många liknande ansatser har (mer eller mindre) misslyckats förut? Vi har ju sett många försök segla förbi under årens lopp - Java Applets, Flash, ActiveX, Silverlight… - listan kan göras lång.
Det är bara tiden som kan utvisa om WebAssembly blir den succé som många tror, men det finns en del som talar för att så blir fallet:
Några exempel på WebAssembly-demos som du kan köra i browsern redan idag hittar du nedan.
https://msorvig.github.io/qt-webassembly-examples/widgets_wiggly/widgets_wiggly.html
http://webassembly.org/demo/Tanks/
http://aws-website-webassemblyskeletalanimation-ffaza.s3-website-us-east-1.amazonaws.com
https://www.funkykarts.rocks/demo.html
Några övriga referenser
http://webassembly.org/roadmap/
https://wasdk.github.io/WasmFiddle/