Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
State of WebAssembly
Search
Sendil Kumar N
February 19, 2020
Technology
0
33
State of WebAssembly
Sendil Kumar N
February 19, 2020
Tweet
Share
More Decks by Sendil Kumar N
See All by Sendil Kumar N
[Heapcon-2023] Building High Performance Web Applications
sendilkumarn
0
57
Building Reactive Microservices with Kotlin & running on Kubernetes
sendilkumarn
0
120
Building Reactive Microservices with JHipster & K8s
sendilkumarn
0
11
Designing High Performance React Applications
sendilkumarn
1
130
Batching, Suspense, and Server Components
sendilkumarn
0
33
DevNexus_Building_with__Zero_Trust_Architecture_Copy.pdf
sendilkumarn
0
39
Lessons Learnt with Visual Testing and Snapshots
sendilkumarn
0
99
Easy Microservices with K8s & Istio
sendilkumarn
0
81
KHipster - Kotlin Hipster
sendilkumarn
0
160
Other Decks in Technology
See All in Technology
ハイパフォーマンスな組織をつくるための開発生産性の考え方 / developer-productivity-high-performer-link-and-motivation
lmi
3
240
生成AIサービスPanorama AIご説明資料
sdt
0
300
エンジニア候補者向け資料2024.03.28.pdf
macloud
0
2.9k
Tohoku.Tech #1 「EC-CUBE/AWSの構築をChatGPTに相談してみました」by テンダ
jun2882
0
140
Autify Company Deck
autifyhq
1
30k
オブジェクトのおしゃべり大失敗 メッセージングアンチパターン集 / messaging anti-pattern collection
ytake
0
320
任意コード実行の原理
ffri
0
170
CI/CDがあたりまえの今の時代にAPIテスティングツールに求められていること / CI/CD Test Night #7
k1low
12
2.8k
検証からプロダクトへ: シームレスなLLM開発の ためのしくみ作り
nunukim
1
150
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
chie8842
3
500
OpenTelemetry実践 はじめの一歩
taxin
0
300
AMLD 2024 - Build Your Own GPT
donlelef
1
260
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Building Adaptive Systems
keathley
29
1.8k
Making Projects Easy
brettharned
106
5.4k
Faster Mobile Websites
deanohume
296
30k
Visualization
eitanlees
135
14k
YesSQL, Process and Tooling at Scale
rocio
160
13k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
A Philosophy of Restraint
colly
195
15k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
Building Applications with DynamoDB
mza
88
5.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
644
57k
Transcript
@sendilkumarn Hoi Nederland !!!
@sendilkumarn Languages are built for a purpose. Choose & Use
them wisely…
The state of WebAssembly Sendil Kumar N
@sendilkumarn Sendil Kumar
@sendilkumarn Hacking on WebAssembly
JavaScript is weird @sendilkumarn
[1, 2] + [3, 4] @sendilkumarn
1, 23, 4 @sendilkumarn [1, 2] + [3, 4]
1, 23, 4 @sendilkumarn [1, 2].toString() + [3, 4].toString() “1,2”
+ “3, 4”
JavaScript is weird* * - sometimes @sendilkumarn
@sendilkumarn JavaScript Execution
@sendilkumarn Load JavaScript
@sendilkumarn a.js AST 1001010010101101010 Execute Profiler Parse Interpret Compile 100101001010
Optimise 1010 GC
@sendilkumarn JavaScript Tuning
@sendilkumarn Css Tuning
JavaScript is awesome @sendilkumarn ~80% ~90% https://2019.stateofjs.com/opinions/
@sendilkumarn JavaScript is easy https://octoverse.github.com/ 6 years in row
@sendilkumarn https://2019.stateofjs.com/opinions/ ~59% ~40% JavaScript is evolving
So what is the problem? @sendilkumarn
@sendilkumarn Types Polymorphism Unpredictable Performance Runtime exceptions
@sendilkumarn Types 66% users interested to use TypeScript https://2019.stateofjs.com/javascript-flavors/
@sendilkumarn Predicatble Performance Types Unpredictable Performance Typed
WebAssembly @sendilkumarn
Yet Another Frontend framework?
@sendilkumarn 00 61 73 6D 01 00 00 00 Native
Code Binary JavaScript Javascript Engine Runtime
@sendilkumarn 00 61 73 6D 01 00 00 00 Native
Code Binary JavaScript Javascript Engine
WebAssembly is not a language @sendilkumarn
@sendilkumarn func add is called Stack get_local $lhs LHS RHS
get_local $rhs i32.add SUM Structured stack machine
@sendilkumarn 00 61 73 6D 01 00 00 00 Size
& Load time efficient
@sendilkumarn What WebAssembly provides?
@sendilkumarn Speed
@sendilkumarn Near Native perf. ~30% faster than JS
@sendilkumarn secure
@sendilkumarn Linear Memory Model
@sendilkumarn Shared Array Buffer
@sendilkumarn Typed
@sendilkumarn i32 i64 f32 f64 00 61 73 6D 01
00 00 00 WebAssembly Binary JavaScript Javascript Engine Binding JS file
@sendilkumarn Boundary Crossing
@sendilkumarn Not always faster
@sendilkumarn How WASM works?
@sendilkumarn WebAssembly Execution
@sendilkumarn Load WebAssembly
@sendilkumarn Decode Compile Execute 00 61 73 6D 00 61
73 6D 00 61 73 6D
@sendilkumarn PARSE COMPILE OPTIMISE EXECUTE GC JavaScript execution DECODE COMPILE
EXECUTE WebAssembly execution
@sendilkumarn PARSE COMPILE OPTIMISE EXECUTE GC JavaScript execution DECODE COMPILE
EXECUTE WebAssembly execution I am faster
@sendilkumarn PARSE COMPILE OPTIMISE EXECUTE GC JavaScript execution DECODE COMPILE
EXECUTE WebAssembly execution Optimised already
@sendilkumarn Streaming compilation
What languages can do wasm? @sendilkumarn
C/C++ @sendilkumarn
@sendilkumarn ./emcc -O3 helloworld.c
Why C/C++? @sendilkumarn Tons of options All batteries included Verbose
Rust @sendilkumarn
@sendilkumarn $ wasm-pack build $ cargo install wasm-pack
Why Rust? @sendilkumarn Inbuilt into the compiler All batteries included
Best tooling support Sometimes bigger binaries
AssemblyScript @sendilkumarn
@sendilkumarn $ asc helloworld.ts -b helloworld.wasm -O3 $ npm i
--save-dev assemblyscript
Why AssemblyScript? @sendilkumarn Closer to JavaScript community Good tooling support
/ options
Go @sendilkumarn
@sendilkumarn $ GOOS=js GOARCH=wasm go build -o out/main.wasm go/main.go
Why Go? @sendilkumarn Easy & Concise TinyGo is awesome Reflections
& Proxies everywhere
@sendilkumarn Future
@sendilkumarn Interface types
@sendilkumarn Single Instruction Multiple Data
@sendilkumarn ♻ Garbage Collection
@sendilkumarn WASI WebAssembly System Interface
JavaScript with WebAssembly together makes web even more awesome &
faster @sendilkumarn
@sendilkumarn Thanks… @sendilkumarn dev.to/sendilkumarn sendilkumarn.com/blog Questions…