[fdd 2017] rafał brzoska - webassembly — przeglądarkowa rewolucja

44
Rafał Brzoska WebAssembly Przeglądarkowa rewolucja WebAssembly – przeglądarkowa rewolucja

Upload: future-processing

Post on 22-Jan-2018

34 views

Category:

Software


1 download

TRANSCRIPT

Page 1: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Rafał Brzoska

WebAssembly

Przeglądarkowa rewolucja

WebAssembly – przeglądarkowa rewolucja

Page 2: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Rafał Brzoska

AGENDA

Krótka historia (ewolucji) JS

Czym jest WebAssembly

Jak działa WebAssembly

No i co teraz? ☺

WebAssembly – przeglądarkowa rewolucja

Page 3: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

AD 1995AD 1990

Dawno dawno temu…

Page 4: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

AD 1997AD 2013

Page 5: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 6: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 7: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

(![]+[])[+!!

[]]NaN == NULL !! 264

Page 8: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

GoogloixApploix

Mikrosoftix Mozillix

Page 9: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

HA HA HA!

Page 10: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 11: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 12: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

WebAssembly (wasm)

C/C++/Rust .wasm JS

Page 13: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

WebAssembly (wasm)

to efektywny, szybki i uniwersalny

niskopoziomowy format

kompilacji dla platformy web

webassembly.org

Page 14: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Uniwersalny

Page 15: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 16: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

caniuse.com/#feat=wasm (11.2017)

Page 17: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

C, C++, Rust

.wasm

Page 18: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 19: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

.wasm != asm.js

Page 20: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Szybki i efektywny

Page 21: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

function add(a, b) {

return a + b;

}

console.log(add(1,2)) 3

console.log(add(”a”,”b”)) „ab”

console.log(add(1,”b”))

console.log(add(1,+!![]))

„1b”

2

Page 22: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

PARSE

COMPILE

OPTIMIZE

EXECUTE

GARBAGE

COLLECTION

DECODE

COMPILE

OPTIMIZE

EXECUTE

JS Performance WASM Performance

Page 23: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

64bit integer support

JS 64bit (52bit value)

Page 24: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Niskopoziomowy

Page 25: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

C

int factorial(int n)

{

if (n == 0)

return 1;

else

return n *

factorial(n-1);

}

WASM binary

20 00

50

04 7E

42 01

05

20 00

20 00

42 01

7D

10 00

7E

0B

Page 26: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Bezpieczny

Page 27: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Używa środowiska JS VM

Zasady zarządzania pamięcią

WASM traps

Page 28: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Co nowego w WebAssembly?

Page 29: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Kompilacja z innych języków

(C#, TypeScript, …)

Bezpośredni dostęp do WEB Api

Garbage Collector

Obsługa wielu wątków

Page 30: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Czy to koniec JavaScriptu?

Page 31: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

NIE

Page 32: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Po co ten WebAssembly

Page 33: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Gry

Image, Video processing

Skomplikowane obliczenia

CAD

…???

Page 34: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Jak uruchomić, jak zacząć?

Page 35: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Emscripten

http://webassembly.org/getting-started/developers-guide/

WebAssembly JS API

Binaryen, LLVM

Page 36: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

DEMO

Page 37: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 38: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 39: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 40: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 41: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 42: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja
Page 43: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

AVE! ☺

Page 44: [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Rafał Brzoska

WebAssemblyPrzeglądarkowa rewolucja

[email protected]

www.future-processing.pl