WebAssembly (WASM) is an assembly format similar to Assembly language, which is a low-level programing language for computers. The original purpose of WASM was to have a compilation target to build more powerful web applications. The reason these applications are more powerful than classic web applications is because they are capable of running code from languages, such as C, C++, Rust, C#, and many others. In other words, programmers are able to develop in the language of their choice and write web applications that include the power of the libraries in those languages. Today, it’s even possible to compile WASM libraries that are usable by JavaScript, enabling web developers to consume those libraries while using classic web technology. And depending on adoption by software development platforms, developers are able to write WASM applications that run as desktop applications, mobile applications, and web applications.
WebAssembly System Interface (WASI)
WebAssembly System Interface (WASI) is a more recent addition that enables programmers to write server applications, such as Rest or gRPC Apis, or operating system services, that compile to WASM. This provides a wide variety of benefits. WASI applications are ultra-portable because they are runnable on any operating system that supports WASI. The start and stop times are imperceivable, which reduces costs when using cloud services and improves response times. WASI limits access to operating system resources, which makes it very secure. WASI allows components, or libraries, written in any language to be consumed by a WASI application via a common interface. And, if it’s not already in use, it may soon be used in IoT devices, databases, distributed computing platforms, artificial intelligence, robotics, and in many other technologies.