What is WebAssembly?
Let us start to analyse the term assembly. Regarding Wikipedia the term refers to the good old low-level programming language only one abstraction layer above binary machine-code. Usually one assembly code statement stands for one machine instruction. This gives an insight on how low-level and how close to the machine this language really is.
Programming that way may sound a bit laborious and more complex. It is basically really more laborious and complex, but no one have ever said that it have to be programmed in it directly. (There is also only very few people out there programming in assembly) Because it is basically the machine code of the web, it is possible to code in other languages and compile this code to WebAssembly. Now we have a powerful possibility to write interactive client-side code in any other language like C or C++. The compiler has the ability to optimize effectively and give the compiled files a much smaller file size and a better execution performance. On GitHub a list on which languages are currently supported for compiling to WebAssembly is available in repository.
New application areas with WebAssembly
With optimized code the browser is now able to compute complex and high-performance tasks. This elevates browser gaming to a new sphere and also enables porting big software suites to the web. A very good example is the added WebAssembly-support for the UnrealEngine. In the following video you can see a presentation of the Unreal Engine 4 executed inside the browser. Basically a top-notch gaming engine executed without any installation. On top of that it is executed in a piece of software that is more or less installed on every computer and smartphone on our planet.
Another example would be the porting of the 30-year old AutoCAD code base to the web. It is possible to port an old C++ code base to the web. Because of that it is possible to benefit from the web’s advantages like better a completely new customer target market or better CI/CD. (continuous integration / continuous delivery) If you want to hear more about this porting project you can watch the talk from one of the developers.
Other possible use cases for WebAssembly are available in the following link.
There will be a lot of new possibilities with this new language. From gaming to computation heavy applications to porting desktop software to the web. All the discussed approaches are still a bit in its infancy, but it is already well-received and supported by a lot of projects out there.