First Questions

What is SOIL? SOIL is not yet-another-standard/platform/project—it is the aspiration that there be a Single Open Intermediate Language that supports all major languages on all major platforms. We believe WebAssembly is well positioned to become such an intermediate language, but there are many research challenges to making that happen, and we are working with the WebAssembly Community Group to understand those challenges and develop practical solutions. Thus SOIL is the abstract ideal that we hope to make real with a future extended version of WebAssembly.

What about the JVM and the CLI/CLR/.NET? Both of these (proprietary) systems were designed to primarily support a single language, and while many languages have managed to shoehorn into those designs, these solutions have been less than ideal—the fact that both of these systems needed extensions specifically to support dynamically typed languages are demonstrative of their failure to be language agnostic . WebAssembly operates at a much lower level, providing each language the freedom to specify its own optimized implementation without the need for built-in support.

What about LLVM? LLVM is primarly designed to be an intermediate representation for a compiler toolchain rather than an intermediate language for communicating across platforms. This difference in roles is apparent in, say, how LLVM uses undefined behavior in contrast to WebAssembly. LLVM uses undefined behavior to enable complex optimizations—an intra-platform compilation device. WebAssembly uses undefined behavior to enable simple operations to be implemented efficiently across many platforms—an inter-platform communication device.