WASM FAQ

Abhishek Yadav

4 Jan 2020

What languages can be compiled to WASM ?

C, C++, Rust, Javascript

What about Python/Ruby/Java ?

Not yet

Its planned, but needs a GC implementation, which is in progress

Will WASM replace (kill) Javascript ?

Can WASM programs access the DOM ?

No

No access to any web apis directly

Is it faster than Javascript ? How fast ?

It is faster

  • The compilation step takes much lesser (compared to JIT in JS)
  • Uses better optimisations (like Emscripten) 

 

Its all going to run on the same browser engine, both JS and WASM. Well optimised JS can perform at par with WASM

Can I use it today ?

Yes

 

WASM support has been implemented by most major browsers including Edge (but not IE)

Works even on IOS Safari, Android Browser

 

WASM-MVP has been stable for a while

Who is using it ?

Some examples:

  • AutoCaD (ported)
  • Doom3 (ported
  • Gutenberg (Wordpress) (Rust)
  • squoosh.app (multiple)

Can it run outside the browser ?

Yes, since recently

What are some other use cases ?

  • Image editing
  • Games (ported)
  • Music application
  • Data processing

 

Anything CPU intensive -

https://webassembly.org/docs/use-cases/

 

Is it safe to run native code in the browser ?

Yes

Secure sandboxing has been one of the design principles for WASM

Memory management layer is designed from grounds up to support pointer based operations

More details in next session

Can we use multi-threading in WASM ?

Not yet

Pthread support work is in progress

What are the main constraints  ?

(What's the catch)

  • Web APIs are not directly available - a JS glue is always needed
  • Communication along this glue is only using ints and floats. JS objects cant be passed
  • Learning curve

Can we run a Python interpreter on web - as its written in C ?

Yes

It has been attempted using ASM.js

But its not very useful - because of the binary size. 

Will be a great when Python program compiles directly to WASM

Does it make sense to compile JS to WASM ?

Yes, for very large JS projects - where the parse time is a problem, especially on weaker devices

 

Otherwise, once loaded (and JITed), JS is fast enough 

Is it the same as asm.js ?

Very similar but not the same.
EmScripten is being reused

 

(More details in next session)

Will WASM replace (kill) Javascript ?

No

Not soon at least

 

  • The design is to keep it at par and interoperable with JS. Not as a replacement
  • Glue code will always be needed
  • JS -> WASM is an encouraged use case

Wasm FAQ

By Abhishek Yadav

Wasm FAQ

  • 871