Instead, projects are mostly using "light" transpilers built to have clean mappings to JS semantics, like TypeScript, where the original source can be recovered and traced by the browser as long as the transpiler generates a source-map.
WASM really won't work with the "source map" paradigm, and so a move to a web where most development uses languages that compile to WASM, is a move to a more opaque, less learnable web. (And also one that browser extensions have far less of an ability to intercede in.)
(written by a non-go-expert)
Most of the times, due to the strong typing, it is faster. However, there's a cost involved in compiling, invoking and passing data in and out of a wasm module. If the overhead cost is greater than the raw performance gain, there's no discernable difference
[1] someone should benchmark this.
Which is also a reason why a replacement is being done as part of Project Panama, initially advocated by Charles Nutter due to the JRuby project issues.
http://openjdk.java.net/jeps/191
In alternative, if you have the source code available there is a way not to any transitions.
Java now has GraalVM and .NET had C++/CLI (nee Managed C++) since the beginning.
Web Assembly is gimped because it needs to be compatible with existing JS runtimes - when they add threading support you will no longer be able to run a WASM shim in JS but at the same time WASM will become a lot more general purpose.
Multithreaded WASM isn't here either.
I think WASM will face the same security considerations.
https://github.com/WebAssembly/threads/blob/master/proposals...
There might be a chance to simplify if you're already using Go on the server and you remove a lot of other stuff.
In the process it will be the revenge of plugins.