It seems to be easier to write a compiler that supports multiple languages than a VM.
The vast majority of VMs target a single language. Sometimes PLs are written to target an existing VM (e.g. Clojure), but it's rare to take an existing PL and build a production implementation.
Related Posts
I've had a new Linux laptop for several weeks and only just realised that I didn't have `man` installed!
Google is my default the vast majority of the time, and this seems to confirm it.
It's odd how lazy evaluation is generally seen as a niche design choice, yet the vast majority of languages treat `foo() || bar()` as short-circuiting.
TIL Tcl has a notion of 'safe interpreters', a mode where you can run untrusted code in a sandbox: https://www.tcl.tk/man/tcl8.4/TclCmd/safe.htm
Not many programming languages have this, but it's way safer to include in the implementation than try to build as a userland library.