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

Post on 22-Jan-2018

35 views 1 download

Transcript of [FDD 2017] Rafał Brzoska - WebAssembly — przeglądarkowa rewolucja

Rafał Brzoska

WebAssembly

Przeglądarkowa rewolucja

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

AD 1995AD 1990

Dawno dawno temu…

AD 1997AD 2013

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

[]]NaN == NULL !! 264

GoogloixApploix

Mikrosoftix Mozillix

HA HA HA!

WebAssembly (wasm)

C/C++/Rust .wasm JS

WebAssembly (wasm)

to efektywny, szybki i uniwersalny

niskopoziomowy format

kompilacji dla platformy web

webassembly.org

Uniwersalny

caniuse.com/#feat=wasm (11.2017)

C, C++, Rust

.wasm

.wasm != asm.js

Szybki i efektywny

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

PARSE

COMPILE

OPTIMIZE

EXECUTE

GARBAGE

COLLECTION

DECODE

COMPILE

OPTIMIZE

EXECUTE

JS Performance WASM Performance

64bit integer support

JS 64bit (52bit value)

Niskopoziomowy

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

Bezpieczny

Używa środowiska JS VM

Zasady zarządzania pamięcią

WASM traps

Co nowego w WebAssembly?

Kompilacja z innych języków

(C#, TypeScript, …)

Bezpośredni dostęp do WEB Api

Garbage Collector

Obsługa wielu wątków

Czy to koniec JavaScriptu?

NIE

Po co ten WebAssembly

Gry

Image, Video processing

Skomplikowane obliczenia

CAD

…???

Jak uruchomić, jak zacząć?

Emscripten

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

WebAssembly JS API

Binaryen, LLVM

DEMO

AVE! ☺

Rafał Brzoska

WebAssemblyPrzeglądarkowa rewolucja

rbrzoska@future-processing.com

www.future-processing.pl