The rise of non-JavaScript frameworks using WebAssembly
Boyan Mihaylov @boyanio boyan.io
frameworks using WebAssembly Boyan Mihaylov @boyanio boyan.io - - PowerPoint PPT Presentation
The rise of non-JavaScript frameworks using WebAssembly Boyan Mihaylov @boyanio boyan.io WebAssembly ( WASM ) is compiler target for programs on the Web @boyanio @boyanio https://vimeo.com/272924131 The Web of JavaScript frameworks
Boyan Mihaylov @boyanio boyan.io
@boyanio
@boyanio https://vimeo.com/272924131
@boyanio
@boyanio
.html HTML page compile JavaScript Framework .js Your code .js / .ts .js Compiled app fetch fetch
@boyanio
@boyanio
@boyanio
.html HTML page compile .js JavaScript glue code Framework’s code .cpp Your code .cpp .wasm Compiled app initialize fetch
@boyanio https://www.tynwiz.com
@boyanio
extern void createElement(void); int main(void) { createElement(); createElement(); … return 0; } const imports = { createElement: () => { document.createElement(‘div’); } }; WebAssembly.instantiate(…, imports);
@boyanio https://blog.benj.me/2018/07/04/mozilla-2018-faster-calls-and-anyref/
Firefox Firefox 60+
@boyanio
@boyanio
@boyanio
@boyanio
https://github.com/vuejs/vue/issues/8193 https://github.com/glimmerjs/glimmer-vm/pull/752
@boyanio
@boyanio
https://boyan.io/angular-wasm/
@boyanio
@boyanio
https://blazor.net
@boyanio
.NET Framework CLR Native compile load IL metadata JIT compilation to native code MyApp.dll Source code
@boyanio
mono.wasm Native compile load IL metadata execute compiled by browser’s VM Browser Source code MyApp.dll Blazor.dll netstandard
@boyanio
https://boyan.io/react-blazor/
@boyanio
Blazor React
@boyanio
Blazor (Root.razor) React (Root.jsx) … render() { return ( <div> <h1>React chat</h1> <NewChatMessage /> <Chat … /> </div> ); } } @page “/” <div> <h1>Blazor chat</h1> <NewChatMessage /> <Chat … /> </div>
@boyanio https://devblogs.microsoft.com/aspnet/blazor-now-in-official-preview/
@boyanio
https://github.com/bketelsen/wasmplay
@boyanio
https://github.com/DenisKolodin/yew
@boyanio
https://boyan.io/wasm-wheel/
Boyan Mihaylov / @boyanio / boyan.io