Slide 1

Slide 1 text

Avoiding spelling mistakes: Avoiding spelling mistakes: a WebAssembly tale a WebAssembly tale Riccardo Magliocchetti Riccardo Magliocchetti

Slide 2

Slide 2 text

whoami whoami So ware developer @ Maieu cal Labs Consultant Torino Hacknight @tohacknight

Slide 3

Slide 3 text

Avoiding spelling mistakes: Avoiding spelling mistakes: a WebAssembly tale a WebAssembly tale Agenda: WebAssembly Rust A real-world use case

Slide 4

Slide 4 text

WEBASSEMBLY WEBASSEMBLY

Slide 5

Slide 5 text

WebAssembly is a portable binary format, developed as compila on target. webassembly.org

Slide 6

Slide 6 text

WebAssembly is a portable binary format, developed as compila on target.

Slide 7

Slide 7 text

WebAssembly is a portable binary format, developed as compila on target.

Slide 8

Slide 8 text

Working but still WIP Working but still WIP JS BigInt and 64 bit WASM Integer integra on, no Webkit SIMD, not enabled by default Threads and atomic opera ons, no Webkit , s ll experimental WASI Source: webassembly.org/roadmap

Slide 9

Slide 9 text

Main features Main features Fast Safe Compute only

Slide 10

Slide 10 text

WASM targets WASM targets Browsers: , JS Run me: , WASM Run me: , 93% users WebAssembly MDN docs Node.js Deno wasm me wasmer

Slide 11

Slide 11 text

Programming Languages Programming Languages C/C++: : C#: Other Emscripten Rust Working Group AssemblyScript Blazor

Slide 12

Slide 12 text

Why WebAssembly? Why WebAssembly? Applica ons por ng to the Web, e.g. Reuse code in JavaScript One run me for many languages Pyodide

Slide 13

Slide 13 text

RUST RUST

Slide 14

Slide 14 text

Rust Rust Fast Reliable Rich ecosystem

Slide 15

Slide 15 text

Uses of Rust Uses of Rust Systems programming Embedded Good integra ons with other languages: C, Python, WebAssembly :) cargo-c PyO3

Slide 16

Slide 16 text

How to learn Rust? How to learn Rust? The book Italian meetups

Slide 17

Slide 17 text

A use case A use case Add spell checking to a web applica on using SymSpell

Slide 18

Slide 18 text

Problems Problems CPU intensive No available JS implementa on

Slide 19

Slide 19 text

Solution Solution Por ng the to WebAssembly! Rust implementa on

Slide 20

Slide 20 text

Our contributions Our contributions Op mized WebAssembly por ng More features Tech details: Nicola Mar no at Rustlab 2020 talk

Slide 21

Slide 21 text

That's all folks! Any question? That's all folks! Any question? github.com/xrmx speakerdeck.com/xrmx @rmistaken