Is there design rationale why EOS chose to go along with WASM virtual machine? Are the pros and cons discussed here? What other alternatives there would have been, besides EVM? How much WASM had to be modified for metered usage?
Yes, Dan made a post about their decision to choose WASM--it boils down to performance, cross-compatibility, wide industrial support, and flexibility. Excerpt from post:
Web Assembly is an emerging industry standard backed by Microsoft, Google, and Apple. The goal of this standard is to make it possible to run untrusted high-performance code in your browser. Web Assembly is a game changer, it will enable high performance web applications such as video and image editing and games.
WebAssembly provides a universal compile target that enables applications to be developed in any language. Currently there are compilers for C, C++, and Rust. There is even work going on to compile Solidity to Web Assembly.
Other platforms also provided reasoning for preferring WASM.
As EOS chooses a web assembly, the advantages that a web assembly can provide are all there.
The benefits of web assembly are outlined below. https://webassembly.org/
The two most important reasons why eos chose a web assembly is that 'performance' and 'high-level language support'.
As EOS chooses a web assembly, it is possible to write a smart contract in that language if it can be compiled into a web assembly. For this reason, a smart contract written in c++ now, but in the future it can be written in various languages.