WebAssembly

WebAssembly (Wasm, WA) is a web standard that defines a binary format and a corresponding assembly-like text format for executable code in Web pages. It is meant to enable executing code nearly as fast as running native machine code. It was envisioned to complement JavaScript to speed up performance-critical parts of web applications and later on to enable web development in languages other than JavaScript. WebAssembly does not attempt to replace JavaScript, but to complement it. It is developed at the World Wide Web Consortium (W3C) with engineers from Mozilla, Microsoft, Google and Apple. It is executed in a sandbox in the web browser after a formal verification step. Programs can be compiled from high-level languages into Wasm modules and loaded as libraries from within JavaScript applets.

Interviews

Your talk is about porting AutoCAD on the desktop to a browser with WebAssembly. How do you plan to go about the talk?

I plan to start my talk with how we arrived at our current technology stack (which is Emscripten and WebAssembly Binaryen) by talking about our journey from trying flash, JavaScript, asm.js, and, finally, getting to WebAssembly. After that, I would like to highlight some of the peculiarities of the large and constantly changing AutoCAD codebase that we had to deal with as well.

Can you give me some example of some of the challenges with the different paradigms when dealing with the web vs desktop?

For example, you have synchronous vs asynchronous programming issues on the web. How you handle a blocking call on your desktop code base is very different than on the web. Another is shared memory between threads. Synchronous writes is supported on the desktop because you have shared memory that allows you to share data but you don’t have that on the web. There are also things like performance hits due to underlying memory accessors and lack of support for exceptions.