The future of WebAssembly: Gradually unlocking the entire “skill tree”
WebAssembly was supported by significant browsers in 2017 and released the MVP version. While the WebAssembly community is committed to making WebAssembly backward compatible, the WebAssembly application now in development can still be run in future browsers, but that doesn’t mean the WebAssembly functionality is complete, and MVP is by no means the final version. Instead, WebAssembly will add many new features that will fundamentally disrupt the work that WebAssembly can do.
To eliminate the misunderstanding of WebAssembly, the WebAssembly community group has a very detailed explanation of the future development path of WebAssembly in the form of a “skill tree” developed by characters in RPG games. They said that they have fully mastered the first of these skills and will need to unlock the entire skill tree slowly.
WebAssembly meets four basic skill requirements during the MVP release phase: compilation, fast execution, compression, and direct memory allocation. People who use WebAssembly know that they don’t want to support only C and C++, but want to be able to compile many different languages into WebAssembly. Applications compiled with the WebAssembly compiler need to be able to execute quickly to meet your needs. To speed up the loading speed, WebAssembly also needs to have the ability to compress and reduce the waiting time of users. Also, WebAssembly needs to be different from JavaScript in memory mode, and can directly manage the memory used. With the consideration of security factors, WebAssembly adopts linear memory mode.
The community group said that the next goal of WebAssembly is to smoothly run those heavier applications, such as Photoshop, Gmail, and more. To ensure that such applications work well in the browser, they need to unlock a new batch of “skills”, including support for multithreading, SIMD (single instruction stream multiple streams), 64-bit addressing, streaming compilation (on download Compile the WebAssembly file at the same time), the layered compiler, the implicit HTTP cache, and a few other improvements.
Once the above features are in place, WebAssembly will move on to the next stage— interoperating with JavaScript, including quick calls between JS and WebAssembly, secure data exchange, ES module integration, toolchain integration, and backward compatibility.
Besides, they want to rewrite most of the JavaScript framework in WebAssembly and compile the static type compile-to-js language into WebAssembly. To achieve these two goals, WebAssembly also needs to support high-level language features, including garbage collection, exception handling, debugging, and Tail calls.
For more features and specific progress, check out the original blog.