The design goals of WebAssembly are the following:<p>Fast, safe, and portable semantics:<p>* Fast: executes with near native code performance, taking advantage of capabilities common to all contemporary hardware.<p>* Safe: code is validated and executes in a memory-safe [2], sandboxed environment preventing data corruption or security breaches.<p>* Well-defined: fully and precisely defines valid programs and their behavior in a way that is easy to reason about informally and formally.<p>* Hardware-independent: can be compiled on all modern architectures, desktop or mobile devices and embedded systems alike.<p>* Language-independent: does not privilege any particular language, programming model, or object model.<p>* Platform-independent: can be embedded in browsers, run as a stand-alone VM, or integrated in other environments.<p>* Open: programs can interoperate with their environment in a simple and universal manner.<p>Efficient and portable representation:<p>* Compact: has a binary format that is fast to transmit by being smaller than typical text or native code formats.<p>* Modular: programs can be split up in smaller parts that can be transmitted, cached, and consumed separately.<p>* Efficient: can be decoded, validated, and compiled in a fast single pass, equally with either just-in-time (JIT) or ahead-of-time (AOT) compilation.<p>* Streamable: allows decoding, validation, and compilation to begin as soon as possible, before all data has been seen.<p>* Parallelizable: allows decoding, validation, and compilation to be split into many independent parallel tasks.<p>* Portable: makes no architectural assumptions that are not broadly supported across modern hardware.<p>If webassembly is truly able to meet this goals, together with good debugging and tools, it will become the the universal way to represent computation across devices and platforms.<p>Really cool.