Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WASM

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 WASM

WebAssebmly for beginners

Avatar for Polina Gurtovaya

Polina Gurtovaya

January 22, 2020
Tweet

More Decks by Polina Gurtovaya

Other Decks in Programming

Transcript

  1. 3

  2. И зачем тогда изобретать велосипед? 4 Потому что JS слишком

    долго парсить. Говорят что WASM в 20 раз быстрее Кое-что, связанное со скоростью, но об этом позже
  3. На самом деле все примерно так 7 "emcc -O3 -s

    WASM=1 -s ENVIRONMENT=\"web\" -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -s MODULARIZE=1 -s ‘EXPORT_NAME=\”blah-blah\"' -I src/wasm/ libwebp src/wasm/libwebp/src/ {dec,dsp,demux,enc,mux,utils}/*.c -I src/wasm/zlib src/ wasm/zlib/inf*.c src/wasm/zlib/ {zutil.c,adler32.c,crc32.c} -o src/wasm/encoders.js src/ wasm/encoders.c"
  4. У WASM есть спека (даже не одна) И там ни

    слова о web :) 15 A WebAssembly implementation will typically be embedded into a host environment. An embedder implements the connection between such a host environment and the WebAssembly semantics.
  5. Выглядит он вот так: 18 (module (func $i (import "imports"

    "logger") (param i32)) (memory (import "imports" "importedMemory") 1) (func (export "exportedFunc") i32.const 42 call $i) (func (export "add") (param i32 i32) (result i32) local.get 0 local.get 1 i32.add) (data (i32.const 0) "Fifty"))
  6. Как работает JS в браузере на примере V8 22 V8

    это движок, написаный на C++. Он используется с Chromium и NodeJS. V8 заставляет код работать. Раньше это был только JS код. Теперь это JS и WASM
  7. 23

  8. 25

  9. В общем: 26 Как быстро произойдет “interactive” предсказать сложно Скорость

    *не* определяется размером бандла (хотя это афектит) На мобилках все может быть в 5 раз медленнее
  10. 27

  11. Статус WASM: MVP 30 Пока лучше всего поддерживается компиляция из

    С/C++ Работает в V8 примерно с февраля 2017 LLVM based-projects Все достаточно “сыро”