More generally, WASM is promoted as universal bytecode virtual machine, so they want to make it "run everything everywhere".
But i'm not so sure about personal devices. It would be very hard to beat Javascript code on the Web in general. So i dont know about the general purpose target future in that case, i think it will flop, except as a fancy accelerator or to virtualize things that was once outside the web.
WASM does not provide a garbage collector, as another example; this probably makes non-garbage-collected languages behave more predictably.
I don’t think it is anywhere close to the truth. They are very well suited, as the JIT compiler can specialize dynamic types (and optionally deoptimize them when the type changes). There are also clojure, jruby, a python implementation, and java can also be written with significant use of reflection.
And then there is GraalVM built on top of the JVM that has truffleruby, the fastest Ruby implementation, graaljs which has very comparable performance to v8 with comparatively much less man hours , etc, all very dynamic languages.
All of the examples you‘ve mentioned don‘t seem like trivial ports at least from an outsider‘s point of view.
The JVM itself has definitely adapted to these use cases, but it wasn‘t designed with them in mind.
If you think the jvm is bad for dynamic languages, wait'll you hear about wasm!
In fact, I would expect the jvm to work much better for dynamic languages; not only does it already have a[1] gc, it has inline caching built in, which is frequently crucial for getting good performance in dynamic languages. (Though granted, as the niblings hint at, this requires type inference without invokedynamic.)
1. Arguably 'the'. I don't know of a platform with a better one.
JVM wasn't the first nor the only bytecode format around.
The early ones go back to 1961, and there are plenty of multiple language ones.
I highly doubt that it's possible to beat the performance of JavaScriptCode (in JIT mode) with any WASM-based implementation.